2016-10-10 35 views
0

私はlibtorrent 1.0.9とカスタムバインディング(Pythonで再現可能)を使用しています。時には、メタデータがなくても(200個以上のDHTノードが利用可能)、磁石をダウンロードできないことがあります。私は、この磁石で問題を再現することができるよ:それは非常に迅速にメタデータを取得しメタデータがダウンロードされない

magnet:?xt=urn:btih:565DB305A27FFB321FCC7B064AFD7BD73AEDDA2B&dn=bbb_sunflower_1080p_60fps_normal.mp4&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.publicbt.com%3a80%2fannounce&ws=http%3a%2f%2fdistribution.bbb3d.renderfarming.net%2fvideo%2fmp4%2fbbb_sunflower_1080p_60fps_normal.mp4 

一方、他のトレントクライアントで(qBittorrent、Vuzeは)。次のコードで再現可能です:

import libtorrent as lt 
import time 

session = lt.session() 
session.listen_on(6881, 6891) 
session.add_extension('ut_metadata') 
session.add_extension('ut_pex') 
session.add_extension('metadata_transfer') 
session.add_dht_router("router.utorrent.com", 6881) 
session.add_dht_router("router.bittorrent.com", 6881) 
session.add_dht_router("dht.transmissionbt.com", 6881) 
session.add_dht_router("dht.aelitis.com", 6881) 
session.start_dht() 
session.start_lsd() 
session.start_upnp() 
session.start_natpmp() 

params = { 'save_path': '/tmp/'} 
link ="magnet:?xt=urn:btih:565DB305A27FFB321FCC7B064AFD7BD73AEDDA2B&dn=bbb_sunflower_1080p_60fps_normal.mp4&tr=udp%3a%2f%2ftracker.openbittorrent.com%3a80%2fannounce&tr=udp%3a%2f%2ftracker.publicbt.com%3a80%2fannounce&ws=http%3a%2f%2fdistribution.bbb3d.renderfarming.net%2fvideo%2fmp4%2fbbb_sunflower_1080p_60fps_normal.mp4" 
handle = lt.add_magnet_uri(session, link, params) 

print('downloading metadata...') 
while (not handle.has_metadata()): 
    status=session.status() 
    print('dht nodes: ', status.dht_nodes) 
    time.sleep(1) 
print ('got metadata, starting torrent download...') 
while (handle.status().state != lt.torrent_status.seeding): 
    print('%d %% done' % (handle.status().progress*100)) 
    time.sleep(1) 

私は間違っていますか?

答えて

2

これは、DHTの最初の応答でノードのノードIDを変更する(外部IPアドレスと一致するように、this postを参照)1.0.xシリーズの問題が原因である可能性があります。

これは、DHTノードを再起動することで行います。その時に発表された飛行機のトレントは失われます。次のアナウンスのために15分待って、アナウンスを通過させるべきです。別のオプションは、最初のトレントをセッションに追加する前にdht_bootstrap_alertを待つことです。

この問題は、1.1.xリリースで修正されています。

+0

ありがとうございました!それは私をナッツを運転していた – user37741

関連する問題