python libtorrent save_state

У меня проблема. Я не программист на C/C++, и документация по libtorrent мне не совсем понятна. Там нет документов, чтобы найти, как документы на Python для libtorrent.

В этот момент я попытался найти в стеке поток примеров кода, чтобы узнать, как использовать save_state и load_state для сеанса.

Кто-нибудь может дать мне пример или объяснить, как я могу сохранить состояние сеанса и загрузить его позже?

Цель состоит в том, чтобы возобновить все торренты при перезапуске процесса.

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()))

update При использовании save_state_resume() на дескрипторе торрента он также не возвращает ничего? Я обнаружил, что выполнение "pydoc libtorrent > libtorrentDoc.txt" дает мне полезный документ для просмотра и поиска. В этот момент я снова добавляю магниты к сеансам и использую приведенный выше код.

Может быть, у кого-то есть более эффективный способ?

1 ответ

Решение

Смотрите: http://www.libtorrent.org/reference-Session.html

Похоже, что save_state не заботится о самих торрентах, но это метод для восстановления самого состояния сеанса.

Я не знаю Python, но раньше я использовал привязку Lua к Libtorrent с именем Luatorrent, и я просто сохранял все торренты в таблице / массиве, затем при выключении я перебирал таблицу / массив и получал статус паузы каждого торрента вместе с соответствующими Затем создайте файл save_resume_data(), остановите торрент и завершите сеанс.

С данными, которые я получил, я бы затем сохранил файл.dat в AppData, который можно было бы загрузить снова при следующем запуске клиента, и он запустил бы то, что торренты работали, и приостановил те, которые были приостановлены, и в нем были бы данные для% complete и т.п.

Другие вопросы по тегам