niwho

En attendant Godot

gevent,并发网络访问
BeautifulSoup,网页解析
re,关键字匹配、网站根路径获取
requests,http访问、代理支持

阅读全文 »

###安装配置

  1. easy_install numpy
  2. 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")
0%