Скачать торрент через python

#python-3.x #video-streaming #torrent #libtorrent

#python-3.x #потоковое видео #торрент #libtorrent

Вопрос:

Я искал по всему Интернету информацию о том, как загружать торрент-файлы через python. Единственное, что мне удалось найти, это libtorrent, проблема с ним в том, что нет четкой документации.

Моя первоначальная цель — по крайней мере, подключить поток во время его загрузки к окну cv2 для его потоковой передачи.

Мне удалось сделать это с помощью YouTube, а также перенести файл mp4 в окно и транслировать его (используя Pyfy), есть ли способ сделать это с помощью python?

или я захожу слишком далеко, и можно загружать торрент-контент с помощью запросов или чего-то еще?

Комментарии:

1. Если вас интересует потоковое видео, в NodeJS есть несколько отличных библиотек, таких как github.com/KiraLT/torrent-stream-server и webtorrent.io . К сожалению, в python нет ничего подобного (я искал некоторое время назад, но не нашел ни одной приличной библиотеки).

2. В том-то и дело, что я хотел создать что-то вроде Stremio, который строится с использованием NodeJS. Ну, думаю, мне придется сначала изучить Node.

3. Если у вас много терпения, вы все равно можете попробовать использовать python. Я нашел несколько библиотек, но у них не было никакой документации. Я пытался читать исходный код, но потерял терпение и перешел на NodeJS. В будущем я планирую вернуться и попробовать использовать python, если я не решу все проблемы с производительностью NodeJS. В любом случае, вы можете присоединиться на github.com/KiraLT/torrent-stream-server проект, любая помощь будет оценена по достоинству.

Ответ №1:

BitTorrent не похож на HTTP. Файлы загружаются и загружаются не по порядку. Файлы необходимо сохранять на диск, отчасти для того, чтобы иметь возможность загружать их позже, а отчасти потому, что файлы (как правило) бесполезны, пока не будет загружен весь файл. Файлы восстанавливаются на диске.

Если вы хотите транслировать контент с торрента, вам придется выполнить некоторые дополнительные шаги самостоятельно.

в libtorrent есть set_piece_deadline() (docs), чтобы указать, что вы хотите получить фрагмент в ближайшее время, это повлияет на выбор фрагмента для определения приоритета этого фрагмента. Вы также можете установить флаг ( alert_when_available ), чтобы указать, что вы хотите получать уведомление (оповещение), когда данные будут доступны вместе с буфером.