2012-04-20 2 views
3

libtorrent에서 자석 링크를 사용하는 동안 torrent_info() 함수에서 인수를 전달하는 방법을 검색했습니다. 특히 내 목표는 동료와 조각을 분석하는 것입니다. 토런트 파일의 사용으로 프로세스가이 사이트에서 명백한 던져 다른 주어진 패러다임입니다 :torrent_info() 및 libtorrent 파이썬 바인딩의 자석 링크

e = lt.bdecode(open("torrent.torrent", 'rb').read()) 
info = lt.torrent_info(e) 

그러나이 자석 링크됩니까? 변수 자석의 토런트 프로세스의 "E"에 해당

params = { 
    'save_path': 'C:\Python26', 
    'storage_mode': lt.storage_mode_t(2), 
    'paused': False, 
    'auto_managed': True, 
    'duplicate_is_error': True} 
link = "magnet:?........." 

handle = lt.add_magnet_uri(ses, link, params) 

제대로 작동 torrent_info 사용 할 수 있도록 케이스를 연결?

답변

6

자석 링크를 추가하면 토런트 정보를 얻을 수 있습니다 (메타 데이터를 가져 오면 다른 방법으로 던져 버릴 것입니다).

메타 데이터가 이미있는 토런트 파일과 달리 마그넷 링크는 메타 데이터를 네트워크에서 시작품으로 검색해야하기 때문에 시간이 오래 걸릴 수 있습니다.

나는 잘 더 C++ 라이브러리를 사용하지만 해요 - 당신의 라인에 뭔가를 할 수있는, 더러운에서 데모를 가지고 :

handle = lt.add_magnet_uri(ses, link, params) 
while (not handle.has_metadata()): 
    time.sleep(.1) 
info = handle.get_torrent_info() 

... 다음, 모든 읽을 수 있습니다 그것에 대해 여기에;) http://www.rasterbar.com/products/libtorrent/manual.html#torrent-info

+0

고마워요. 이는 내 프로그램에서 자석 링크 지원을 추가 할 때 유용합니다. – Gabriel

+0

가지고 계신 Python 코드에 상응하는 C++ 코드를 게시 하시겠습니까? – hd1

+0

예. 마그넷 링크를 추가하려면 https://github.com/Roxee/qt-roxeetorrent/blob/master/src/session.cpp#L113 여기에있는 예제를 참조하십시오. 여기 메타 데이터가있는 경우 https://github.com/Roxee/qt-roxeetorrent/blob/master/src/torrenthandle.cpp#L230에서 핸들 정보를 얻으십시오. 모든 코드는 지저분하지만 아이디어를 얻을 수 있습니다. 분명히 우리는 C++에서 "대기"하지 않지만 metadata_received_alert (http://www.rasterbar.com/products/libtorrent/manual.html)를 사용하여 메타 데이터가 여기에 있다는 것을 알리고 뭔가를 할 수 있습니다. 네가 알아낼 수 없다면 나 한테 말하기. –