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 连连看连接算法
Nov 22 Python
python设计模式大全
Jun 27 Python
让Python更加充分的使用Sqlite3
Dec 11 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
python2.7读取文件夹下所有文件名称及内容的方法
Feb 24 Python
python实现写数字文件名的递增保存文件方法
Oct 25 Python
python函数声明和调用定义及原理详解
Dec 02 Python
Python实现图片识别加翻译功能
Dec 26 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
Feb 19 Python
Python restful框架接口开发实现
Apr 13 Python
Python 如何定义匿名或内联函数
Aug 01 Python
TensorFlow低版本代码自动升级为1.0版本
Feb 20 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中jQuery插件autocomplate的简单使用笔记
2012/06/14 PHP
Smarty foreach控制循环次数的一些方法
2015/07/01 PHP
理解JavaScript中的事件
2006/09/23 Javascript
js宝典学习笔记(上)
2007/01/10 Javascript
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
javaScript如何跳出多重循环break、continue
2016/09/01 Javascript
Angular.js跨controller实现参数传递的两种方法
2017/02/20 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
详解ECMAScript typeof用法
2018/07/25 Javascript
微信小程序订阅消息(java后端实现)开发
2020/06/01 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
判断网页编码的方法python版
2016/08/12 Python
很酷的python表白工具 你喜欢我吗
2019/04/11 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
python range实例用法分享
2020/02/06 Python
python文件操作seek()偏移量,读取指正到指定位置操作
2020/07/05 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
详解用selenium来下载小姐姐图片并保存
2021/01/26 Python
基于MUI框架使用HTML5实现的二维码扫描功能
2018/03/01 HTML / CSS
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
C语言变量的命名规则都有哪些
2013/12/27 面试题
网站设计师的岗位职责
2013/11/21 职场文书
高中历史教学反思
2014/02/08 职场文书
网页美工求职信
2014/02/15 职场文书
学前教育专业求职信
2014/09/02 职场文书
2014年培训工作总结范文
2014/11/27 职场文书
付款承诺函范文
2015/01/21 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
教师节大会主持词
2015/07/06 职场文书
个人工作总结(管理人员)范文
2019/08/13 职场文书
Pytest中skip skipif跳过用例详解
2021/06/30 Python
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL