python libtorrent save_state
python libtorrent save_state
我有问题。我不是 C/C++ 程序员,libtorrent 文档对我来说不是很清楚。找不到像 libtorrent 的 python 文档那样的文档。
此刻我尝试在 Whosebug 上搜索代码示例,以了解如何使用 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()))
更新
在 Torrent 句柄上使用 save_state_resume() 时它也会 returns none?
我发现执行 'pydoc libtorrent > libtorrentDoc.txt' 会给我一个有用的文档来浏览和搜索。此时我重新将磁铁添加到会话中并使用上面的代码。
也许有人有更有效的方法?
参见:http://www.libtorrent.org/reference-Session.html#save_state_flags_t
看起来 save_state 不关心种子本身,但这是恢复会话状态本身的方法。
我不知道 Python 但我之前使用了一个名为 Luatorrent 的 Libtorrent Lua 绑定,我只是将所有种子存储在 table/array 然后shutdown 我会遍历 table/array 并获取每个 torrent 的暂停状态以及相关统计信息,然后创建一个 save_resume_data() 文件停止 torrent 然后结束会话。
根据我得到的数据,我会在 AppData 中存储一个 .dat 文件,下次客户端 运行 时可以再次加载该文件,这将启动 运行ning 和暂停那些被暂停的,它会有 % complete 等的数据。
我有问题。我不是 C/C++ 程序员,libtorrent 文档对我来说不是很清楚。找不到像 libtorrent 的 python 文档那样的文档。
此刻我尝试在 Whosebug 上搜索代码示例,以了解如何使用 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()))
更新 在 Torrent 句柄上使用 save_state_resume() 时它也会 returns none? 我发现执行 'pydoc libtorrent > libtorrentDoc.txt' 会给我一个有用的文档来浏览和搜索。此时我重新将磁铁添加到会话中并使用上面的代码。
也许有人有更有效的方法?
参见:http://www.libtorrent.org/reference-Session.html#save_state_flags_t
看起来 save_state 不关心种子本身,但这是恢复会话状态本身的方法。
我不知道 Python 但我之前使用了一个名为 Luatorrent 的 Libtorrent Lua 绑定,我只是将所有种子存储在 table/array 然后shutdown 我会遍历 table/array 并获取每个 torrent 的暂停状态以及相关统计信息,然后创建一个 save_resume_data() 文件停止 torrent 然后结束会话。
根据我得到的数据,我会在 AppData 中存储一个 .dat 文件,下次客户端 运行 时可以再次加载该文件,这将启动 运行ning 和暂停那些被暂停的,它会有 % complete 等的数据。