2012-04-20 17 views
3

libtorrentでマグネットリンクを使用しているときにtorrent_info()関数で引数を渡す方法を探していました。 特に私の目標は、ピアとピースを分析することです。 .torrentファイルを使用すると、プロセスは、このサイトで明らかにスロー他の特定のパラダイムである:torrent_info()とlibtorrentのPythonバインディングでのマグネットリンク

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

しかし、どのようなマグネットリンクとどうなりますか?磁石で.torrentプロセスの

「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

マグネットリンクを追加すると、急流の情報が得られます(メタデータが取得されると、それ以外の場合はスローされます)。

メタデータが既にここにあるtorrentファイルとは異なり、マグネットリンクではメタデータをネットワークからスターターとして取得する必要があり、時間がかかることがあります。

私はよく、より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)を使用して、メタデータがここにあり何かを行うことを通知することができます。もしあなたがそれを理解できないなら、私はgithubでpingしてください。 –

関連する問題