当前位置: 首页 > news >正文

Python实现BT种子转化为磁力链接【实战】

经常看电影的朋友肯定对BT种子并不陌生,但是BT种子文件相对磁力链来说存储不方便,而且在网站上存放BT文件容易引起版权纠纷,而磁力链相对来说则风险小一些。

将BT种子转换为占用空间更小,分享更方便的磁力链还是有挺大好处的。

今天咱们来看下如何将种子转换成磁力链接,方案是:利用python的bencode模块,用起来比较简单

首先要安装这个模块,安装命令:

pip install bencode

如果没有安装pip(安装了可以略过),看这里:

pip的安装方法。

方法一:脚本安装

$ wget https://bootstrap.pypa.io/get-pip.py
$ [sudo] python get-pip.py

方法二:源码安装:

$ curl -O https://pypi.python.org/packages/source/p/pip/pip-X.X.tar.gz
$ tar xvfz pip-X.X.tar.gz
$ cd pip-X.X
$ python setup.py install

但是安装过程可能会出现错误:

An error occurred while trying to run get-pip.py. Make sure you have setuptools or distribute installed.

出现这个错误,说明首先要安装setuptools

setuptools 安装:

wget -q http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py

安装完setuptools后,再次源码安装就好了。

安装完成后,我们来看下代码:

系统环境:Linux

Python环境:Python2.7

请注意python版本

bt2url.py

实战代码:

#! /usr/local/bin/python
# @desc python通过BT种子生成磁力链接 
# @date 2015/11/10
# @author pythontab.com
import bencode
import sys
import hashlib
import base64
import urllib
#获取参数
torrentName = sys.argv[1]
#读取种子文件
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

如何使用?

命令:

python bt2url.py test.torrent

结果:

magnet:?xt=urn:btih:MWXFHXOGE2UMR7WBFZYEJPM3LF2VIHNH
最后,如果有想一起学习python,爬虫,可以来一下我的python。q.u.n【 784758214 】,内有安装包和学习视频资料免费分享,好友都会在里面交流,分享一些学习的方法和需要注意的小细节,每天也会准时的讲一些项目实战案例。找工作什么最重要?看中的还是你的实战经验

相关文章:

  • Swift采用语言服务器协议
  • 分页汇总从未如此简单
  • Unity笔记集_序
  • 安全和取证Linux发行版Kali Linux 2018.4 发布
  • JS处理数据四舍五入,tofixed与round的区别
  • 实用的vue插件大汇总
  • 【Oracle学习笔记】游标
  • Zilliqa 的设计构思 第3部分:使共识更有效
  • MMS-A01型三轴有线加速度传感器
  • 八年!性能提升10倍,阿里云HBase 2.0首发商用
  • Effective_STL 学习笔记(二十九) 需要一个一个字符输入时考虑使用 istreambuf_iterator...
  • HashMap源码解析
  • Linux文件类型
  • SSM框架面试题及答案整理
  • 笔记整理2
  • 08.Android之View事件问题
  • Android Volley源码解析
  • Brief introduction of how to 'Call, Apply and Bind'
  • Bytom交易说明(账户管理模式)
  • gcc介绍及安装
  • JavaScript创建对象的四种方式
  • JavaScript异步流程控制的前世今生
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • leetcode-27. Remove Element
  • nodejs实现webservice问题总结
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • Vim Clutch | 面向脚踏板编程……
  • vue学习系列(二)vue-cli
  • 百度地图API标注+时间轴组件
  • 笨办法学C 练习34:动态数组
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 普通函数和构造函数的区别
  • 如何胜任知名企业的商业数据分析师?
  • 物联网链路协议
  • 一个SAP顾问在美国的这些年
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 用quicker-worker.js轻松跑一个大数据遍历
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • # Java NIO(一)FileChannel
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #1014 : Trie树
  • #WEB前端(HTML属性)
  • #大学#套接字
  • $.ajax,axios,fetch三种ajax请求的区别
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (1)SpringCloud 整合Python
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (3)llvm ir转换过程
  • (C#)获取字符编码的类
  • (强烈推荐)移动端音视频从零到上手(上)
  • .bashrc在哪里,alias妙用
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .net 怎么循环得到数组里的值_关于js数组