[PR #58] [MERGED] Major 2.0.0 Update (Better UX / Error Handling / HTML Generation) #82

Closed
opened 2026-10-13 19:47:01 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/Glitchy-Sheep/boosty-downloader/pull/58
Author: @Glitchy-Sheep
Created: 8/10/2025
Status: ✅ Merged
Merged: 8/10/2025
Merged by: @Glitchy-Sheep

Base: main ← Head: dev


📝 Commits (10+)

  • a7bea85 Improve CI flow (#47)
  • f716b2c Fix validation errors, Integration tests (with API), (#43)
  • 0242909 chore: release 1.0.1
  • 39450de Update renovate.json to target dev instead of main
  • d8b3b6a Improve tests and error handling (#50)
  • 9cfc29d More intelligent caching layer (#51)
  • 65b41fc fix: Use target_directory configuration as save destination (#52)
  • d9fe384 NEXT GEN UPDATE: Major project structure refactor, UX Enhanced (#56)
  • 4828a7d 🚀 pre-release changes: bump version, fix entry point, add screenshots, update readme, fix deps
  • 8e9c268 docs: 📝 Update docs image refs (use https:// instead of relative paths) for PyPi

📊 Changes

107 files changed (+4423 additions, -1447 deletions)

View changed files

📝 .github/renovate.json (+2 -1)
📝 CHANGELOG.md (+59 -2)
📝 Makefile (+24 -10)
📝 README.md (+14 -7)
➕ assets/example1.png (+0 -0)
➕ assets/example2.png (+0 -0)
➕ assets/total_check.png (+0 -0)
📝 assets/usage.png (+0 -0)
📝 boosty_downloader/main.py (+264 -149)
📝 boosty_downloader/src/application/__init__.py (+0 -0)
📝 boosty_downloader/src/application/di/__init__.py (+0 -0)
➕ boosty_downloader/src/application/di/app_environment.py (+114 -0)
➕ boosty_downloader/src/application/di/download_context.py (+32 -0)
📝 boosty_downloader/src/application/exceptions/__init__.py (+0 -0)
➕ boosty_downloader/src/application/exceptions/application_errors.py (+54 -0)
➕ boosty_downloader/src/application/filtering.py (+49 -0)
➕ boosty_downloader/src/application/mappers/__init__.py (+30 -0)
➕ boosty_downloader/src/application/mappers/external_video.py (+20 -0)
➕ boosty_downloader/src/application/mappers/file.py (+16 -0)
➕ boosty_downloader/src/application/mappers/html_converter.py (+71 -0)

...and 80 more files

📄 Description

📌 Major 2.0.0 Update (Better UX / Error Handling / HTML Generation)

📝 Description

A lot of very important changes were made: restructure cache logic (BREAKING CHANGE FOR CACHE) for better caching behavior, fixed duplication problem #12 (the naming itself changed in the way which can't lead to overwrites.)

Project structure changed drastically to keep it more DDD-like, so it's much more maintainable.

The new structure is more extensible, and it allowed me to implement upcoming features more smoothly - this is no longer a personal MVP, it's now becoming a usable tool. (I hope, lol)

🔄 Changelog

✨ Features

  • 🔔 Automatic update checker
    You'll now be notified when a new version is available on PyPI.

  • 📦 Improved caching layer

    • Caches only requested parts (e.g. videos, files) to avoid unnecessary re-downloads.
    • Post cache is invalidated automatically on update.
    • More robust and accurate cache behavior.
  • 🎨 Enhanced HTML generation

    • Support for headings and lists.
    • post_content now shows images and videos.
    • New HTML generator engine with Dark/Light mode support.
  • 📊 Improved CLI UX

    • Better help descriptions and structured option grouping.
    • Improved post counter: now shows accessible/inaccessible posts with names.
    • Enhanced logging and error handling.
  • 🧱 New project structure

    • Modular DDD-like layout.
    • Removed legacy god-objects and monolithic managers.
    • Imports are clearer and more maintainable.
  • 🔃 Retry Logic

    • If post download fails, it will be retried up to 5 times with exponential backoff.
    • After 5 failed attempts, the post will be skipped and not cached.

🐛 Fixes

  • Fixed duplication problem #12 (now posts are cached by UUID and have it as part of the filename, so duplication is no longer an issue)
  • Fixed HTML generation for posts with no content.
  • Fixed newline glitches in HTML output.
  • Proper handling of Ctrl+C interruption with clean ups.
  • Prevented creation of empty directories for posts with no downloadable content.

🔄 Changed

  • Internal logic and APIs adjusted to new architecture.
  • Refactored core components for better separation of concerns.

🗑 Removed

  • Legacy god-object-style post managers.
  • Old structure not aligned with current modular goals.

Closes #12

📷 Screenshots (if applicable)

usage
total_check
example2

✅ Checklist

  • Locally tested (make test and your own judgment)
  • Documentation updated (if necessary)
  • Code follows the project's style guidelines (make lint && make format)

⚠ Notes

The update has BREAKING CHANGE (1.0.1 -> 2.0.0): db schema was updated, so OLD CACHE IS INCOMPATIBLE WITH THE NEW ONE. post.html files is also have changed a little to look better.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Glitchy-Sheep/boosty-downloader/pull/58 **Author:** [@Glitchy-Sheep](https://github.com/Glitchy-Sheep) **Created:** 8/10/2025 **Status:** ✅ Merged **Merged:** 8/10/2025 **Merged by:** [@Glitchy-Sheep](https://github.com/Glitchy-Sheep) **Base:** `main` ← **Head:** `dev` --- ### 📝 Commits (10+) - [`a7bea85`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/a7bea85cc7398080e8452bc0cab8f9bdbdac567c) Improve CI flow (#47) - [`f716b2c`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/f716b2c82276a4ce0780209a7c01ac186192ccd1) Fix validation errors, Integration tests (with API), (#43) - [`0242909`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/02429097ed4cbce0cd5a7378adc7808f50160d23) chore: release 1.0.1 - [`39450de`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/39450deea7b349cbec5b0d23d3c34db5868a11e7) Update renovate.json to target dev instead of main - [`d8b3b6a`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/d8b3b6a57457ca60cb9bd7c7594e1668dc707510) Improve tests and error handling (#50) - [`9cfc29d`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/9cfc29ddcb1cdf18e274bbb56fe137d787bd79b8) More intelligent caching layer (#51) - [`65b41fc`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/65b41fcf93d28ffb29c8a5d3cf7f3a2942d7f7a5) fix: Use target_directory configuration as save destination (#52) - [`d9fe384`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/d9fe384de49c8dedfd016f09df3c5a3a1a04feb3) NEXT GEN UPDATE: Major project structure refactor, UX Enhanced (#56) - [`4828a7d`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/4828a7d427ddf0989b08008c68d47101d366520e) 🚀 pre-release changes: bump version, fix entry point, add screenshots, update readme, fix deps - [`8e9c268`](https://github.com/Glitchy-Sheep/boosty-downloader/commit/8e9c268abf9c1ed84dcb8e43508b0de43a1d2429) docs: :memo: Update docs image refs (use https:// instead of relative paths) for PyPi ### 📊 Changes **107 files changed** (+4423 additions, -1447 deletions) <details> <summary>View changed files</summary> 📝 `.github/renovate.json` (+2 -1) 📝 `CHANGELOG.md` (+59 -2) 📝 `Makefile` (+24 -10) 📝 `README.md` (+14 -7) ➕ `assets/example1.png` (+0 -0) ➕ `assets/example2.png` (+0 -0) ➕ `assets/total_check.png` (+0 -0) 📝 `assets/usage.png` (+0 -0) 📝 `boosty_downloader/main.py` (+264 -149) 📝 `boosty_downloader/src/application/__init__.py` (+0 -0) 📝 `boosty_downloader/src/application/di/__init__.py` (+0 -0) ➕ `boosty_downloader/src/application/di/app_environment.py` (+114 -0) ➕ `boosty_downloader/src/application/di/download_context.py` (+32 -0) 📝 `boosty_downloader/src/application/exceptions/__init__.py` (+0 -0) ➕ `boosty_downloader/src/application/exceptions/application_errors.py` (+54 -0) ➕ `boosty_downloader/src/application/filtering.py` (+49 -0) ➕ `boosty_downloader/src/application/mappers/__init__.py` (+30 -0) ➕ `boosty_downloader/src/application/mappers/external_video.py` (+20 -0) ➕ `boosty_downloader/src/application/mappers/file.py` (+16 -0) ➕ `boosty_downloader/src/application/mappers/html_converter.py` (+71 -0) _...and 80 more files_ </details> ### 📄 Description # 📌 Major 2.0.0 Update (Better UX / Error Handling / HTML Generation) ## 📝 Description A lot of very important changes were made: restructure cache logic (BREAKING CHANGE FOR CACHE) for better caching behavior, fixed duplication problem #12 (the naming itself changed in the way which can't lead to overwrites.) Project structure changed drastically to keep it more DDD-like, so it's much more maintainable. The new structure is more extensible, and it allowed me to implement upcoming features more smoothly - this is no longer a personal MVP, it's now becoming a usable tool. (I hope, lol) ## 🔄 Changelog ### ✨ Features - **🔔 Automatic update checker** You'll now be notified when a new version is available on PyPI. - **📦 Improved caching layer** - Caches only requested parts (e.g. `videos`, `files`) to avoid unnecessary re-downloads. - Post cache is invalidated automatically on update. - More robust and accurate cache behavior. - **🎨 Enhanced HTML generation** - Support for **headings and lists**. - `post_content` now shows **images and videos**. - New HTML generator engine with **Dark/Light mode** support. - **📊 Improved CLI UX** - Better help descriptions and structured option grouping. - Improved post counter: now shows accessible/inaccessible posts with names. - Enhanced logging and error handling. - **🧱 New project structure** - Modular DDD-like layout. - Removed legacy god-objects and monolithic managers. - Imports are clearer and more maintainable. - 🔃 **Retry Logic** - If post download fails, it will be retried up to 5 times with exponential backoff. - After 5 failed attempts, the post will be skipped and not cached. ### 🐛 Fixes - Fixed duplication problem [#12](https://github.com/Glitchy-Sheep/boosty-downloader/issues/12) (now posts are cached by UUID and have it as part of the filename, so duplication is no longer an issue) - Fixed HTML generation for posts with no content. - Fixed newline glitches in HTML output. - Proper handling of `Ctrl+C` interruption with clean ups. - Prevented creation of empty directories for posts with no downloadable content. ### 🔄 Changed - Internal logic and APIs adjusted to new architecture. - Refactored core components for better separation of concerns. ### 🗑 Removed - Legacy god-object-style post managers. - Old structure not aligned with current modular goals. ## 🎯 Related Issue Closes #12 ## 📷 Screenshots (if applicable) ![usage](https://github.com/user-attachments/assets/d471f6ee-0b28-4e09-876c-3beeccd4bc38) <img width="925" height="490" alt="total_check" src="https://github.com/user-attachments/assets/682e0469-adf3-40d1-96de-37f7610037ff" /> <img width="1335" height="526" alt="example2" src="https://github.com/user-attachments/assets/997e17b2-20ba-4459-a59c-1441ab9b2c5b" /> ## ✅ Checklist - [x] Locally tested (`make test` and your own judgment) - [x] Documentation updated (if necessary) - [x] Code follows the project's style guidelines (`make lint && make format`) ## ⚠ Notes The update has BREAKING CHANGE (1.0.1 -> 2.0.0): db schema was updated, so OLD CACHE IS INCOMPATIBLE WITH THE NEW ONE. post.html files is also have changed a little to look better. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-13 19:47:01 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Glitchy-Sheep/boosty-downloader#82
No description provided.