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 正则表达式入门(初级篇)
Dec 07 Python
浅谈Python2获取中文文件名的编码问题
Jan 09 Python
PyQt5每天必学之创建窗口居中效果
Apr 19 Python
Python 爬虫之Beautiful Soup模块使用指南
Jul 05 Python
python logging重复记录日志问题的解决方法
Jul 12 Python
python装饰器简介---这一篇也许就够了(推荐)
Apr 01 Python
Python3 venv搭建轻量级虚拟环境的步骤(图文)
Aug 09 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
Jul 02 Python
python3让print输出不换行的方法
Aug 24 Python
Python爬虫进阶之Beautiful Soup库详解
Apr 29 Python
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
Apr 11 Python
Python开发五子棋小游戏
May 02 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
phpQuery占用内存过多的处理方法
2013/11/13 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
PHP递归的三种常用方式
2019/02/28 PHP
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
JS重要知识点小结
2011/11/06 Javascript
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
JavaScript实现的in_array函数
2014/08/27 Javascript
对比分析json及XML
2014/11/28 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
Position属性之relative用法
2015/12/14 Javascript
jQuery点击输入框显示验证码图片
2016/05/19 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
从零使用TypeScript开发项目打包发布到npm
2020/02/14 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
vue中是怎样监听数组变化的
2020/10/24 Javascript
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
浅谈Python中的数据类型
2015/05/05 Python
独特的python循环语句
2016/11/20 Python
python 爬虫出现403禁止访问错误详解
2017/03/11 Python
Python获取当前路径实现代码
2017/05/08 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
2018/03/19 Python
python 列表降维的实例讲解
2018/06/28 Python
详解python中的Turtle函数库
2018/11/19 Python
python定时任务 sched模块用法实例
2019/11/04 Python
python属于哪种语言
2020/08/16 Python
精油和天然健康美容产品:Art Naturals
2018/01/27 全球购物
电脑教师的自我评价
2013/12/18 职场文书
党支部对照检查材料
2014/08/25 职场文书
党员干部批评与自我批评反四风思想汇报
2014/09/21 职场文书
运动会三级跳加油稿
2015/07/21 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL
python中tkinter复选框使用操作
2021/11/11 Python