python libtorrent Как получить список файлов торрента из info_hash?

def magnet2torrent(id, info_hash):

    info_hash_id= идентификатор

    магнит ="магнит: х = урна:btih:"+info_hash

    ses = lt.session()
    params = {
        'save_path': './',
        'duplicate_is_error': True,
        'storage_mode': lt.storage_mode_t(2),
        "остановлен": ложно,
        'auto_managed': правда,
        'duplicate_is_error': True
    }
    handle = lt.add_magnet_uri(ses, magnet, params)

    print("Загрузка метаданных (это может занять некоторое время)")
    я = 0;
    while (не handle.has_metadata()):
# я = я +1
        если я> 300:
            вернуть
        спать (1)
    ses.pause()
    печать ("Готово")

    torinfo = handle.get_torrent_info()
    con = db.get_conncetion()
    cur = con.cursor()
    для f в torinfo:
        cur.execute("INSERT INTO file_list (info_hash_id, name, size) VALUES (\""+str(info_hash_id)+"\", \""+str(f.path)+"\", "+str(f.size)+");")
        print("INSERT INTO file_list (info_hash_id, name, size) VALUES (\""+str(info_hash_id)+"\", \""+str(f.path)+"\", "+str(f.size)) +");")
        con.commit()
        cur.close()
        con.close()

Я думаю, что если я могу получить торрент-файл из info_hash, то я могу получить список файлов из торрент-файла.

но когда я запускаю свой код

 while (не handle.has_metadata ()): 
не закончено но веб-страница, такая как http://magnet2torrent.com/, сразу же дает мне торрент

Как я могу получить список файлов из info_hash?

1 ответ

Решение

Если у вас нет трекеров в ваших магнитных ссылках, вам нужно запустить DHT. Вы можете сделать это, позвонив:

ses.add_dht_router("router.utorrent.com", 6881)
ses.start_dht()

после построения объекта сеанса.

Другие вопросы по тегам