- PVSM.RU - https://www.pvsm.ru -
Популярные в последнее время слухи о блокировке торрент-трекеров (или уже не слухи? [1]) побудили меня написать свой парсер для сайта rutracker.org. В данной статье я опишу опции для скрипта, выходные данные. Также прилагается просмотрщик с возможность поиска по категориям, и база раздач с описаниями от 16.01.2016.
python3 ./loader.py [5] --ids 0000001 5160000 --threads 200 --qsize 25 --resume
Опция | Описание |
---|---|
--ids 0000001 0001000 | качает раздачи в указанном диапазоне |
--ids_file file_with_ids.txt | берет номера раздач для скачивания из указанного файла |
--ids_ignore old_finish.txt | исключает из закачки раздачи, которых нет в указанном файле (например, можно пропустить те номера, которых не было при прошлой закачке) |
--random | скачивать раздачи в случайном порядке |
--threads 100 | число потоков для скачивания |
--proxy_file proxy.txt | файл с socks5 прокси (по умолчанию — proxy.txt) |
--login_file login.txt | файл с логинами к сайту (по умолчанию — login.txt) |
--resume | продолжить предыдущую закачку (игнорировать раздачи из файла finished.txt) |
вместе с опцией resume выведет количество скачанных/не скачанных раздач и завершает работу программы | |
--folder descriptions | указывает название директории, куда будут сохраняться описания раздач (по умолчанию — descr) |
--qsize 20 | максимальная величина очереди для скачивания (по умолчанию — 30) |
username1 password1
username2 password2
Примечание: Дата изменения раздачи зависит от часового пояса, установленного в профиле.
127.0.0.1 8080
127.0.0.1 8081
Номера скачанных или не существующих раздач записываются в файл finished.txt. Лог выводится параллельно в консоль и в файл log.txt. Cookie пишутся в temp_cookies.txt, для сохранения между сессиями.
В файле table.txt сохраняется информация о раздачах (за исключением описаний). Для каждой раздачи сохраняются (разделитель — t):
Пример:
4130425 Mark Lutz/Марк Лутц - Изучаем Python, 4-е издание [2011, PDF, RUS] 12799942 390 9 B507A45DA54ED5EED13221B16E2030DF789A235F 46455 28-08-12 11:28 Книги и журналы | Компьютерная литература | Программирование
Описания раздач сохраняются в отдельные файлы в папку descr (или указанную опцией --folder), в поддиректорию по первым трем цифрам номера раздачи.
Например, описание раздачи 04893221 сохранится в descr484893221.
Для просмотра сохраненной базы и поиска по раздачам написан просмотрщик с использованием PyQt5. Для работы необходим файл table_sorted.tar.bz2, который содержит текстовый файл table_sorted.txt (table.txt, отсортированный по число сидов). Для конвертации можно использовать данный скрипт [6].
Также (опционально) можно положить рядом со скриптом директорию descr, в которой будут лежать заархивированные описания раздач. Я паковал этим скриптом [7].
Пример структуры директорий и архивов:
descr/000/00000.tar.bz2 descr/000/00001.tar.bz2 … descr/000/00099.tar.bz2 descr/001/00100.tar.bz2 descr/001/00101.tar.bz2 … descr/001/00199.tar.bz2 …
Внешний вид просмотрщика показан на КДПВ.
Двойной клик по хэшу копирует магнет-ссылку с ним в буфер обмена.
python3-pyqt5, python3-pyqt5.qtwebkit
Скрипт [8] для python3.
Скомпилированный бинарник для Windows: Mega.nz [9] (30 Мб) (включая все необходимые библиотеки).
Файл с основной информацией о раздачах, отсортированный по количеству сидов: Mega.nz [9] (118 Мб).
Описания раздач (распаковать в папку с просмотрщиком): Mega.nz [10] (2.06 Гб).
Любая критика по коду приветствуется.
В дальнейшем есть задумка добавить в просмотрщик поддержку libtorrent и получить возможность просматривать содержимое раздач/стримить их в проигрыватель.
Также у меня есть сохраненная база от июня 2014 года (без категорий) и от июля 2015 года (с категориями), если есть пожелания, могу посчитать какую-нибудь статистику по изменениям между этими срезами.
Исходники скриптов выложены на github [11].
Автор: strayge
Источник [12]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/110295
Ссылки в тексте:
[1] или уже не слухи?: https://geektimes.ru/post/269592/
[2] выкладывал: http://rutracker.org/forum/viewtopic.php?t=4824458
[3] Похожая статья: https://habrahabr.ru/post/195454/
[4] репозитория: https://bitbucket.org/ratnik/dump_viewer
[5] loader.py: https://github.com/strayge/rutracker_parser/blob/master/loader.py
[6] данный скрипт: https://github.com/strayge/rutracker_parser/blob/master/sort.py
[7] этим скриптом: https://github.com/strayge/rutracker_parser/blob/master/pack.sh
[8] Скрипт: https://github.com/strayge/rutracker_parser/blob/master/viewer.py
[9] Mega.nz: https://mega.nz/#!w1pB2DKZ!8_tU4Kq9R61FTDPXTXf8L796vQTnMAiRhCR4W6kmemI
[10] Mega.nz: https://mega.nz/#!llwH1QKZ!5JgoOIkhlMjWuIEbhVoC0k1zS19FvkcTsP-0zh812Zc
[11] github: https://github.com/strayge/rutracker_parser
[12] Источник: https://geektimes.ru/post/269828/
Нажмите здесь для печати.