| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #!/usr/bin/env python
- # Written by Henry 'Pi' James and Loring Holden
- # modified for multitracker display by John Hoffman
- # see LICENSE.txt for license information
- # $Id: btshowmetainfo.py 2054 2006-12-30 16:57:55Z b4rt $
- from 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)
- print
- if len(argv) == 1:
- print '%s file1.torrent file2.torrent file3.torrent ...' % argv[0]
- print
- exit(2) # common exit code for syntax error
- for metainfo_name in argv[1:]:
- metainfo_file = open(metainfo_name, 'rb')
- metainfo = bdecode(metainfo_file.read())
- # print metainfo
- info = 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 file
- print 'file name.....: %s' % info['name']
- file_length = info['length']
- name ='file size.....:'
- else:
- # let's assume we have a directory structure
- print '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 + item
- print ' %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+=i
- print 'announce-list.: %s' % liststring
- if metainfo.has_key('httpseeds'):
- list = []
- for seed in metainfo['httpseeds']:
- list += [seed,'|']
- del list[-1]
- liststring = ''
- for i in list:
- liststring+=i
- print 'http seeds....: %s' % liststring
- if metainfo.has_key('comment'):
- print 'comment.......: %s' % metainfo['comment']
|