https://github.com/idlesign/sponsrdump
Приложение позволяет получить локальные копии материалов, на которые у вас уже имеется подписка, с сайта sponsr.ru.
Умеет скачивать тексты (статьи), аудио (подкаст), видео.
- Unix
- Python 3.11+
- ffmpeg (
sudo apt install ffmpeg) - uv (для установки и обновления приложения)
Производится при помощи приложения uv:
$ uv tool install sponsrdumpПосле этого запускать приложение можно командой
$ sponsrdumpДля обновления выполните
$ uv tool upgrade sponsrdump-
Перейдите в браузере на страницу нужного проекта. Для примера используем проект "Уроки истории" - https://sponsr.ru/uzhukoffa_lessons/
-
Если вы ещё не авторизовались на сайте (не вошли), сделайте это.
-
Удостоверьтесь, что материалы данного проекта вам доступны. Если нет, оформите подписку на нужный проект.
-
Теперь нам потребуется получить значение cookie
SESSдля сайта sponsr.ru, чтобы приложение могло собрать нужные материалы. Один из вариант получения значения куки:- В браузере нажмите F12, откроется панель разработчика, открываем вкладку Сеть.
- Переходим на страницу попроще (где меньше обращений к ресурсам, чтобы не запутаться), например, https://sponsr.ru/img/new/white-logo.svg
- На вкладке Сеть выделяем строку с текстом white-logo.svg. В открывшейся панели ищем раздел Заголовки запроса.
Находим пункт Cookie и копируем из него текст, начиная с
SESS=и до первой же точки с запятой. Этот текст — пропуск на сайт для нашего собирателя.
-
Создаём текстовый файл с названием
sponsrdump_auth.txtв удобной директории (из которой мы будем запускать приложение). -
Скопированное ранее значение cookie
SESSпомещаем в файл из п.5, сохраняем.
В ходе сбора материалов в директории, из которой запущено приложение, будет создан файл sponsrdump.json,
с информацией о том, что уже было успешно собрано. Таким образом, при следующем запуске приложения будут собраны только новые материалы.
В примере мы используем фильтр, который инструктирует собирателя на поиск тех статей, в заголовке которых есть слово Урок .
Мы будем собирать все файлы (тексты, аудио, видео), начиная от старых к новым, и складывать их в поддиректорию here/ текущей директории.
Для видео будем предпочитать разрешение 640x360. Сделаем видео с текстом статьи — --text-to-video.
$ sponsrdump "https://sponsr.ru/uzhukoffa_lessons/" --title "Урок " --to here/ --prefer-video 640x360 --text-to-videoВ примере ниже использованы все те же настройки, что и в примере запуска из командной строки (выше).
dumper = SponsrDumper('https://sponsr.ru/uzhukoffa_lessons/')
dumper.search(func_filter=lambda post_info: 'Урок ' in post_info['post_title'])
dumper.dump('here/', prefer_video=VideoPreference(frame='640x360'), text_to_video=True)Будет полезно для тех, кто хочет выгружать видео сразу на свой домашний NAS.
Требует наличия в системе Docker. Если у вас есть make:
$ make run
$ uvx sponsrdump "https://sponsr.ru/uzhukoffa_lessons/" --title "Урок 309" --prefer-video 640x360Можно и без make и shell, в данном примере монтируем auth и json файлы и каталог dump, чтобы сохранять данные вне контейнера:
$ docker build -t sponsrdump .
$ docker run -it -v $(pwd)/sponsrdump_auth.txt:/sponsrdump_auth.txt -v $(pwd)/sponsrdump.json:/sponsrdump.json -v $(pwd)/dump:/dump sponsrdump uvx sponsrdump "https://sponsr.ru/uzhukoffa_lessons/" --title "Урок 309" --prefer-video 640x360При разработке используется makeapp. Ставим:
$ uv tool install makeappПосле клонирования репозитория sponsrdump, в его директории выполняем:
# ставим утилиты
$ ma tools
# инициализируем виртуальное окружение
$ ma up --tool
# теперь в окружении доступны зависимости и команда sponsrdumpПроверь стиль перед отправкой кода на обзор:
# проверяем стиль
$ ma style