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正则表达式 re模块使用说明
May 19 Python
python基础教程之获取本机ip数据包示例
Feb 10 Python
python命令行参数解析OptionParser类用法实例
Oct 09 Python
Python3实现Web网页图片下载
Jan 28 Python
Python3 中文文件读写方法
Jan 23 Python
tensorflow实现图像的裁剪和填充方法
Jul 27 Python
python实现图片筛选程序
Oct 24 Python
pycharm 将python文件打包为exe格式的方法
Jan 16 Python
基于Python 中函数的 收集参数 机制
Dec 21 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
Apr 07 Python
python MultipartEncoder传输zip文件实例
Apr 07 Python
python批量生成条形码的示例
Oct 10 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
建立动态的WML站点(一)
2006/10/09 PHP
深入PHP异步执行的详解
2013/06/03 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
非常好的js代码
2006/06/27 Javascript
jquery 选择器部分整理
2009/10/28 Javascript
快速解决FusionCharts联动的中文乱码问题
2013/12/04 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
jquery幻灯片插件bxslider样式改进实例
2014/10/15 Javascript
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
基于javascript实现tab切换特效
2016/03/29 Javascript
js实现人民币大写金额形式转换
2016/04/27 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
微信小程序多张图片上传功能
2017/06/07 Javascript
vue-router实现组件间的跳转(参数传递)
2017/11/07 Javascript
基于js文件加载优化(详解)
2018/01/03 Javascript
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
2018/05/17 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
2018/09/04 jQuery
JavaScript监听触摸事件代码实例
2019/12/30 Javascript
Vue 实现简易多行滚动"弹幕"效果
2020/01/02 Javascript
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
Python File readlines() 使用方法
2018/03/19 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
简单介绍django提供的加密算法
2019/12/18 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
2020/01/10 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
使用pygame编写Flappy bird小游戏
2020/03/14 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
2021/01/06 Python
2014老师三严三实对照检查材料思想汇报
2014/09/18 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
导游词之南京栖霞山
2019/10/18 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL
Mybatis-Plus进阶分页与乐观锁插件及通用枚举和多数据源详解
2022/03/21 Java/Android