linux 制作BT种子并获取BT种子信息

简介:

最近研究了一下linux BT服务器环境的搭建,需要在linux下制作BT种子并获取BT种子信息,整理了一下这个过程:

制作BT种子软件下载地址:http://jaist.dl.sourceforge.net/project/mktorrent/mktorrent/1.0/mktorrent-1.0.tar.gz

安装:

[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脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/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为做种的文件或目录名字。



本文转自 lover00751CTO博客,原文链接:http://blog.51cto.com/wangwei007/1216616,如需转载请自行联系原作者

相关文章
|
25天前
|
算法 Linux C++
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
29 0
|
1月前
|
网络协议 Ubuntu Linux
Linux 动态/静态配置ip网卡信息
Linux 动态/静态配置ip网卡信息
36 0
|
29天前
|
存储 监控 Linux
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 查看当前正在运行的进程信息 ps命令 使用指南
42 0
|
29天前
|
Shell Linux 编译器
【Shell 命令集合 备份压缩 】Linux 提取zip压缩文件的详细信息 zipinfo命令 使用指南
【Shell 命令集合 备份压缩 】Linux 提取zip压缩文件的详细信息 zipinfo命令 使用指南
34 0
|
29天前
|
存储 Shell Linux
【Shell 命令集合 网络通讯 】Linux 显示Unix-to-Unix Copy (UUCP) 系统的状态信息 uustat命令 使用指南
【Shell 命令集合 网络通讯 】Linux 显示Unix-to-Unix Copy (UUCP) 系统的状态信息 uustat命令 使用指南
26 0
|
29天前
|
域名解析 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 设置和管理网络接口配置信息 netconfig命令 使用指南
【Shell 命令集合 网络通讯 】Linux 设置和管理网络接口配置信息 netconfig命令 使用指南
49 1
|
25天前
|
Linux 编译器 程序员
【Linux 调试秘籍】深入探索 C++:运行时获取堆栈信息和源代码行数的终极指南
【Linux 调试秘籍】深入探索 C++:运行时获取堆栈信息和源代码行数的终极指南
66 0
|
29天前
|
存储 Unix Shell
【Shell 命令集合 系统管理 】⭐⭐Linux 显示系统的基本信息 uname命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐Linux 显示系统的基本信息 uname命令 使用指南
34 1
|
29天前
|
存储 Linux Shell
【Shell 命令集合 系统设置 】Linux 获取指定模块的元信息 minfo命令 使用指南
【Shell 命令集合 系统设置 】Linux 获取指定模块的元信息 minfo命令 使用指南
27 0
|
29天前
|
监控 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 显示网络 连接、路由表和网络接口信息 netstat命令 使用指南
【Shell 命令集合 网络通讯 】Linux 显示网络 连接、路由表和网络接口信息 netstat命令 使用指南
54 1