python实现的工具
#工具汇总
###安装配置
- easy_install numpy
- sourceforge上下载 opencv,解压,将cv2.pyd复制到python 的sitepackage目录,然后(很容易疏忽)把opencv_ffmpeg2410.dll复制到系统path路径包含的任意目录,注意这里的文件名加上了opencv版本好(2.4.10)否则打开任意的视频文件都有问题(False)
###使用
##取帧
:::python linenos='table' linenums=True
cap = cv2.VideoCapture(r'D:\PFS_Data\2014-11-21 11-49-43@jobKey-34.avi')
print cap.isOpened()
data = cap.read()
#save to disk
cv2.imwrite(r'E:\hello.jpg',data[1])
###ed2k 协议
登录
msg_log = struct.pack(‘<BIB16sIHIBHBIBHBI’,0xe3,43,0x01,’1234567897654321’,0,5662,2,3,1,0x11,0x3c,3,1,0xfb,3<<24|2<<17|3<<10|1<<7)
0xe3 1byte protocol
43 4字节 数据长度 不包括次字段之前及其自身的长度(总共5个字节)
0x01 1字节 消息类型 这个表示 登录
‘1234567897654321’ 16字节的hash 意义不明
0 4字节 用户id 成功登录会返回一个id值
5662 2字节的tcp端口值 服务器连接客户端(内网机器没有端口映射无法访问,导致分配一个 lowid ,区别highid)
2 4字节的tag count(这里后面有2个 int型的tag)
0x3c 所谓的edonkeyversion 规定值貌似
3<<24|2<<17|3<<10|1<<7 这里必须设置此项表示客户端版本,否则会被拒绝连接服务器(ERROR : Your edonkey client is too old, please update it,后续的idchange消息等不会收到)
(to be continued…)
###服务器文件搜索
###kad网络搜索
#Makefile Template
###使用:直接放到工程目录下, 根据工程添加 可能修改INC LIBS 甚至编译选项 C*FLAGS ,然后make即可
###MD5
:::python linenos='table' linenums=True
import hashlib
import os
#简单的测试一个字符串的MD5值
src = 'teststring'
print (hashlib.md5(src).hexdigest().upper())
#hexdigest() 为十六进制值,digest()为二进制值
#使用update
m0=hashlib.md5()
m0.update(src)
print m0.hexdigest().upper()
#一个小文件的MD5值
filename = 'c:\\boot.ini'
f = file(filename,'rb')
m1 = hashlib.md5()
m1.update(f.read(8096))
print m1.hexdigest().upper()
f.close()
#大文件的MD5值
def GetFileMd5(filename):
if not os.path.isfile(filename):
return
myhash = hashlib.md5()
f = file(filename,'rb')
while True:
b = f.read(8096)
if not b :
break
myhash.update(b)
f.close()
return myhash.hexdigest().upper()
print GetFileMd5("c:\\a.rar")