首页 / 教程
磁力链转bt种子怎么转?python在线代码解析方法介绍
2018-09-14 00:12:00
BT种子文件相对磁力链来说存储不方便,而且在网站上存放BT文件容易引起版权纠纷,而磁力链相对来说则风险小一些。而且很多论坛或者网站限制了文件上传的类型,分享一个BT种子还需要改文件后缀或者压缩一次,其他人需要下载时候还要额外多一步下载种子的操作。
所以将BT种子转换为占用空间更小,分享更方便的磁力链还是有挺大好处的。
首先一个方案是使用bencode这个插件,通过pip方式安装或者自行下载源文件https://pypi.python.org/pypi/bencode/1.0通过python setup.py install方式安装均可。
相应的将BT种子转换为磁力链代码为:
?
123 45678910111213 | importbencode, hashlib, base64, urllib torrent=open('ubuntu-12.04.2-server-amd64.iso.torrent','rb').read()metadata=bencode.bdecode(torrent)hashcontents=bencode.bencode(metadata['info'])digest=hashlib.sha1(hashcontents).digest()b32hash=base64.b32encode(digest)params={'xt':'urn:btih:%s'%b32hash,'dn': metadata['info']['name'],'tr': metadata['announce'],'xl': metadata['info']['length']}paramstr=urllib.urlencode(params)magneturi='magnet:?%s'%paramstrprintmagneturi |
还有另外一个效率相对较高,而且更方便的方案是安装libtorrent,在ubuntu只需要apt-get install python-libtorrent即可对应转换磁力链的代码为:
?123 | importlibtorrent as btinfo=bt.torrent_info('test.torrent')print"magnet:?xt=urn:btih:%s&dn=%s"%(info.info_hash(), info.name()) |
转换磁力链接为bt种子文件
下面来看一个反过程,将磁力链转化为种子文件。
1、需要先安装python-libtorrent包 ,在ubuntu环境下,可以通过以下指令完成安装:
1 | # sudo apt-get install python-libtorrent |
2、代码如下:
?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | #!/usr/bin/env pythonimportshutilimporttempfileimportos.path as ptimportsysimportlibtorrent as ltfromtimeimportsleepdefmagnet2torrent(magnet, output_name=None):ifoutput_nameand\notpt.isdir(output_name)and\notpt.isdir(pt.dirname(pt.abspath(output_name))):print("Invalid output folder: "+pt.dirname(pt.abspath(output_name)))print("")sys.exit(0)tempdir=tempfile.mkdtemp()ses=lt.session()params={'save_path': tempdir,'duplicate_is_error':True,'storage_mode': lt.storage_mode_t(2),'paused':False,'auto_managed':True,'duplicate_is_error':True}handle=lt.add_magnet_uri(ses, magnet, params)print("Downloading Metadata (this may take a while)")while(nothandle.has_metadata()):try:sleep(1)exceptKeyboardInterrupt:print("Aborting...")ses.pause()print("Cleanup dir "+tempdir)shutil.rmtree(tempdir)sys.exit(0)ses.pause()print("Done")torinfo=handle.get_torrent_info()torfile=lt.create_torrent(torinfo)output=pt.abspath(torinfo.name()+".torrent")ifoutput_name:ifpt.isdir(output_name):output=pt.abspath(pt.join(output_name, torinfo.name()+".torrent"))elifpt.isdir(pt.dirname(pt.abspath(output_name))):output=pt.abspath(output_name)print("Saving torrent file here : "+output+" ...")torcontent=lt.bencode(torfile.generate())f=open(output,"wb")f.write(lt.bencode(torfile.generate()))f.close()print("Saved! Cleaning up dir: "+tempdir)ses.remove_torrent(handle)shutil.rmtree(tempdir)returnoutputdefshowHelp():print("")print("USAGE: "+pt.basename(sys.argv[0])+" MAGNET [OUTPUT]")print(" MAGNET\t- the magnet url")print(" OUTPUT\t- the output torrent file name")print("")defmain():iflen(sys.argv) <2:showHelp()sys.exit(0)magnet=sys.argv[1]output_name=Noneiflen(sys.argv) >=3:output_name=sys.argv[2]magnet2torrent(magnet, output_name)if__name__=="__main__":main() |
3、用法如下
?1 | # python Magnet_To_Torrent2.py |
最新内容
手机 |
相关内容
Win11文件夹正在使用(win11文件夹
Win11文件夹正在使用(win11文件夹正在使用无法删除怎么办),文件,步骤,操作,点击,重命名,方法,任务管理器,删除,对Win11电脑文件或文件夹进火焰纹章封印之剑哪些人值得培养(
火焰纹章封印之剑哪些人值得培养(值得培养的强力人物分享),骑士,后期,封印之剑,魔法,剑圣,弓箭手,战斗力,前期,火焰纹章封印之剑值得培养的苹果版梦幻西游手游电脑版下载安装
苹果版梦幻西游手游电脑版下载安装(苹果电脑怎么安装梦幻西游手游),梦幻西游,安装,点击,梦幻西游互通,梦幻西游手游,图标,游戏,电脑怎么安v380监控怎么连接电脑版(v380pro监
v380监控怎么连接电脑版(v380pro监控电脑版安装),监控,安装,查看,连接,摄像头,电脑版,接线,服务,1. v380pro监控电脑版安装1、首先将电脑和电脑文件返回上级快捷键(电脑文件
电脑文件返回上级快捷键(电脑文件夹返回上一步快捷键),快捷键,操作,输入,点击,撤销快捷键,恢复,命令,文件,1. 电脑文件夹返回上一步快捷键WWin10系统提示Store错误代码“0X80
Win10系统提示Store错误代码“0X80070005”怎么办?,用户,错误,选项,选择,错误代码,连接,方法,代理,尽管Windows10可以说是有史以来最好PC操电脑如何安装旧的显卡驱动(电脑重
电脑如何安装旧的显卡驱动(电脑重新安装显卡驱动),显卡,驱动,显卡驱动,安装,重新安装,选择,分辨率,驱动程序,电脑重新安装显卡驱动一定要重文件右键菜单设置(文件右键菜单设
文件右键菜单设置(文件右键菜单设置在哪),点击,选择,文件,右键菜单,打开方式,程序,右键菜单设置,鼠标右键,1. 文件右键菜单设置在哪1.系统