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中的__new__()方法的使用
Apr 09 Python
python中模块的__all__属性详解
Oct 26 Python
python使用opencv按一定间隔截取视频帧
Mar 06 Python
python操作excel的包(openpyxl、xlsxwriter)
Jun 11 Python
详解Python 装饰器执行顺序迷思
Aug 08 Python
Pytorch之保存读取模型实例
Dec 30 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
Apr 14 Python
Python实现捕获异常发生的文件和具体行数
Apr 25 Python
Django haystack实现全文搜索代码示例
Nov 28 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
Feb 24 Python
详解Django中 render() 函数的使用方法
Apr 22 Python
Python 读取千万级数据自动写入 MySQL 数据库
Jun 28 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
UCenter Home二次开发指南
2009/05/28 PHP
PHP 上传文件大小限制
2009/07/05 PHP
深入PHP5中的魔术方法详解
2013/06/17 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
js动态删除div元素基本思路及实现代码
2014/05/08 Javascript
Egret引擎开发指南之编译项目
2014/09/03 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
利用js来实现缩略语列表、文献来源链接和快捷键列表
2016/12/16 Javascript
详解Vue中一种简易路由传参办法
2017/09/15 Javascript
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
[03:07]DOTA2英雄基础教程 冰霜诅咒极寒幽魂
2013/12/06 DOTA
python实现清屏的方法
2015/04/30 Python
Python基础教程之正则表达式基本语法以及re模块
2016/03/25 Python
Python 查看list中是否含有某元素的方法
2018/06/27 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
Python 3.8新特征之asyncio REPL
2019/05/28 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
2020/05/18 Python
python中random模块详解
2021/03/01 Python
学生就业推荐信
2013/11/13 职场文书
正风肃纪剖析材料
2014/02/18 职场文书
公证委托书大全
2014/04/04 职场文书
新闻编辑求职信
2014/04/09 职场文书
三八妇女节标语
2014/10/09 职场文书
2015暑期社会实践个人总结
2015/07/13 职场文书
小学三年级数学教学反思
2016/02/16 职场文书
创业计划书之寿司
2019/07/19 职场文书
解析Java中的static关键字
2021/06/14 Java/Android
python_tkinter弹出对话框创建
2022/03/20 Python