# πŸ› οΈ KemonoDownloader Refactor Notes ## What's Going On This project used to be one giant messy App Script. It worked, but it was hard to maintain or expand. So I cleaned it up and split everything into smaller, more manageable files to make it easier to read, update, and add new stuff later. **⚠️ Heads up:** Since I'm still in the middle of refactoring things, some features might be broken or not working right now. The layout is better, but I still need to update some parts of the logic and dependencies. --- ## πŸ“ Folder Layout ``` KemonoDownloader/ β”œβ”€β”€ main.py # Where the app starts β”œβ”€β”€ assets/ # Icons and other static files β”‚ └── Kemono.ico β”œβ”€β”€ data/ β”‚ └── creators.json β”œβ”€β”€ logs/ # Error logs and other output β”‚ └── uncaught_exceptions.log └── src/ # Main code lives here β”œβ”€β”€ __init__.py β”œβ”€β”€ ui/ # UI-related code β”‚ β”œβ”€β”€ __init__.py β”‚ β”œβ”€β”€ main_window.py β”‚ └── dialogs/ β”‚ β”œβ”€β”€ __init__.py β”‚ β”œβ”€β”€ ConfirmAddAllDialog.py β”‚ β”œβ”€β”€ CookieHelpDialog.py β”‚ β”œβ”€β”€ DownloadExtractedLinksDialog.py β”‚ β”œβ”€β”€ DownloadFinishedDialog.py β”‚ └── ... (more dialogs) β”œβ”€β”€ core/ # The brain of the app β”‚ β”œβ”€β”€ __init__.py β”‚ β”œβ”€β”€ manager.py β”‚ β”œβ”€β”€ workers.py β”‚ └── api_client.py β”œβ”€β”€ services/ # Downloading stuff happens here β”‚ β”œβ”€β”€ __init__.py β”‚ β”œβ”€β”€ drive_downloader.py β”‚ └── multipart_downloader.py β”œβ”€β”€ utils/ # Helper functions β”‚ β”œβ”€β”€ __init__.py β”‚ β”œβ”€β”€ file_utils.py β”‚ β”œβ”€β”€ network_utils.py β”‚ └── text_utils.py β”œβ”€β”€ config/ # Constants and settings β”‚ β”œβ”€β”€ __init__.py β”‚ └── constants.py └── i18n/ # Translations (if needed) β”œβ”€β”€ __init__.py └── translator.py ``` --- ## βœ… Why Bother Refactoring? - Everything’s now broken into smaller parts, so it’s easier to work with. - Easier to test, fix, and add stuff. - Prepping the project to grow without becoming a mess again. - Separated the UI from the app logic so they don’t get tangled. --- ## 🚧 What’s Still Broken - Some features don’t work yet or haven’t been tested since the changes. - Still need to: - Reconnect the UI to the updated logic. - Move over some of the old script code into proper modules. - Make sure settings and cookies work properly in the new setup. --- ## πŸ“Œ To-Do List - Test all the dialogs and UI stuff. - Make sure the download services and API calls are working. - Reconnect the UI with the new logic in `core/manager.py`. - Add more logging and maybe some unit tests too. --- ## 🐞 Found a Bug? If something's busted: - Feel free to open an issue if you're using this. - Or just message me. Feedback helps a lot while I’m still figuring things out. Thanks for checking it out! Still a work in progress, but getting there.