最近下载个电影找不到字幕,最后却用迅雷看看匹配上了。再接着试了一下,发现迅雷的字幕库还很全的。由于我平时很少用迅雷看看这个视频软件,虽然迅雷看看可以保存字幕,但用起来也还是非常不方便,便想找一个有没有独立的工具可以下载迅雷字幕库的字幕。
在寻找的过程中,发现不但有这种工具thunder-subtitle,就连算法都有了,其基本过程如下:
首先,取视频的一部分内容求sha哈希值,具体取内容的算法为:
- 如果文件小于60k(0x000),其文件所有内容
- 如果文件大于60k,取如下三部分的内容
- 开始20k(0x5000)内容
- 中间20k(0x5000)内容
- 文件末尾20k(0x5000)内容
然后,使用get方法访问http://sub.xmp.sandai.net:8000/subxl/{cid}.json。其中cid为视频文件的cid值。
这样就能得到所有字幕信息,是一个json格式的数据,解析改数据后就可以下载字幕了。
也就是说,迅雷的字幕库是和视频内容关联的,是不能用视频文件名搜索的,这个和之前射手网的字幕api是非常类似的(其求hash的算法也非常类似)。
由于原项目是python些的,没有gui界面,使用起来有所不便,便趁国庆有点时间用C#重写了一下,用wpf写了一个简易的界面,点击下载。项目源码也发布在了github上ThunderSRT,算法主要如上面描述所示,比较简单,需要的朋友可以直接获取。