Beispiel #1
0
 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()
Beispiel #2
0
    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)
Beispiel #4
0
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']:
Beispiel #5
0
# 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
Beispiel #6
0
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
Beispiel #7
0
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']: