利用python開源庫製作並驗證torrent種子檔案
阿新 • • 發佈:2019-02-17
下面的文章來源於參考文獻[1], 這裡將我的實踐過程記錄如下,方便後來人參考,我的作業系統是Ubuntu 14.04 64bit
一.安裝開源BT種子製作軟體包
cd /home/taoyx/下載/
wget http://jaist.dl.sourceforge.net/project/mktorrent/mktorrent/1.0/mktorrent-1.0.tar.gz
tar zxvf mktorrent-1.0.tar.gz
cd mktorrent-1.0
make
sudo make install
安裝完成後,使用下面的命令檢視mktorrent是否在下面的目錄中
which mktorrent
/usr/local/bin/mktorrent
二.安裝python的bencode模組,以便用來獲取BT種子檔案資訊,
wget https://pypi.python.org/packages/source/b/bencode/bencode-1.0.tar.gz
tar zxvf bencode-1.0.tar.gz
cd bencode-1.0.tar.gz
sudo python setup.py install
三.利用下面的python指令碼make_torrent.py來製作和驗證BT種子檔案資訊, 注意,如果只製作而不驗證, 直接在python中呼叫下面的命令列就可以了.
#!/usr/bin/env python #encoding: utf-8 import os, re, time, sys import hashlib, bencode if len(sys.argv) != 3: print 'usage: %s <src_file> <dst_file>' % sys.argv[0] sys.exit(1) bt_file = sys.argv[1] bt_torrent = sys.argv[2] if os.path.exists(bt_torrent): os.remove(bt_torrent) if os.path.exists(bt_file): #make torrent ...... cmd = '/usr/local/bin/mktorrent -v -p -l 18 -a http://bt1.text.cn/announce -a http://bt2.text.cn/announce -o %s %s' \ % (bt_torrent, bt_file) #validate torrent info result = os.popen(cmd).readlines()[-1].strip() if 'done' in result: bt_path = {} bt_filename = open(bt_torrent, 'rb') bt_info = bencode.bdecode(bt_filename.read()).get('info') bt_info_hash_hex = hashlib.sha1(bencode.bencode(bt_info)).hexdigest() if os.path.isdir(bt_file): bt_file_size = 0 for length in bt_info.get('files'): 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_filename.close() print bt_path print "Create torrent success" else: print "Create torrent fail" sys.exit(1) else: print "The specified source can not find" sys.exit(0)
下面是呼叫效果圖
參考文獻