python libtorrent如何从info_hash获取torrent的文件列表?

时间:2014-11-23 04:20:41

标签: libtorrent torrent info-hash

def magnet2torrent(id, info_hash):

    info_hash_id=id

    magnet="magnet:?xt=urn:btih:"+info_hash

    ses = lt.session()
    params = {
        'save_path': './',
        'duplicate_is_error': True,
        'storage_mode': lt.storage_mode_t(2),
        'paused': False,
        'auto_managed': True,
        'duplicate_is_error': True
    }
    handle = lt.add_magnet_uri(ses, magnet, params)

    print("Downloading Metadata (this may take a while)")
    i = 0;
    while (not handle.has_metadata()):
#        i = i+1
        if i > 300 :
            return
        sleep(1)
    ses.pause()
    print("Done")

    torinfo = handle.get_torrent_info()
    con = db.get_conncetion()
    cur = con.cursor()
    for f in 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获取torrent文件,那么我可以从torrent文件中获取文件列表。

但是当我运行我的代码时     

while (not handle.has_metadata()):
没有结束。 但像http://magnet2torrent.com这样的网页立刻给了我洪流

如何从info_hash获取文件列表?

1 个答案:

答案 0 :(得分:2)

如果您的磁力链接中没有任何跟踪器,则需要启动DHT。您可以通过致电:

来做到这一点
ses.add_dht_router("router.utorrent.com", 6881)
ses.start_dht()
构建会话对象后