sponsrdump
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 tests
Проверь стиль перед отправкой кода на обзор:
# проверяем стиль
$ ma style
Metadata
Release files for sponsrdump 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sponsrdump-0.3.0.tar.gz | 14.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sponsrdump-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.3 kB
Release files / sponsrdump-0.3.0.tar.gz
| Download URL | sponsrdump-0.3.0.tar.gz |
|---|---|
| Size | 14.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2fd0a6dae7dadac4f13294b0a67965bd30ab638853be81a7ce152c4a1d90de67
|
|
BLAKE2b-256 checksum How to use checksums |
9b7a2d927b27c75dd9cac0dd449af3e250bcb044744c6888642d7a94d150585e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / sponsrdump-0.3.0-py3-none-any.whl
| Download URL | sponsrdump-0.3.0-py3-none-any.whl |
|---|---|
| Size | 17.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
170c7fb6993fb91f51b730e8503c38559decac46ee4eae43245f0c5cd4303bdf
|
|
BLAKE2b-256 checksum How to use checksums |
73e0aa03d771f1f6567b2a9a040c83667afb7d9229073aca0710b9bf2e484bb1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|