linux平台使用Python制作BT种子并获取BT种子信息的方法


Posted in Python onJanuary 20, 2017

本文实例讲述了linux平台使用Python制作BT种子并获取BT种子信息的方法。分享给大家供大家参考,具体如下:

最近研究了一下linux BT服务器环境的搭建,需要在linux下制作BT种子并获取BT种子信息,整理了一下这个过程:

制作BT种子软件本站下载地址

安装:

[root@localhost src]# tar zxf mktorrent-1.0.tar.gz
[root@localhost src]# cd mktorrent-1.0
[root@localhost mktorrent-1.0]# make
[root@localhost mktorrent-1.0]# make install
[root@localhost ~]# which mktorrent
/usr/local/bin/mktorrent

需要python的bencode模块来获取BT种子信息,下载地址: https://pypi.python.org/packages/source/b/bencode/bencode-1.0.tar.gz。

安装:

#tar -zxf bencode-1.0.tar.gz
#cd bencode-1.0.tar.gz
#python setup.py install

制作和验证的python脚本如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, re, time, sys
import hashlib, bencode
file_name = 'bt_test.exe'
bt_source = '/data/updir/%s' % file_name
bt_name = '/data/source/%s.torrent' % file_name
if os.path.exists(bt_name):
  os.remove(bt_name)
if os.path.exists(bt_source):
  conm = "/usr/local/bin/mktorrent -v -p -l 18 -a http://bt1.text.cn/announce -a http://bt2.text.cn/announce -o %s %s" % (bt_name,bt_source)
  res = os.popen(conm).readlines()[-1].strip()
  if 'done' in res:
    bt_path = {}
    bt_file = open(bt_name, 'rb')
    bt_info = bencode.bdecode(bt_file.read()).get('info')
    bt_info_hash_hex = hashlib.sha1(bencode.bencode(bt_info)).hexdigest()
    if os.path.isdir(bt_source):
      bt_file_size = 0
      for length in bt_info.get('files'):
        bt_file_size = bt_file_size + int(length['length'])
        bt_path['/'.join(length['path'])] = length['length']
    else:
      bt_file_size = bt_info.get('length')
      bt_file_name = bt_info.get('name')
      bt_path[bt_file_name]=bt_file_size
    bt_file.close()
    print bt_path
    print "Create torrent success"
  else:
    print "Create torrent Error"
    sys.exit()
else:
  print "This source not find"
  sys.exit()

file_name为做种的文件或目录名字。

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
使用python Django做网页
Nov 04 Python
Python中的异常处理简明介绍
Apr 13 Python
python实现类的静态变量用法实例
May 08 Python
Django实现全文检索的方法(支持中文)
May 14 Python
使用Python写一个量化股票提醒系统
Aug 22 Python
python+pyqt5实现24点小游戏
Jan 24 Python
python数值基础知识浅析
Nov 19 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
python pptx复制指定页的ppt教程
Feb 14 Python
区分python中的进程与线程
Aug 13 Python
Django CBV模型源码运行流程详解
Aug 17 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
Jan 20 #Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 #Python
python 查找字符串是否存在实例详解
Jan 20 #Python
python django 访问静态文件出现404或500错误
Jan 20 #Python
python中实现迭代器(iterator)的方法示例
Jan 19 #Python
Python正则替换字符串函数re.sub用法示例
Jan 19 #Python
Python中二维列表如何获取子区域元素的组成
Jan 19 #Python
You might like
php采集时被封ip的解决方法
2010/08/29 PHP
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
JTrackBar水平拖动效果
2007/07/15 Javascript
js中将字符串转换成json的三种方式
2011/01/12 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
2015/03/04 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
详解react如何在组件中获取路由参数
2017/06/15 Javascript
微信小程序使用Promise简化回调
2018/02/06 Javascript
Vue 之孙组件向爷组件通信的实现
2019/04/23 Javascript
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
详解vue 自定义组件使用v-model 及探究其中原理
2019/10/11 Javascript
js回调函数仿360开机
2019/12/26 Javascript
vuex页面刷新导致数据丢失的解决方案
2020/12/10 Vue.js
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
浅谈Django的缓存机制
2018/08/23 Python
Python中如何导入类示例详解
2019/04/17 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
DataFrame.to_excel多次写入不同Sheet的实例
2019/12/02 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
新秀丽拉杆箱美国官方网站:Samsonite美国
2016/07/25 全球购物
中药专业大学生医药工作求职信
2013/10/25 职场文书
大学社团活动总结
2014/04/26 职场文书
学校党的群众路线教育实践活动总结报告
2014/07/03 职场文书
生产设备维护保养制度
2015/08/06 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书
解决 redis 无法远程连接
2022/05/15 Redis