Python實(shí)現(xiàn)解析Bit Torrent種子文件內(nèi)容的方法
本文實(shí)例講述了Python實(shí)現(xiàn)解析BitTorrent種子文件內(nèi)容的方法。分享給大家供大家參考,具體如下:
有很多種子文件,有時候記不清里面都是什么東西,又不想一個一個的拖放到迅雷或BT軟件里頭看,
上網(wǎng)查了一下Python的腳本,自己也稍微修改了一下,代碼如下,粘貼到文本編輯器中:
保存成py后綴的,直接運(yùn)行
import re
def tokenize(text, match=re.compile("([idel])|(/d+):|(-?/d+)").match):
i = 0
while i < len(text):
m = match(text, i)
s = m.group(m.lastindex)
i = m.end()
if m.lastindex == 2:
yield "s"
yield text[i:i+int(s)]
i = i + int(s)
else:
yield s
def decode_item(next, token):
if token == "i":
# integer: "i" value "e"
data = int(next())
if next() != "e":
raise ValueError
elif token == "s":
# string: "s" value (virtual tokens)
data = next()
elif token == "l" or token == "d":
# Container: "l" (or "d") values "e"
data = []
tok = next()
while tok != "e":
data.append(decode_item(next, tok))
tok = next()
if token == "d":
data = dict(zip(data[0::2], data[1::2]))
else:
raise ValueError
return data
def decode(text):
try:
src = tokenize(text)
data = decode_item(src.next, src.next())
for token in src: # look for more tokens
raise SyntaxError("trailing junk")
except (AttributeError, ValueError, StopIteration):
raise SyntaxError("syntax error")
return data
if __name__ == "__main__":
#需要讀取的文件名稱放到這里
data = open("The_Shawshank_Redemption.torrent", "rb").read()
torrent = decode(data)
myfile = file("testit.txt", 'w')
a = u'文件名稱'.encode('gbk')
b = u'文件大小'.encode('gbk')
print "%s /t %s /n" % (a,b)
for file in torrent["info"]["files"]:
print "%s /t %d Mb " % ("/".join(file["path"]), file["length"]/1024/1024)
print "-----------------------------------------------------------------"
注意要保存成Utf-8格式的文件,不能使用ASCII編碼格式保存,否則中文會亂碼或無法編譯
PS:這里再為大家推薦一款相關(guān)的在線工具供大家參考使用:
在線BT種子torrent/磁性鏈接在線轉(zhuǎn)換工具:
http://tools.jb51.net/aideddesign/bt2mag
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python文件與目錄操作技巧匯總》、《Python文本文件操作技巧匯總》、《Python URL操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python編碼操作技巧總結(jié)》
希望本文所述對大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
python調(diào)用c++返回帶成員指針的類指針實(shí)例
今天小編就為大家分享一篇python調(diào)用c++返回帶成員指針的類指針實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
協(xié)程Python 中實(shí)現(xiàn)多任務(wù)耗資源最小的方式
協(xié)程是 Python 中另外一種實(shí)現(xiàn)多任務(wù)的方式,只不過比線程更小,占用更小執(zhí)行單元(理解為需要的資源)。這篇文章主要介紹了協(xié)程Python 中實(shí)現(xiàn)多任務(wù)耗資源最小的方式,需要的朋友可以參考下2020-10-10
python 讀取.csv文件數(shù)據(jù)到數(shù)組(矩陣)的實(shí)例講解
今天小編就為大家分享一篇python 讀取.csv文件數(shù)據(jù)到數(shù)組(矩陣)的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
python 3.74 運(yùn)行import numpy as np 報(bào)錯lib\site-packages\numpy\_
這篇文章主要介紹了python 3.74 運(yùn)行import numpy as np 報(bào)錯lib\site-packages\numpy\__init__.py,原來需要更新一下numpy即可2019-10-10
Python3 XML 獲取雅虎天氣的實(shí)現(xiàn)方法
下面小編就為大家分享一篇Python3 XML 獲取雅虎天氣的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02
Python 測試框架unittest和pytest的優(yōu)劣
這篇文章主要介紹了Python 測試框架unittest和pytest的優(yōu)劣,幫助大家更好的進(jìn)行python程序的測試,感興趣的朋友可以了解下2020-09-09

