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']