def getHash(self): """Returns the torrent hash. Adapted from btshowmetainfo.py. """ metainfo_file = open(self.torrentFile, 'rb') metainfo = bdecode(metainfo_file.read()) metainfo_file.close() announce = metainfo['announce'] info = metainfo['info'] #print info info_hash = sha(bencode(info)) return info_hash.hexdigest()
def read(self, file0): file1 = open(file0, 'rb') if file1.read(11) != 'd8:announce': print('%s: Not a BitTorrent metainfo file' % file0) return file1.seek(0) metainfo = bdecode(file1.read()) file1.close() logging.debug("metainfo: {0}".format(metainfo)) self.file0 = file0; self.info = metainfo['info'] self.announce = metainfo['announce'] self.info_hash = sha(bencode(self.info)) self.piece_length = self.info['piece length'] return
def maketorrent(self, filename, request, msg): self._logger.debug('Going to make torrent: %s', filename) def dc(v): #print v pass def prog(amount): #print '%.1f%% complete\r' % (amount * 100), #self._logger.debug('%.1f%% complete', amount * 100) pass config = self.maketorent_config trackers = msg['args']['trackers'] if trackers: tracker = trackers[0] else: tracker = config['tracker_name'] msg['trackers'] = [tracker] try: meta = make_meta_files(bytes(tracker), [filename], progressfunc=prog, filefunc=dc, piece_len_pow2=config['piece_size_pow2'], comment=config['comment'], target=config['target'], filesystem_encoding=config['filesystem_encoding'], use_tracker=config['use_tracker'], data_dir=config['data_dir']) metainfo_file = open(filename + '.torrent', 'rb') metainfo = bdecode(metainfo_file.read()) metainfo_file.close() info = metainfo['info'] info_hash = sha(bencode(info)) msg['args']['sha1'] = info_hash.hexdigest() msg['result'] = 'success' except BTFailure, e: msg['result'] = 'failed' msg['traceback'] = "Excepition BTFailure: %s" % str(e)
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()) metainfo_file.close() announce = metainfo['announce'] 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']:
# see LICENSE.txt for license information from sys import * from os.path import * from sha import * from BitTorrent.bencode import * NAME, EXT = splitext(basename(argv[0])) VERSION = '20021119' print '%s %s - change the suggested filename in a .torrent file' % (NAME, VERSION) print if len(argv) != 3: print '%s file.torrent new.filename.ext' % argv[0] print exit(2) # common exit code for syntax error metainfo_file = open(argv[1], 'rb') metainfo = bdecode(metainfo_file.read()) metainfo_file.close() print 'old filename: %s' % metainfo['info']['name'] metainfo['info']['name'] = argv[2] print 'new filename: %s' % metainfo['info']['name'] metainfo_file = open(argv[1], 'wb') metainfo_file.write(bencode(metainfo)) metainfo_file.close print print 'done.' print
from sys import * from os.path import * from sha import * from BitTorrent.bencode import * NAME, EXT = splitext(basename(argv[0])) VERSION = '20021119' print '%s %s - change the suggested filename in a .torrent file' % (NAME, VERSION) print if len(argv) != 3: print '%s file.torrent new.filename.ext' % argv[0] print exit(2) # common exit code for syntax error metainfo_file = open(argv[1], 'rb') metainfo = bdecode(metainfo_file.read()) metainfo_file.close() print 'old filename: %s' % metainfo['info']['name'] metainfo['info']['name'] = argv[2] print 'new filename: %s' % metainfo['info']['name'] metainfo_file = open(argv[1], 'wb') metainfo_file.write(bencode(metainfo)) metainfo_file.close print print 'done.' print
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()) metainfo_file.close() announce = metainfo['announce'] 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']: