示例#1
0
def torrent2magnet(torrent, rich=False):
    metadata = bencode.bdecode(torrent)
    hashcontents = bencode.bencode(metadata['info'])
    digest = hashlib.sha1(hashcontents).digest()
    b32hash = base64.b32encode(digest)
    magnet = 'magnet:?xt=urn:btih:{}'.format(b32hash)

    if rich:
        params = ObjectDict()
        params.xt = 'urn:btih:{}'.format(b32hash)
        params.dn = metadata['info']['name']
        params.tr = metadata['announce']
        if 'length' in metadata['info']:
            params.xl = metadata['info']['length']
        paramstr = urllib.urlencode(params)
        magnet = 'magnet:?{}'.format(paramstr)

    return magnet, metadata['info']