マグネットURIからトレントをダウンロードするには、次のコードがあります。 2キロバイト、ファイル1 - - 300メガバイト、ファイル3〜2キロバイトそれが動作libtorrentのダウンロードでファイルをディスクに書き込むことを完全にスキップする方法は?
#python
#lt.storage_mode_t(0) ## tried this, didnt work
ses = lt.session()
params = { 'save_path': "/save/here"}
ses.listen_on(6881,6891)
ses.add_dht_router("router.utorrent.com", 6881)
#ses = lt.session()
link = "magnet:?xt=urn:btih:395603fa..hash..."
handle = lt.add_magnet_uri(ses, link, params)
while (not handle.has_metadata()):
time.sleep(1)
handle.pause() # got meta data paused, and set priority
handle.file_priority(0, 1)
handle.file_priority(1,0)
handle.file_priority(2,0)
print handle.file_priorities()
#output is [1,0,0]
#i checked no files written into disk yet.
handle.resume()
while (not handle.is_finished()):
time.sleep(1) #wait until download
が、しかし、この特定の急流では、3つのファイル、ファイル0があります。
ファイルから見ることができるように、ファイル0は優先度1を持ち、残りは優先度0です(つまりダウンロードしません)。
問題は、0ファイルのダウンロードが完了したら、それを停止してもうダウンロードしないことです。 1つのファイル(部分的に、場合によっては100MB、または200MB、時にはカップルのkbと時にはファイル全体をダウンロードすることもあります)。
だから私の質問は:どのように私は0を提出してくださいすることができますがダウンロードされ、そしてない1と2
EDIT:私は、私は、メタデータを持っているかどうかチェックし、設定された優先度と、その後の再開を追加しましたしかし、これはまだ2番目のファイルを部分的にダウンロードします。
トレントのダウンロードを開始する前に、トレント、ファイル数+サイズ、ピア数に関するメタデータが必要なので、メタデータを取得してプライオリティを設定できますか?またはメタデータを取得する前に優先順位を設定する必要がありますか? – mur
私はコードを更新しました。メタデータのダウンロード、トレントの一時停止、優先度の設定を待ってから再開し、handle.is_finishedがtrueになるまでループします。しかし、それはまだこのレースを作成します。つまり、2番目のファイルがダウンロードされます – mur