使用Python3将BT种子转磁力链接

article/2025/5/9 19:26:13

闲着没事,写了个小爬虫,爬了5万多BT种子。

5万多种子有近3个G的大小,开打文件夹巨卡,就想把种子转成磁力,这样,5万多种子也就一个TXT文件就可以存下了。

先网上找找别人是怎么干的,

发现都是用bencode这个模块。例子也有,但都是python2.7的,模块本身也只支持python2.7.

使用bencode模块的例子如下:

import bencode
import sys
import hashlib
import base64#读取种子文件
torrent = open(torrentName, 'rb').read()
#计算meta数据
metadata = bencode.bdecode(torrent)
hashcontents = bencode.bencode(metadata['info'])
digest = hashlib.sha1(hashcontents).digest()
b32hash = base64.b32encode(digest)
#打印
print 'magnet:?xt=urn:btih:%s' % b32hash

是不是很简单。。可我用的是Python3哇,也不想学python2.7

先试了试,直接bencode出错,网上有一两个贴子说可以改模块代码,我试了,没改成。。还是不行

还是看自己的,先去pypi上看bencode有没有更新,发现有一个bencode.py的模块,据说就是bencode的高级版,4.0 版本还支持Python3, 下来试试,

先复制上面的代码。做些修改,把bencode改成bencodepy。。。

这么简单就行,现实果然是残酷的,直接就报错了

在出错的前行加个print看看上步得到了个啥,

hashcontents = bencodepy.bencode(metadata['info'])

前加一行

print(metadata)

运行,

在错误前多了一行,看样子metdata是个字典,把字典都打出来看看,加下面几行

for key in metadata.keys():print(key,metadata[key])

运行

字典都打出来了,有一个key是info但前面有个b,那肯定是编码的问题,先把b搞掉。。用encode

弄个新字典,把搞掉b的key当新字典的k,后面值前面的b先不管。。

import bencodepy
import hashlib
import base64#目录下扔个种子试试,
torrentName = 'ubuntu-16.04.6-desktop-i386.iso.torrent'#读取种子文件
torrent = open(torrentName, 'rb').read()
#计算meta数据
metadata = bencodepy.bdecode(torrent)#新加的部份,新建个字典,把原字典的key解码,存到新字典里
metadata1 ={}
for key in metadata.keys():key1 =key.decode("utf-8")metadata1[key1]=metadata[key]hashcontents = bencodepy.bencode(metadata1['info'])#把原来的metadata改成新字典metadata1
digest = hashlib.sha1(hashcontents).digest()
b32hash = base64.b32encode(digest)
#打印
print('magnet:?xt=urn:btih:%s' % b32hash )

 运行

 

成了?不对,磁力链里还有个b,先手动把b''去掉,得到地址是

magnet:?xt=urn:btih:YFTZNJ2NYJGMPRW7F55WNODB4IW6Y2NR

打开XL,直接跳到下载了,居然可以下,哈,成了,看来只要把这个b搞掉就好了,

加decode就好,完工。。

最终代码。

import bencodepy
import hashlib
import base64#目录下扔个种子试试,
torrentName = 'ubuntu-16.04.6-desktop-i386.iso.torrent'#读取种子文件
torrent = open(torrentName, 'rb').read()
#计算meta数据
metadata = bencodepy.bdecode(torrent)#新加的部份,新建个字典,把原字典的key解码,存到新字典里
metadata1 ={}
for key in metadata.keys():key1 =key.decode("utf-8")metadata1[key1]=metadata[key]hashcontents = bencodepy.bencode(metadata1['info'])#把原来的metadata改成新字典metadata1
digest = hashlib.sha1(hashcontents).digest()
b32hash = base64.b32encode(digest).decode("utf-8")#加decode解码
#打印
print('magnet:?xt=urn:btih:%s' % b32hash )

 

 

 


http://chatgpt.dhexx.cn/article/TjsyC7jF.shtml

相关文章

种子文件转成为磁力链接 下载BT磁力转换小工具

可以将BT种子文件转成磁力链接,相信很多很多朋友都需要用到,毕竟种子是已附件文件形式存在的,还需要服务器存放,并且下载也需要 BT Tracker ,现在的问题是,越来越多的服务器被干掉了,电驴的服务…

html怎么比较时间,比较时间大小的方法

java 日期怎么比较大小? 例子: String beginTimenew String("2017-06-09 10:22:22");String endTimenew String("2017-05-08 11:22:22"); 直接用Date自带方法before()和after()比较 SimpleDateFormat df new SimpleDateFormat("yyyy-MM-…

js 比较时间大小

reference: http://lichengyezi.iteye.com/blog/562786 Js代码 //var yourtimedocument.getElementById(begin_time).value; var yourtime2010-12-10 11:12; yourtime yourtime.replace("-","/");//替换字符,变成标准格式 var d2new…

用js比较时间大小

开发工具与关键技术:Visual Studio、js 作者:幻奏 撰写时间:2019.7.17对比时间的大小在很多项目里面都有用到,刚开始我还不会怎样比较时间的大小,后来上了老师的课之后,我才知道怎样比较时间的大小。 比较时…

Google play ASO 关键字指南

一篇 Google play ASO 入门指南: 译文一篇, 原文地址: https://www.apptamin.com/blog/aso-google-play-app-optimization/ 第一次在填写 Google play 简短说明和应用描述的时候你会感觉自己是无助的, 因为你只有很少的时间但是…

如何从零开始解读产品经理行业分析

上次一起了解了什么是产品经理,产品经理PM和PD在不同类型公司的作用。了解产品经理对当前的应用产品中的重要作用。是不是有点憧憬,其实憧憬是美好的,但是还是要走进现实具体怎么去做,一步一步脚踏实地的,一步一步走入…

ASO优化之在海外如何进行竞品分析

进行竞争对手研究,需要分析当前的市场形势,确定竞争对手表现的模式,并将其应用到我们应用营销策略中。不同的应用可以在直观的用户界面上进行简单的比较,很容易看到长期趋势。 在App Store和Google Play上获取竞争对手评论区的信…

如何撰写ASO优化行业数据报告,ASO推广数据分析

撰写各行业数据分析报告对我们来说是非常重要的,它能够提高我们的眼界,让我们不只是局限于我们自己的APP,可以让我们以上帝的视角来俯瞰全局。这对我们制定APP优化计划和未来发展规划具有战略性意义。下面我以运动健身类APP为例告诉大家应该从…

什么是ASO,GooglePlayASO优化的方法有哪些

ASO是为了提高该产品的搜索结果成绩,提升APP的下载量,针对GooglePlay来说,ASO就是优化APP页面。 什么是ASO ASO即APPStoreOptimization,是用于提高APP在应用市场排名的工具,其实也就是移动产品的SEO工作。 ASO是为了提高该产品的搜索结果成绩,提升APP的下载量,针对Goog…

ASO优化之关键词该如何组词选词

应用商店的优化受多重因素影响,主要因素之一就是应用的关键词以及搜索量。那么今天我们就具体来聊聊如何给关键词进行组词和选词。 1,通过搜索词、产品定位、产品介绍等维度分析竞品的主要功能,比如用户分类、定位、用户界面等等&#xff0c…

ASO代理业务浅析(五)aso未来的市场

ASO业务的未来 究其未来,溯其本源。 ASO行业有一个很重要的基础理论,是基于苹果的搜索排名机制(此处省去三千字),但有个更重要的基础设施,是数据服务。**数据尤其是**研究院在这方面其实是有头部发言权的…

ASO优化之竞品分析该怎么做

竞品分析就是对竞争对手的产品进行借鉴和全方位的分析处理,取长补短,从而找到自己产品的改进点。今天我们通过应用商城里的APP,来给大家讲讲怎么做APP的竞品分析。 树立好清晰的目标,具体产品,具体分析,根…

「ASO优化服务」APP如何做数据分析

当下,逢运营必谈数据分析,APP运营更是如此。数据分析的用意本不在于数据本身,而是要打造一个数据反馈闭环。收集数据,设计基础数据指标,多维度交叉分析不同指标,以数据甄别问题,再反向作用产品,最终形成数据驱动产品设计的闭环。 从运营小白到产品经理,提到APP数据分…

ASO优化如何不花钱也能上榜

应用市场优化(App Store Optimization)简称ASO,是一项让开发者的APP更容易被用户在App Store内搜索到的APP推广技术。已越来越被重视。 ASO优化的排名因素由哪些?ASO优化可以快速达到排名靠前的目的吗? 一、ASO优化排名的七大因素 1、app关键词 2、app标题 3、app的应…

10分钟帮你全面了解ASO

10分钟帮你全面了解ASO 据最新统计显示,中国已成为仅次于美国的第二大 iOS 应用下载国。在巨大的市场空间吸引下,提交到 App Store 的应用越来越多,同类应用之间的竞争日益激烈,而应用的可发现性也变得更加难以把握了。在这样的大…

ASO初探

背景 最近手热做了几个widget类型的App,放到商店里面。前几天的下载量每天都能40,最高70多。可是最近下载量让人堪忧。所以我觉得应该来一套ASO优化方案。 ASO是什么 ASO,既App Store Optimization的简写,中文意思为应用商店…

ASO搜索优化-如何进行竞品分析

我们分析竞品的目的是什么?了解他们覆盖了哪些关键词,关键词排名分布,然后帮助我们更好的选词。比如搜索“装修”,排名第一的应用为土巴兔装修,我们来一看它的关键词分布如何: 我们通过ASO工具进行筛选&am…

js元素获取DOM里的最后一个子元素

<select name"a" id"a" class"sec"><option value"1">这是a1</option><option value"2">a2a2a2</option><option value"3">a3这是</option></select>var aAll …

原生js获取元素的子元素

//使用firstChild //但是下面这种因为有空格,也算其子元素<lable><span id"onlinePerson" name"person" onclick"changeImg(this)" ><img id"imgPerson" src"images/invote-checked.png">个人 <…

JS获取div里面的其它元素的两种方法

通过JS的DOM获取div里面的其它元素的两种方法 getElementsByTagName 和 querySelector &#xff0c;具体使用方法如下&#xff1a; <div id"box"><input type"text" id"h1" value"h1"><input type"text" …