https://github.com/idlesign/sponsrdump
Приложение позволяет получить локальные копии материалов, на котороые у вас уже имеется подписка, с сайта sponsr.ru.
Умеет скачивать тексты (статьи), аудио (подкаст), видео.
- Unix
- Python 3.10+
- ffmpeg (
sudo apt install ffmpeg
) - beautifulsoup4, html2text, lxml, requests (
pip install -r requirements.txt
)
- Перейдите в браузере на страницу нужного проекта. Для примера используем проект "Уроки истории" - 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.py "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 без python3.10.
Требует наличия в системе Docker. Если у вас есть make:
$ make run
# ./sponsrdump.py "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 ./sponsrdump.py "https://sponsr.ru/uzhukoffa_lessons/" --title "Урок 309" --prefer-video 640x360