当前位置: 首页 > 面试题库 >

给定一个.torrent文件,如何在python中生成一个磁力链接?

经国安
2023-03-14
问题内容

我需要一种将.torrents转换为磁铁链接的方法。想在python中做到这一点。是否有任何已经在执行此操作的库?


问题答案:

您可以使用从BitTorrent中提取的bencode模块来执行此操作。

为了展示一个例子,我从这里下载了Ubuntu的torrent ISO:

http://releases.ubuntu.com/12.04/ubuntu-12.04.1-desktop-i386.iso.torrent

然后,您可以像这样在Python中进行解析:

>>> import bencode
>>> torrent = open('ubuntu-12.04.1-desktop-i386.iso.torrent', 'r').read()
>>> metadata = bencode.bdecode(torrent)

磁力哈希仅从洪流元数据的“ info”部分计算得出,然后在base32中进行编码,如下所示:

>>> hashcontents = bencode.bencode(metadata['info'])
>>> import hashlib
>>> digest = hashlib.sha1(hashcontents).digest()
>>> import base64
>>> b32hash = base64.b32encode(digest)
>>> b32hash
'CT76LXJDDCH5LS2TUHKH6EUJ3NYKX4Y6'

您可以通过查看此处来验证这是正确的,并且您会看到磁铁链接为:

magnet:?xt=urn:btih:CT76LXJDDCH5LS2TUHKH6EUJ3NYKX4Y6

如果要在磁铁URI中填写一些额外的参数:

>>> params = {'xt': 'urn:btih:%s' % b32hash,
...           'dn': metadata['info']['name'],
...           'tr': metadata['announce'],
...           'xl': metadata['info']['length']}
>>> import urllib
>>> paramstr = urllib.urlencode(params)
>>> magneturi = 'magnet:?%s' % paramstr
>>> magneturi
'magnet:?dn=ubuntu-12.04.1-desktop-i386.iso&tr=http%3A%2F%2Ftorrent.ubuntu.com%3A6969%2Fannounce&xl=729067520&xt=urn%3Abtih%3ACT76LXJDDCH5LS2TUHKH6EUJ3NYKX4Y6'


 类似资料:
  • 问题内容: 我想用Java生成一个.torrent文件,但是我不想要一个大的API,它可以执行诸如抓取跟踪器,种子等操作。这仅适用于生成元数据的客户端。存在哪些轻量级解决方案?我只生成一个.zip文件的.torrent。 谢谢! 问题答案: 我整理了这段独立的Java代码,以准备一个带有单个文件的.torrent文件。 通过调用.torrent文件的名称,共享文件的名称和跟踪器URL 来创建.to

  • 问题内容: JavaScript中是否有类似于CSS的东西,允许您在另一个JavaScript文件中包含一个JavaScript文件? 问题答案: JavaScript的旧版本没有导入,包含或要求,因此已经开发了许多解决此问题的方法。 但是自2015年(ES6)起,JavaScript有了ES6模块标准即可在Node.js中导入模块,大多数现代浏览器也支持该模块。 为了与旧浏览器的兼容性,这样的构

  • 本文向大家介绍如何在python中执行另一个py文件,包括了如何在python中执行另一个py文件的使用技巧和注意事项,需要的朋友参考一下 使用命令:os.system('python file_name.py') 解释:os.system是执行当前的系统命令 1、拿windows系统举例: 2、linux: 其他方法: execfile('xx.py'),括号内为py文件路径; 如果专需要传参数

  • 问题内容: 我是PHP的新手,我使用Eclipse SDE构建一个简单的Web应用程序。 我的方案是: 我有 index.php 页面,其中包括登录表单( 2个文本框和Login Button ) 我有包含两个表的MySQL数据库:system_users和user_errors 每当用户成功在index.php页面中登录时,这都应将其重定向到 page1.php ,然后从user_errors表

  • 问题内容: 我最多有8个独立的Python进程在共享文件夹中创建临时文件。然后,我希望控制过程将所有临时文件按一定顺序附加到一个大文件中。在不可知的Shell级别上执行此操作的最快方法是什么? 问题答案: 仅使用简单的文件IO: 这与操作系统无关。它也很简单,性能应该和使用其他任何东西一样好。

  • 我正在执行File>Export>Runnable JAR文件。可用的库处理选项是“提取所需库...”、“打包所需库...”、“复制所需库...”。我有一个巨大的引用库列表,所有这些都需要花费很长时间。我已经选择了“Copy libraries into sub-folder next to generated jar”选项,不希望每次重新生成jar文件时都重新复制它们。如何做到这一点?多谢了。