Skip to content

Latest commit

 

History

History
206 lines (186 loc) · 14.7 KB

File metadata and controls

206 lines (186 loc) · 14.7 KB

RGO-lib-parser: описание

Current license: AGPLv3 Switch to ENG ---> switch to ENG

Информативное

Технологии Python Pytest Ruff uv Conventional Commits
SemVer pre-commit Commitizen
Метрики Test Status codecov Codacy Badge OpenSSF Scorecard
Совместимость Python Version Windows X macOS X Ubuntu X
Другое GitHub last commit GitHub Downloads (all assets, all releases) GitHub repo size GitHub code size in bytes

Простенькая штучка для непростенькой задачки

Перед вами "парсер" - ПО, предназначенное для получения информации с конкретного сайта напрямую, из-за его причудливого формата хранения данных. Конкретно это приложение упрощает работу с библиотекой Российского Географического Общества. У них собраны сканы редких и очень нишевых экземпляров письменных исторических источников разных эпох, которые вам могут понадобится, скажем, для интерактивной панели на выставке. Но просто их не получить, по умолчанию можно только смотреть! Так родилась идея автоматизировать процесс создания целой горы скриншотов руками: я решил облегчить жизнь знакомым, которым пришлось этим заниматься.

Важно: я НЕ ЯВЛЯЮСЬ как владельцем сайта библиотеки, так и правообладателем публикуемого на нём материала, все права защищены и принадлежат текущим владельцам сайта!

Для сторонних разработчиков: это мой первый проект ТАКОГО уровня, так что не удивляйтесь коммитам в 2 строчки и совершенно нелепым косякам, со временем я точно освоюсь и чувство стыда у вас пройдёт :3

Примеры работы на разных этапах

GIF-демо

example-cycle-gif


Галерея

Example-start

Example-process

Example-result

Установка

Приложение выполнено в формате Standalone Portable, наличие языка разработки (Python) и прочего у вас НЕ требуется! В зависимости от вашей операционной системы, в блоке Assets последнего релиза скачайте один из файлов RGO_lib_parser:

  • Windows — RGO_lib_parser_win64.exe
  • macOS — RGO_lib_parser_macOS.zip
  • Linux (пока только Debian-based) — RGO_lib_parser_ubuntu Ниже для каждого варианта описан свой порядок действий при первом запуске.

Windows (RGO_lib_parser_win64.exe)

  1. Запуск: найдите у себя на компьютере этот файл и запустите.
  2. Оповещение безопасности: встроенный защитник Windows 10+ SmartScreen наверняка покажет предупреждение ("Windows защитила ваш компьютер"), потому что я не имел оффициального (и дорогущего) сертификата подписи кода.
    • Если оно вам встретилось, нажмите на "Подробнее".
    • После этого появится кнопка "Выполнить в любом случае", нажимайте.
    • Это нужно только при первом запуске. При желании отключите у себя насовсем, инструкции в интернете.

macOS (RGO_lib_parser_macOS.zip)

  1. Распаковка: найдите у себя на компьютере этот .zip архив и распакуйте (например, просто двойным кликом).
  2. Запуск:
    • Найдите в распакованном архиве файл RGO Lib Parser.app.
    • Рекомендовано: перетащите этот файл из "Загрузки" в вашу папку "Приложения".
    • Важно: правый клик (или Control-клик) по иконке RGO Lib Parser.app.
  3. Оповещение безопасности: вы наверняка увидите предупреждение, что приложение у вас от неопределённого разработчика, потому что я не обладаю оффициальным (и дорогущим) Apple Developer ID. Но так как вы открываете через "расширенный доступ", вы увидите кнопку "Открыть" в диалоговом окне, нажимайте. После этого запуск доступен просто двойным кликом.

Linux (RGO_lib_parser_ubuntu)

  1. Работа в терминале: запустите свой терминал.
  2. Перемещение: перейдите в директорию, где оказался скачанный файл (e.g., cd ~/Downloads or cd ~/Загрузки).
  3. Флаг исполняемости: предоставьте файлу разрешение на запуск командой: chmod +x RGO_lib_parser_ubuntu
  4. Запуск: запустите приложение командой: ./RGO_lib_parser_ubuntu. После этого запуск будет доступен этой командой или через GUI.

Инструкция по работе

  1. Запустите приложение.
  2. Откройте нужный вам документ на сайте библиотеки открытого Русского географического общества (в модуле защищенного просмотра (МЗП)).
  3. Убедитесь, что ссылка имеет вид "https://elib.rgo.ru/safe-view/123456789/.../.../.../":
    Example-link
  4. Скопируйте имя файла на сайте (есть на само́й странице документа или в МЗП) и реальное кол-во страниц (в МЗП):
    Example-what-to-copy
  5. Кайфуйте! ПО запоминает проблемы

Идеи на будущее

Думаю внедрить авто-распознавание пустых (несодержательных) разворотов и/или страниц, добавить консольный интерфейс и улучшить текущий (скорее всего с переходом на PySide для удобства внедрения ассетов и высокоуровневого тестирования), начать прикреплять файлы SBOM и SLSA к релизам, покрыть разные связки компонентов теперь уже интеграционными тестами и отладить всё-всё-всё, что мне помогли найти после мягкого запуска программы!

Схемы-деревья:

Репозиторий

RGO-lib-parser v1.4
├── .github/
   ├── ISSUE_TEMPLATE/ 
       ├── bug_report.yml
       ├── config.yml
       ├── documentation.yml
       └── feature_request.yml
   ├── workflows/
       ├── .codecov.yml
       ├── bandit.yml
       ├── ci.yml
       ├── crossbuild-release.yml
       ├── dependabot.yml
       ├── labeler.yml
       ├── pull_request_template.md
       └── scorecard.yml
   ├── CODEOWNERS(.bib)
   └── labels.yml

├── assets/
   ├── macapp_lilacbook.icns
   ├── winapp_lilacbook.ico
   └── window_bnwbook.png

├── scripts/
   └── run_app.py

├── src/
   ├── __init__.py
   ├── app_state.py
   ├── config.py
   ├── gui.py
   ├── image_processing.py
   ├── logic.py
   ├── main.py
   ├── settings_manager.py
   ├── task_manager.py
   ├── types.py
   ├── ui_builder.py
   └── utils.py

├── tests/        
   ├── __init__.py
   ├── test_app_state.py
   ├── test_config.py
   ├── test_image_processing.py
   ├── test_logic.py
   ├── test_main.py
   ├── test_settings_manager.py
   ├── test_task_manager.py
   ├── test_types.py
   └── test_utils.py

├── v0.1 separated/        
   ├── sdloady_RGO_lib.py
   └── spready_RGO_lib.py

├── .codacy.yaml
├── .gitattributes(.bib)
├── .gitignore(.bib)
├── .markdownlint.yaml
├── .pre-commit-config.yaml
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── CONTRIBUTING.ru.md
├── LICENSE(.bib)
├── pyproject.toml
├── README.md
├── README.ru.md
├── SECURITY.md
├── tox.ini
└── uv.lock

Зависимости проекта

RGO-lib-parser v1.4
├── pillow v11.2.1
├── requests v2.32.3
   ├── certifi v2025.1.31
   ├── charset-normalizer v3.4.1
   ├── idna v3.10
   └── urllib3 v2.4.0

├── coverage[toml] v6.5.0 (extra: dev)
├── coveralls v3.3.1 (extra: dev)
   ├── coverage v6.5.0
   ├── docopt v0.6.2
   └── requests v2.32.3 (*)

├── lxml v5.3.2 (extra: dev)
├── mypy v1.15.0 (extra: dev)
   ├── mypy-extensions v1.0.0
   └── typing-extensions v4.13.2

├── pre-commit v3.8.0 (extra: dev)
   ├── cfgv v3.4.0
   ├── identify v2.6.9
   ├── nodeenv v1.9.1
   ├── pyyaml v6.0.2
   └── virtualenv v20.30.0
       ├── distlib v0.3.9
       ├── filelock v3.18.0
       └── platformdirs v4.3.7

├── pytest v8.3.5 (extra: dev)
   ├── colorama v0.4.6
   ├── iniconfig v2.1.0
   ├── packaging v24.2
   └── pluggy v1.5.0

├── pytest-cov v5.0.0 (extra: dev)
   ├── coverage[toml] v6.5.0
   └── pytest v8.3.5 (*)

├── ruff v0.11.5 (extra: dev)
├── types-pillow v10.2.0.20240822 (extra: dev)
└── types-requests v2.32.0.20250328 (extra: dev)
    └── urllib3 v2.4.0
(*) Package tree already displayed