Hamster Image Uploader is a desktop application built using PySide6 and Python 3.10 for uploading images to Hamster through its API. It supports both single-image and batch-folder uploads, handles authentication, and logs detailed upload progress with graceful cancellation.
Version: See the VERSION file
-
Single Mode — Upload one or multiple individual images.
-
Group Mode — Upload all valid images from a folder in batch.
-
Automatic Authentication — Loads API Key and Album ID from
creds.secret, with optional overriding via UI. -
Pre-upload Validations — Warns if existing result JSON files or missing credentials are detected, with Skip/Overwrite options.
-
Comprehensive Logging:
- Real-time GUI console logs
- Persistent logs using
loguru
-
Structured JSON Output:
- Per-image JSON (Single Mode)
- Per-folder JSON (Group Mode)
-
Graceful Cancellation — Uploads can be stopped mid-process.
- Drag-and-drop file selection
- Retry queue for failed uploads
- Progress bar visualisation
- Better error classification and retry logic
---
- Python 3.10
- PySide6
- loguru
- Additional dependencies listed in
requirements.txt - Valid Hamster API Key and Album ID(Optional)
Clone the repository:
git clone https://github.com/edstagdh/Hamster_Image_Uploader.git
cd hamster_uploaderInstall the required packages:
pip install -r requirements.txt-
Copy and rename the example configuration:
config.json_Example→config.json- Optional:
- Update
working_pathandupload_mode
- Update
-
Copy and rename credentials template:
creds.secret_Example→creds.secret- Add your
hamster_api_keyandhamster_album_id(Optional)
python main.py- Select a file (Single Mode) or a folder (Group Mode).
- Click Start to begin uploading.
- Monitor progress in the GUI log console.
- Review generated JSON results saved next to your source files.
- Press Cancel to stop at any time.
hamster_uploader/
├── .gitignore
├── assets/
│ └── hamster_uploader.ico
├── config.json
├── config.json_Example
├── creds.secret
├── creds.secret_Example
├── README.md
├── main.py
├── upload.py
├── requirements.txt
└── VERSION
-
GUI Console — Shows real-time upload progress.
-
Persistent Logs — Saved in format:
App_Log_{YYYY.MMMM}.log
-
.TXT Files Output:
- Single Mode: One JSON formatted text file per image.
- Group Mode: One JSON formatted text file per folder.
The application handles and logs:
- API key missing
- Invalid file formats
- Failed upload attempts
- Existing output files (Skip/Overwrite prompt)
- Network/API errors
All issues are logged both in the GUI and the persistent logs.
MIT License
