小编典典

您可以使用从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'

2020-12-20

python下载bt文件_给定一个.torrent文件,如何在python中生成一个磁力链接?相关推荐

  1. python对应的岗位_隐式相对导入如何在Python中工作?

    包是具有__init__.py文件的目录,是,并且在模块搜索路径上找到时作为模块加载.因此,如果父目录位于模块搜索路径上,则pkg只是一个可以导入并视为包的包. 但是通过将pkg / core / m ...

  2. python列表生成式原理_三元表达式/和/或如何在Python中工作/真与假的性质/列表生成/生成器,and,or,执行,原理,True,False,本质,生成式...

    一看标题,看似是三个不相关的问题,实际上息息相关. 我们都知道,"C系语言(C\C++.C#.Java等)"都有一个共同的知识点:三目运算符,其主要作用还是为了简化选择结构语句.让 ...

  3. 【从零开始制作 bt 下载器】一、了解 torrent 文件

    [从零开始制作 bt 下载器]一.了解 torrent 文件 写作背景 读取 torrent 文件 认识 bencode 使用 Python 解析 torrent 文件 解密 torrent 文件 结 ...

  4. python下载无法安装_各种版本的python下载安装教程

    关键时刻,第一时间送达! 先不说楚枫的这般年纪,能够踏入元武一重说明了什么,最主要的是,楚枫在刚刚踏入核心地带时,明明只是灵武七重,而在这两个月不到的时间,连跳两重修为,又跳过一个大境界,踏入了元武一 ...

  5. lin通信ldf文件解析_详细步骤讲解如何在CANoe中创建一个LIN通讯工程(多图+详解)...

    本文首发自微信公众号"汽车技术馆"! CANoe可以实现基于CAN通讯的通讯测试和仿真,同时也可以支持基于LIN通讯的通讯测试和仿真,如何在CANoe中建立一个基于LIN通讯的工程 ...

  6. python伪代码书写规范_代码这样写更优雅(Python 版)(转载)

    Python 这门语言最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净.整洁.一目了然.但有时候我们写代码,特别是 Python 初学者,往往还是按照其它语言的思维习惯来写,那样的写法不仅运行 ...

  7. linux强制移除pdf密码,分享|如何在 Linux 中从一个 PDF 文件中移除密码

    今天,我碰巧分享一个受密码保护的 PDF 文件给我的一个朋友.我知道这个 PDF 文件的密码,但是我不想透露密码.作为代替,我只想移除密码并发送文件给他.我开始在因特网上查找一些简单的方法来从 PDF ...

  8. python下载安装教程-一招解决:各种版本的Python下载安装教程

    原标题:一招解决:各种版本的Python下载安装教程 python从17年开始大火,自然想学python的同学就多了,小编整理了这篇文章,从python的功能介绍.各系统最新版本python下载.py ...

  9. python按enter退出_【cmd按任意键退出 python】

    转Linux 下 Python 实现按任意键退出 某天在群内有同学问到,在python下我用input或者raw_input都得输入完后回车才能获取到输入的值,那如何实现任意键退出暂停等功能呢,我当时 ...

  10. ai中如何插入签名_如何在PDF中插入一个或多个空白页?

    在编辑或修改PDF文档时,一般都需要新增空白页后再添加文本或图片等内容,那么如何在PDF中插入一个或多个空白页呢? 首先打开极速PDF编辑器,或打开需要编辑的PDF文档后,点击右上角"文档& ...

最新文章

  1. git远程仓库和分支
  2. Istio 将被捐赠给开源基金会 | 云原生生态周报 Vol. 47
  3. php和python和javascript_Node.js与PHP、Python的字符处理性能对比
  4. 网关限流(令牌桶算法)
  5. python接口和抽象类的区别_接口和抽象类有什么区别?
  6. 面试遇到职场PUA,只能说兄弟你还嫩了点
  7. C#图片处理之:Gamma校正
  8. 数独游戏——数模处理(MATLAB整数规划)
  9. 数据库实验一、实验二、实验三、实验四
  10. 天地图API 调用影像底图 影像注记 全球境界
  11. 查看服务器的外网IP
  12. PTA---约分最简分式 (10 分)
  13. 安卓(调试)有线投屏、wifi投屏到电脑笔记
  14. 红黑树如何快速调整到平衡态_快速多态
  15. 普通打印机如何在A4纸上打印不同内容的标签
  16. C++ typedef typename 作用
  17. 多传感器分布式融合算法——多传感器网络协同目标跟踪和定位
  18. day03-python字符串
  19. Kubernetes--自动缩扩容
  20. 每日新闻:华为发布5大AI战略;支付宝建议苹果用户调低免密支付额度;胡润百富榜:马云居首马化腾第三;微软重新推送新版Win10...

热门文章

  1. 西电通信技术基础实验
  2. js 字符串截取数组常用方法总结(前端)
  3. C# textbox快捷键添加横杠
  4. HIVE优化的四种方法
  5. 大数据和java的区别
  6. 数字图像处理 - 什么是数字图像处理
  7. [转帖]半导体行业观察
  8. BurpSuite爆破(Intruder)模块四种模式介绍
  9. 直接寻址、间接寻址、立即数寻址
  10. 白盒测试哪种测试效果好_软件测试选择哪种测试方法比较好?