Как вы получаете общий размер торрента в 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
Другие вопросы по тегам