Milou
ROM Scraper and Downloader for Android
Install / Use
/learn @santiifm/MilouREADME
Milou - Game Scraper and Downloader
A modern Android app for discovering, downloading, and managing retro games. Named after my dog and done with love and lack of knowledge (I'm a ruby dev don't hate me).
Download
Check the releases
How It Works
Milou scrapes game data from ROM sites, provides search and filtering, and handles downloads with automatic archive extraction. The app comes prepackaged with some ROMs to quickly get started.
Core Features
- Search & Filter: Find games by name, console, region, or content type
- Download Management: Background downloads with progress tracking
- Auto-Extraction: Automatically extracts ZIP/7z archives
- Source Management: Add/remove scraping sources for different sites
- Landscape Support: Optimized UI for both portrait and landscape modes
App Flow
- First Launch: App loads default sources and scrapes game data
- Search: Use filters to find specific games
- Download: Tap games to start downloading
- Manage: Monitor progress in Downloads screen
- Configure: Adjust settings like download folder and speed limits
- Console-specific Download Paths: Go into Sources -> Manufacturer(e.g. Sony) -> Console(e.g. PS2) and clock the folder icon to set that console's download path
Building
Build Steps
# Clone repository
git clone https://github.com/yourusername/milou-test.git
cd milou-test
# Build debug APK
./gradlew assembleDebug
# Build release APK
./gradlew assembleRelease
# Run tests
./gradlew test
Project Structure
app/ # Main Android application
├── src/main/java/ # Kotlin source code
├── src/main/assets/ # Default sources (consoles.json)
Tech Stack
- UI: Jetpack Compose, Material Design 3
- Database: Room with SQLite, Full-Text Search
- Dependency Injection: Hilt
- Networking: Jsoup (scraping), HttpURLConnection (downloads)
- Archives: Apache Commons Compress (ZIP/7z)
- Concurrency: Kotlin Coroutines, Flow
Usage
First Time Setup
- Open Settings and select download directory
- App automatically loads sources and scrapes game data
- Start searching and downloading games
Adding Sources
- Go to Sources screen
- Add manufacturers and consoles
- Add URLs for scraping
- Use "Rescan Sources" to update database
Disclaimer
This app is for educational purposes only. Users are responsible for ensuring they have the legal right to download any games.
