Как установить активные загрузки в сеансе с libtorrent / Python - PullRequest
1 голос
/ 08 октября 2019

Я пытаюсь сделать скрипт для загрузки файлов в python. Пока все хорошо с настройками по умолчанию для сессии. но когда я пытаюсь установить «активные загрузки», он просто не загружается. Я уверен, что я делаю это неправильно, но я не знаю где. По умолчанию для активных загрузок в libtorrent - 3. Как мне изменить настройки сеанса? Я действительно новичок в Python.

Вот код:


import libtorrent as lt
sett = lt.session_settings()
sett = {'allow_multiple_connections_per_ip': True,
  'active_downloads': -1,
  'active_checking': -1,
  'active_seeds': 7,
  'active_limit': -1}

ses = lt.session()
ses.listen_on(6881, 6891)
ses.set_settings(sett)
downloads = []

Вот где я должен положить торрент. Документация говорит, что я должен установить для auto_managed значение false, чтобы изменить активные загрузки.

source = 'downloads/torrents/'
params = {
    "save_path": "/download/",
    "ti": lt.torrent_info(list(source.keys())[0]),
    'auto_managed': False,
}
downloads.append(ses.add_torrent(params))

, и здесь код выполняется.

import time
from IPython.display import display
import ipywidgets as widgets

state_str = [
    "queued",
    "checking",
    "downloading metadata",
    "downloading",
    "finished",
    "seeding",
    "allocating",
    "checking fastresume",
]

layout = widgets.Layout(width="auto")
style = {"description_width": "initial"}
download_bars = [
    widgets.FloatSlider(
        step=0.01, disabled=True, layout=layout, style=style
    )
    for _ in downloads
]
display(*download_bars)

while downloads:
    next_shift = 0
    for index, download in enumerate(downloads[:]):
        bar = download_bars[index + next_shift]
        if not download.is_seed():
            s = download.status()

            bar.description = " ".join(
                [
                    download.name(),
                    str(s.download_rate / 1000),
                    "kB/s down,",
                    str(s.upload_rate / 1000),
                    "kB/s Up,",                 
                    str(s.num_peers),
                    "Peers",
                    state_str[s.state],
                ]
            )
            bar.value = s.progress * 100

        else:
            next_shift -= 1
            ses.remove_torrent(download)
            downloads.remove(download)
            bar.close()
            download_bars.remove(bar)
            print(download.name(), "done")
        time.sleep(5)

До того как я работал отличнопопытался изменить настройки в первой части и изменить auto_managed. Так что я полагаю, может быть, это не так. Мне понравилась вся документация, но я не знаю, как ее применить. кто-нибудь может мне помочь?

Извините за мой плохой английский

Ответы [ 2 ]

0 голосов
/ 10 октября 2019

Итак, вот как должен начинаться сеанс для загрузки нескольких торрентов. Установите сеанс, установите параметры и примените эти параметры к сеансам.

ses = lt.session()
ses.listen_on(6881, 6891)
sett = lt.session_settings()
sett = {'allow_multiple_connections_per_ip': True,
  'dont_count_slow_torrents': True,
  'active_downloads': -1,
  'active_seeds': 7,
  'active_checking': 3,}

ses.set_settings(sett)

downloads = []

И да. auto_managed не нужно устанавливать как False. Спасибо за помощь -

0 голосов
/ 09 октября 2019

параметры ограничения торрента, как указано в документации , только применяются к торрентам с "автоматическим управлением". установка auto_managed в значение false для торрента - это способ отказаться от встроенной в libtorrent логики автоматического запуска / остановки / очереди. По умолчанию это правда, и по умолчанию libtorrent ограничит количество одновременных загрузок торрентов.

...