Blame | Last modification | View Log | Download
#!/usr/bin/env python# Written by Henry 'Pi' James and Loring Holden# modified for multitracker display by John Hoffman# see LICENSE.txt for license informationfrom sys import *from os.path import *from sha import *from BitTornado.bencode import *NAME, EXT = splitext(basename(argv[0]))VERSION = '20030621'print '%s %s - decode BitTorrent metainfo files' % (NAME, VERSION)if len(argv) == 1:print '%s file1.torrent file2.torrent file3.torrent ...' % argv[0]exit(2) # common exit code for syntax errorfor metainfo_name in argv[1:]:metainfo_file = open(metainfo_name, 'rb')metainfo = bdecode(metainfo_file.read())# print metainfoinfo = metainfo['info']info_hash = sha(bencode(info))print 'metainfo file.: %s' % basename(metainfo_name)print 'info hash.....: %s' % info_hash.hexdigest()piece_length = info['piece length']if info.has_key('length'):# let's assume we just have a fileprint 'file name.....: %s' % info['name']file_length = info['length']name ='file size.....:'else:# let's assume we have a directory structureprint 'directory name: %s' % info['name']print 'files.........: 'file_length = 0;for file in info['files']:path = ''for item in file['path']:if (path != ''):path = path + "/"path = path + itemprint ' %s (%d)' % (path, file['length'])file_length += file['length']name ='archive size..:'piece_number, last_piece_length = divmod(file_length, piece_length)print '%s %i (%i * %i + %i)' \% (name,file_length, piece_number, piece_length, last_piece_length)print 'announce url..: %s' % metainfo['announce']if metainfo.has_key('announce-list'):list = []for tier in metainfo['announce-list']:for tracker in tier:list+=[tracker,',']del list[-1]list+=['|']del list[-1]liststring = ''for i in list:liststring+=iprint 'announce-list.: %s' % liststringif metainfo.has_key('httpseeds'):list = []for seed in metainfo['httpseeds']:list += [seed,'|']del list[-1]liststring = ''for i in list:liststring+=iprint 'http seeds....: %s' % liststringif metainfo.has_key('comment'):print 'comment.......: %s' % metainfo['comment']