A modern, feature-rich web interface for batch downloading game soundtracks from KHInsider
- Intelligent Queue System: Downloads are processed in batches to prevent server overload
- Parallel Indexing: Lightning-fast file size calculation (20 concurrent requests)
- Configurable Concurrency: Control simultaneous album and file downloads
- Auto-Clear Completed: Optional automatic removal of finished downloads
- Global Statistics Dashboard: Total speed, downloaded size, and elapsed time
- Per-Download Stats: Individual progress, speed, and file tracking
- Live Status Updates: Queued, Indexing, Downloading, Completed states with animations
- 24-Hour Time Format: Professional timestamp display
- Auto-Resizing Input: Text area grows dynamically with content
- One-Click Clear: Remove all completed downloads instantly
- Dark Theme: Modern, eye-friendly interface
- Bulk Operations: Paste entire lists, handle series and individual albums
- Metadata Download: Automatically saves album art and available metadata
- Format Preferences: Choose preferred audio formats (FLAC, MP3, OGG)
- Resume Support: Skips already downloaded files
- WebSocket Updates: Real-time progress via Socket.IO
- Python 3.8 or higher
- pip (Python package installer)
- Clone the repository
git clone https://github.com/l-at-nnes/khinsider-webui.git
cd khinsider-webui- Install dependencies
pip install -r requirements.txt- Run the server
python server.py- Open your browser
http://localhost:5000
Single Albums
mother-3
final-fantasy-vii
https://downloads.khinsider.com/game-soundtracks/album/chrono-trigger
Entire Series
https://downloads.khinsider.com/zelda
https://downloads.khinsider.com/final-fantasy
Bulk Downloads
- Paste multiple links (one per line)
- The queue system handles them automatically
- Progress updates in real-time
Access settings via the ⚙️ button:
| Setting | Default | Description |
|---|---|---|
| Download Folder | downloads/ |
Where albums are saved |
| Preferred Formats | mp3 |
Audio format priority (FLAC, OGG, MP3) |
| Concurrent Albums | 3 |
Albums downloading simultaneously |
| Concurrent Files | 2 |
Files per album at once |
| Auto-Clear Completed | false |
Automatically remove finished downloads |
- Paste everything at once - the queue handles it
- Adjust concurrency based on your connection:
- Fast (>100 Mbps): 4-5 albums, 3 files
- Medium (10-100 Mbps): 3 albums, 2 files
- Slow (<10 Mbps): 1-2 albums, 1 file
- Monitor the stats at the top for overall progress
- Enable auto-clear to keep the list tidy
khinsider-webui/
├── server.py # Flask backend with queue management
├── khinsider.py # Core download logic (modified)
├── requirements.txt # Python dependencies
├── static/
│ ├── index.html # Main UI
│ ├── app.js # Frontend logic & WebSocket handling
│ └── styles.css # Modern dark theme
├── storage/ # Runtime data (created automatically)
│ ├── config.json # User settings
│ ├── history.json # Download history
│ └── logs.json # Application logs
└── downloads/ # Downloaded soundtracks (created automatically)
Edit storage/config.json directly for advanced options:
{
"download_folder": "D:\\Music\\Soundtracks",
"format_order": ["flac", "mp3"],
"create_subdirs": true,
"max_retries": 3,
"concurrent_downloads": 4,
"max_concurrent_files": 3,
"auto_clear_completed": true
}Restart the server after manual config changes.
- Reduced from ~30s to ~3-5s with parallel requests
- If still slow, check your network connection
- Reduce
concurrent_downloadsto 1-2 - KHInsider may be rate-limiting your IP
- Wait a few minutes between large batches
- Check that port 5000 is available
- Verify all dependencies are installed:
pip install -r requirements.txt - Delete
storage/*.jsonfiles to reset configuration
- Check the Logs tab for specific errors
- Try a different format in settings
- Some soundtracks may have incomplete uploads on KHInsider
Contributions are welcome! Here's how:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Based on khinsider.py by obskyr
- Built with Flask, Socket.IO, and vanilla JavaScript
This tool is for educational purposes. Please respect KHInsider's terms of service and bandwidth. Don't abuse the service with excessive concurrent downloads.
Enjoy your music collection!