Skip to main content

Make local backup copies for materials from sponsr.ru

Project description

sponsrdump

https://github.com/idlesign/sponsrdump

PyPI - Version License Coverage

Описание

Приложение позволяет получить локальные копии материалов, на которые у вас уже имеется подписка, с сайта sponsr.ru.

Умеет скачивать тексты (статьи), аудио (подкаст), видео.

Зависимости

  • Unix
  • Python 3.11+
  • ffmpeg (sudo apt install ffmpeg)
  • uv (для установки и обновления приложения)

Установка и обновление

Производится при помощи приложения uv:

$ uv tool install sponsrdump

После этого запускать приложение можно командой

$ sponsrdump

Для обновления выполните

$ uv tool upgrade sponsrdump

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

  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 "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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sponsrdump-0.2.0.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sponsrdump-0.2.0-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file sponsrdump-0.2.0.tar.gz.

File metadata

  • Download URL: sponsrdump-0.2.0.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for sponsrdump-0.2.0.tar.gz
Algorithm Hash digest
SHA256 666df935635210c9b9d8d20754cd148b315711ca4b3905f480f9afbc8fa25dc6
MD5 6a4fe6b8119ae962f126d347a645ba37
BLAKE2b-256 b4a85e06d4881921ba79097b5252cc9c71bbb0c85840da99be7f1dde38dd19e4

See more details on using hashes here.

File details

Details for the file sponsrdump-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: sponsrdump-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.2 {"installer":{"name":"uv","version":"0.11.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"25.10","id":"questing","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for sponsrdump-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 620abd0939f1ae934002fa8bb9d26d2515101459509ff6e0c94398a3cb24be09
MD5 4df7bb95b7b8cbb354a9ef87b7c84c4a
BLAKE2b-256 7ec052383a2088a51dbadbd404db9fb1e1e099d0e68e8667df70f29e009d1005

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page