2016-10-10 16 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