Skip to content

diam0voi/RGO-lib-parser

Description of the RGO-lib-parser:

Current license: AGPLv3 На русском --> Ru

Stack Python Pytest Ruff uv Conventional Commits
SemVer pre-commit Commitizen
Quality Test Status codecov Codacy Badge OpenSSF Scorecard
Compatibility Python Version Windows X macOS X Ubuntu X
Other GitHub last commit GitHub Downloads (all assets, all releases) GitHub repo size GitHub code size in bytes

Simple thing for a simple task

At its core - you're looking at the parser designed for a specific site with somewhat bizarre data storage format. This site, however, contains scans of rare and very niche historical literary sources that you may need, as for example, for an interactive panel at certain exhibition. But you can't just get them! You forced to only watch! So the idea was born to automate the process of manually creating a whole plethora of screenshots: I decided to make life easier for my bros who had to do this.

This is my first project of SUCH a level, so don't be surprised by 2-line commits and ridiculous bugs, I'll definitely get used to it over time and the feeling of cringe will pass (no).

Important: I'm NOT the owner of the site nor of the library materials therein, all rights reserved and belongs to the RGO lib owners!

Illustrations of app working

example-cycle-gif

Example-start

Example-process

Example-result

How to Run

Below are instructions for running the application on different operating systems after downloading the corresponding file from the Assets section of this release.
The application is made in the Standalone Portable format, strict availability of the development language (Python) is NOT required!


Windows (RGO_lib_parser_win64.exe)

  1. Download: Download the RGO_lib_parser_win64.exe file from release.
  2. Run: Find the downloaded .exe file (usually in your "Downloads" folder) and double-click it to run.
  3. Security Warning: Windows Defender SmartScreen might show a warning ("Windows protected your PC") because the application is not signed with an official (and expensive) code signing certificate.
    • If you see this warning, click on "More info".
    • Then, click the "Run anyway" button that appears.
    • This only needs to be done the first time you run the application.

macOS (RGO_lib_parser_macOS.zip)

  1. Download: Download the RGO_lib_parser_macOS.zip file from release.
  2. Unzip: Find the downloaded .zip file (usually in "Downloads") and double-click it. macOS will automatically unzip it, creating the RGO Lib Parser.app file nearby.
  3. (Optional but Recommended): Drag RGO Lib Parser.app from "Downloads" to your "Applications" folder.
  4. First Run (Important!):
    • Locate RGO Lib Parser.app (in Downloads or Applications).
    • Right-click (or Control-click) the RGO Lib Parser.app icon.
    • Select "Open" from the context menu.
  5. Security Confirmation: You might see a warning about the app being from an unidentified developer because it's downloaded from the internet and not signed with an Apple Developer ID. Since you used "Open" via right-click, you should see an "Open" button in this dialog. Click it.
  6. Subsequent Runs: After opening it this way once, macOS will remember your choice, and you can launch RGO Lib Parser.app by double-clicking it like any other application.

Linux (Ubuntu/Debian, etc. - RGO_lib_parser_ubuntu)

  1. Download: Download the RGO_lib_parser_ubuntu file (it has no extension) from release.
  2. Open Terminal: Launch your terminal application.
  3. Navigate: Go to the directory where you downloaded the file (e.g., cd ~/Downloads or cd ~/Загрузки).
  4. Make Executable: Grant the file permission to run: chmod +x RGO_lib_parser_ubuntu (You usually only need to do this once after downloading).
  5. Run: Execute the application from the terminal: ./RGO_lib_parser_ubuntu (The ./ is important - it tells the terminal to run the file in the current directory).

General instructions:

  1. Download and run the program for your OS.
  2. Open the document you need on the website of the open Russian Geographical Society (ru. "Obshestvo") library in the library's protected view (PV) module.
  3. Make sure the link looks like "https://elib.rgo.ru/safe-view/123456789/.../.../.../":
    Example-link
  4. Copy/paste the name of the original file (accessible on the main page or in PV module) and the actual number of its pages (in PV module):
    Example-what-to-copy
  5. Enjoy!

Ideas for future

Add auto-recognition of blank (non-useful) spreads, CLI interface, integration tests, SBOM & SLSA files, and fixes, baby, fixes!

Repository & dependencies trees

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