Skip to content

Downloader for sponsr.ru / Скачиватель для sponsr.ru

Notifications You must be signed in to change notification settings

idlesign/sponsrdump

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sponsrdump

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)

Начало работы

  1. Перейдите в браузере на страницу нужного проекта. Для примера используем проект "Уроки истории" - https://sponsr.ru/uzhukoffa_lessons/
  2. Если вы ещё не авторизовались на сайте (не вошли), сделайте это.
  3. Удостоверьтесь, что материалы данного проекта вам доступны. Если нет, оформите подписку на нужный проект.
  4. Теперь нам потребуется получить значение cookie SESS для сайта sponsr.ru, чтобы приложение могло собрать нужные материалы. Один из вариант получения значения куки:
    1. В браузере нажмите F12, откроется панель разработчика, открываем вкладку Сеть.
    2. Переходим на страницу попроще (где меньше обращений к ресурсам, чтобы не запутаться), например, https://sponsr.ru/img/new/white-logo.svg
    3. На вкладке Сеть выделям строку с текстом white-logo.svg. В открывшейся панели ищем раздел Заголовки запроса. Находим пункт Cookie и копируем из него текст, начиная с SESS= и до первой же точки с запятой. Этот текст — пропуск на сайт для нашего собирателя.
  5. Создаём текстовый файл с названием sponsrdump_auth.txt в удобной директории (из которой мы будем запускать приложение).
  6. Скопированное ранее значение 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