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实现中文转换url编码的方法
Jun 14 Python
使用Python读取安卓手机的屏幕分辨率方法
Mar 31 Python
基于Python实现用户管理系统
Feb 26 Python
python文件选择对话框的操作方法
Jun 27 Python
django数据关系一对多、多对多模型、自关联的建立
Jul 24 Python
pygame实现五子棋游戏
Oct 29 Python
python matplotlib 画dataframe的时间序列图实例
Nov 20 Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 Python
Python timer定时器两种常用方法解析
Jan 20 Python
使用python检查yaml配置文件是否符合要求
Apr 09 Python
pycharm 的Structure界面设置操作
Feb 05 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
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
2019/12/11 PHP
JQuery弹出层示例可自定义
2014/05/19 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
2014/06/06 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
微信 jssdk 签名错误invalid signature的解决方法
2019/01/14 Javascript
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
Vue中axios拦截器如何单独配置token
2019/12/27 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
python简单猜数游戏实例
2015/07/09 Python
Django学习教程之静态文件的调用详解
2018/05/08 Python
PyTorch中Tensor的维度变换实现
2019/08/18 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
python和JavaScript哪个容易上手
2020/06/23 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
网上签名寄语活动留言
2014/01/18 职场文书
大学生个人实习的自我评价
2014/02/15 职场文书
总经理任命书
2014/03/29 职场文书
大学生村官座谈会发言材料
2014/05/25 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
爱心捐款感谢信
2015/01/20 职场文书
瘦西湖导游词
2015/02/03 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python