Python/Libtorrent:从磁铁 link 中检索元数据而不下载文件
Python/Libtorrent: Retrieve metadata from a magnet link without downloading files
我试图只获取 torrent 名称或 torrent 中的文件列表,而不实际下载它们。
这是我当前的代码,它可以正常运行但速度很慢,因为它会下载 torrent 内容。
import libtorrent as lt
import time
ses = lt.session()
params = {
'save_path': 'media/',
'storage_mode': lt.storage_mode_t(2),
'paused': False,
'auto_managed': True,
'duplicate_is_error': True
}
handle = lt.add_magnet_uri(ses, "magnet:?xt=urn:btih:9fea16aff4ece16e04f98321668a265f0fd22b7e&dn=archlinux-2017.08.01-x86_64.iso&tr=udp://tracker.archlinux.org:6969&tr=http://tracker.archlinux.org:6969/announce", params)
while(not handle.has_metadata()):
time.sleep(1)
print(handle.get_torrent_info().name())
我也尝试过使用 lt.parse_magnet_uri()
,但这不是 return 我正在寻找的东西,或者任何真正超过信息哈希的东西。
我最终利用 params
中的 'file_priorities'
属性 解决了我的问题。然而,这仍然会下载文件,直到元数据被检索到,所以我只是将它们保存到一个临时目录。
import libtorrent as lt
import time
import tempfile
ses = lt.session()
params = {
'save_path': tempfile.mkdtemp(),
'storage_mode': lt.storage_mode_t(2),
'auto_managed': True,
'file_priorities': [0]*5
}
handle = lt.add_magnet_uri(ses, "magnet:?xt=urn:btih:9fea16aff4ece16e04f98321668a265f0fd22b7e&dn=archlinux-2017.08.01-x86_64.iso&tr=udp://tracker.archlinux.org:6969&tr=http://tracker.archlinux.org:6969/announce", params)
while(not handle.has_metadata()):
time.sleep(1)
print(handle.get_torrent_info().name())
我试图只获取 torrent 名称或 torrent 中的文件列表,而不实际下载它们。
这是我当前的代码,它可以正常运行但速度很慢,因为它会下载 torrent 内容。
import libtorrent as lt
import time
ses = lt.session()
params = {
'save_path': 'media/',
'storage_mode': lt.storage_mode_t(2),
'paused': False,
'auto_managed': True,
'duplicate_is_error': True
}
handle = lt.add_magnet_uri(ses, "magnet:?xt=urn:btih:9fea16aff4ece16e04f98321668a265f0fd22b7e&dn=archlinux-2017.08.01-x86_64.iso&tr=udp://tracker.archlinux.org:6969&tr=http://tracker.archlinux.org:6969/announce", params)
while(not handle.has_metadata()):
time.sleep(1)
print(handle.get_torrent_info().name())
我也尝试过使用 lt.parse_magnet_uri()
,但这不是 return 我正在寻找的东西,或者任何真正超过信息哈希的东西。
我最终利用 params
中的 'file_priorities'
属性 解决了我的问题。然而,这仍然会下载文件,直到元数据被检索到,所以我只是将它们保存到一个临时目录。
import libtorrent as lt
import time
import tempfile
ses = lt.session()
params = {
'save_path': tempfile.mkdtemp(),
'storage_mode': lt.storage_mode_t(2),
'auto_managed': True,
'file_priorities': [0]*5
}
handle = lt.add_magnet_uri(ses, "magnet:?xt=urn:btih:9fea16aff4ece16e04f98321668a265f0fd22b7e&dn=archlinux-2017.08.01-x86_64.iso&tr=udp://tracker.archlinux.org:6969&tr=http://tracker.archlinux.org:6969/announce", params)
while(not handle.has_metadata()):
time.sleep(1)
print(handle.get_torrent_info().name())