2015-02-13 2 views
1

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

В этот момент я попытался найти stackoverflow для примеров кода, чтобы узнать, как использовать 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())) 

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

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

ответ

1

См: http://www.libtorrent.org/reference-Session.html#save_state_flags_t

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

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

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