Как вы получаете общий размер торрента в libtorrent?
Как узнать общий размер файлов в торренте?
И есть ли способ получить количество файлов в торренте и размер каждого из них?
4 ответа
h = ses.add_torrent(params)
s = h.status()
while (not h.is_seed()):
print s.total_wanted # prints total size wanted after meta data is obtained, before that 0 is printed.
Если вы посмотрите на C++ API, вы обнаружите, что torrent-info
а также file_iterator
методы немного вниз по странице дают вам информацию, которую вы ищете. Раздел привязок Python гласит:
Интерфейс python практически идентичен интерфейсу C++.
Таким образом, вы должны быть в состоянии добраться до этих методов с небольшим усилием.
Использование torrent_parser:
import torrent_parser as tp
torrent_metadata = tp.parse_torrent_file("file.torrent")
totalsize = 0
for file in torrent_metadata['info']['files']:
totalsize += file['length']
print(totalsize)
/usr/local/bin/torrent-size.py
#!/usr/bin/env python3
import libtorrent
import sys
torsize = 0
info = libtorrent.torrent_info(str(sys.argv[1]))
for f in info.files():
torsize += f.size
print(torsize/1048576, "MB")
Это даст вам размер файла для торрента, предоставленного в качестве первого параметра скрипта. Ниже приведены инструкции по установке libtorrent и привязок libtorrent для python. Если вы получаете сообщение об ошибке cxxstd в Ubuntu, вам необходимо загрузить boost 1.76, загрузить его, установить, затем скопировать исходный каталог в / usr / share / boost-build и экспортировать BOOST_ROOT= / usr / share / boost-build и экспорт BOOST_BUILD= / usr / share / boost-build.
macOS:
brew install boost boost-build openssl@1.1 python3
git clone --recurse-submodules https://github.com/arvidn/libtorrent.git
cd libtorrent
echo "using darwin ;" >>~/user-config.jam
python3 setup.py build_ext --b2-args="cxxstd=14 openssl-include=/usr/local/opt/openssl@1.1/include dht=on asserts=production encryption=on crypto=openssl variant=release deprecated-functions=on i2p=on extensions=on streaming=on mmap-disk-io=on" install
echo '#!/usr/bin/env python3\n\nimport libtorrent\nimport sys\n\ntorsize = 0\ninfo = libtorrent.torrent_info(str(sys.argv[1]))\nfor f in info.files():\n\ttorsize += f.size\nprint(torsize/1048576, "MB")' > /usr/local/bin/torrent-size.py
chmod 0755 /usr/local/bin/torrent-size.py
torrent-size.py example.torrent
* бунту / дебиан / кали
sudo apt-get install libboost-tools-dev libboost-dev libboost-system-dev python3-all python3-dev build-essential gcc openssl
git clone --recurse-submodules https://github.com/arvidn/libtorrent.git
cd libtorrent
echo "using gcc ;" >>~/user-config.jam
python3 setup.py build_ext --b2-args="cxxstd=14 dht=on asserts=production encryption=on crypto=openssl variant=release deprecated-functions=on i2p=on extensions=on streaming=on mmap-disk-io=on" install
echo '#!/usr/bin/env python3\n\nimport libtorrent\nimport sys\n\ntorsize = 0\ninfo = libtorrent.torrent_info(str(sys.argv[1]))\nfor f in info.files():\n\ttorsize += f.size\nprint(torsize/1048576, "MB")' > /usr/local/bin/torrent-size.py
chmod 0755 /usr/local/bin/torrent-size.py
torrent-size.py example.torrent