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,如需转载请自行联系原作者

相关文章
|
3月前
|
存储 监控 安全
在Linux中,⼀个EXT3的文件分区,当使用touch test.file命令创建⼀个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况?
在Linux中,⼀个EXT3的文件分区,当使用touch test.file命令创建⼀个新文件时报错,报错的信息是提示磁盘已满,但是采用df -h命令查看磁盘大小时,只使用了,60%的磁盘空间,为什么会出现这个情况?
|
5天前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
3月前
|
监控 网络协议 Linux
在Linux中,如何实时抓取并显示当前系统中tcp 80 端口的网络数据信息?
在Linux中,如何实时抓取并显示当前系统中tcp 80 端口的网络数据信息?
|
3月前
|
安全 Linux 编译器
在Linux中,如何查看内核版本?内核版本信息包含什么?
在Linux中,如何查看内核版本?内核版本信息包含什么?
|
3月前
|
监控 安全 Linux
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
在Linux中,某个账号登陆linux后,系统会在哪些日志文件中记录相关信息?
|
4月前
|
Linux
|
4月前
|
存储 JSON Linux
|
3月前
|
Linux
Linux系统如何查看版本信息,内核、发行版、cpu、所有版本
Linux系统如何查看版本信息,内核、发行版、cpu、所有版本
114 10
|
2月前
|
Linux API 开发工具
Linux内核开发流程指南 - 8. 获取更多信息【ChatGPT】
Linux内核开发流程指南 - 8. 获取更多信息【ChatGPT】
|
3月前
|
监控 Linux
在Linux中,有⼀个脚本运行时间可能超过2天,如何做才能使其不间断的运行,而且还可以随时观察脚本运行时的输出信息?
在Linux中,有⼀个脚本运行时间可能超过2天,如何做才能使其不间断的运行,而且还可以随时观察脚本运行时的输出信息?