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中__slots__用法实例
Jun 04 Python
Python如何import文件夹下的文件(实现方法)
Jan 24 Python
Python实现接受任意个数参数的函数方法
Apr 21 Python
解决pandas使用read_csv()读取文件遇到的问题
Jun 15 Python
python之验证码生成(gvcode与captcha)
Jan 02 Python
详解Python3序列赋值、序列解包
May 14 Python
Python3enumrate和range对比及示例详解
Jul 13 Python
使用Python实现图像标记点的坐标输出功能
Aug 14 Python
基于Tensorflow高阶读写教程
Feb 10 Python
Window系统下Python如何安装OpenCV库
Mar 05 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
Mar 08 Python
python实现一个猜拳游戏
Apr 05 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禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
2016/10/13 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
2017/10/25 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
前端性能优化及技巧
2016/05/06 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
从0到1构建vueSSR项目之node以及vue-cli3的配置
2019/03/07 Javascript
Python代理抓取并验证使用多线程实现
2013/05/03 Python
Python 使用os.remove删除文件夹时报错的解决方法
2017/01/13 Python
Python 中pandas.read_excel详细介绍
2017/06/23 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
opencv与numpy的图像基本操作
2019/03/08 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
python list转置和前后反转的例子
2019/08/26 Python
解决Python3.8运行tornado项目报NotImplementedError错误
2020/09/02 Python
公务员培训心得体会
2013/12/28 职场文书
毕业设计计划书
2014/01/09 职场文书
办理居住证介绍信
2014/01/15 职场文书
周年庆典邀请函范文
2014/01/24 职场文书
培训楼经理岗位责任制
2014/02/10 职场文书
经理助理岗位职责
2014/03/05 职场文书
绩效考核实施方案
2014/03/18 职场文书
初中班主任评语大全
2014/04/24 职场文书
金融管理专业求职信
2014/07/10 职场文书
责任书格式范文
2014/07/28 职场文书
求职意向书
2014/07/29 职场文书
工会优秀工作者事迹
2014/08/17 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
使用numpy nonzero 找出非0元素
2021/05/14 Python
MySQL数据库之内置函数和自定义函数 function
2022/06/16 MySQL