1

私は問題があります。私は C/C++ プログラマーではないので、libtorrent のドキュメントはよくわかりません。libtorrent の python ドキュメントのように見つけるドキュメントはありません。

この時点で、セッションで save_state と load_state を使用する方法を見つけるために、stackoverflow でコード例を検索しようとしました。

誰かが私に例を挙げたり、セッション状態を保存して後でロードする方法を説明したりできますか?

目標は、プロセスの再起動時にすべての torrent を再開することです。

ses = libtorrent.session()
ses.listen_on(6881, 6891)

if os.path.isfile('./tempfile'):
    with open('./tempfile', 'wb+') as temp_file:
        ses.load_state(
            libtorrent.bdecode(temp_file.read())
        )
 params = {
            'save_path': '/home/downloads/',
            'storage_mode': libtorrent.storage_mode_t(2),
            'paused': False,
            'auto_managed': True,
            'duplicate_is_error': True
        }
        link = "magnet:?xt=urn:btih:4MR6HU7SIHXAXQQFXFJTNLTYSREDR5EI&tr=http://tracker.vodo.net:6970/announce"
        handle = libtorrent.add_magnet_uri(ses, link, params)
        while not handle.has_metadata():
            time.sleep(1)
with open('./tempfile', 'wb+') as temp_file:
    temp_file.write(libtorrent.bencode(ses.save_state()))

更新 torrent ハンドルで save_state_resume() を使用すると、何も返されませんか? 「pydoc libtorrent > libtorrentDoc.txt」を実行すると、参照および検索に役立つドキュメントが得られることがわかりました。この時点で、マグネットをセッションに再度追加し、上記のコードを使用します。

多分誰かがより効率的な方法を持っていますか?

4

1 に答える 1

1

参照: http://www.libtorrent.org/reference-Session.html#save_state_flags_t

save_state はトレント自体を気にしないように見えますが、それはセッション状態自体を復元する方法です。

Python はわかりませんが、以前は Luatorrent と呼ばれる Libtorrent の Lua バインディングを使用していました。すべての torrent をテーブル/配列に保存し、シャットダウン時にテーブル/配列をループして、各 torrent の一時停止ステータスと関連するものを取得しました。統計は、save_resume_data() ファイルを作成し、急流を停止し、セッションを終了します。

取得したデータを使用して、AppData に .dat ファイルを保存し、次にクライアントを実行したときに再度ロードできるようにします。これにより、実行中のトレントが開始され、一時停止していたトレントが一時停止され、% 完了のデータが含まれます。等

于 2015-02-21T14:13:24.313 に答える