A desktop library application that brings together your Steam, Epic Games, GOG, and Amazon games in a single interface.
Warning
English language support will be added.
- Multi-platform support โ Displays Steam, Epic Games, GOG, and Amazon games in a unified list
- Heroic Launcher integration โ Automatically detects Epic, GOG, and Amazon games installed via Heroic
- Game launching โ Launch installed games directly via launcher with a "โถ Play" button
- Steam playtime tracking โ Fetches total playtime per game via the Steam Web API
- Persistent library cache โ Library is stored on disk and loads within seconds on startup
- Dynamic change detection โ Automatically detects newly installed or removed games
- Game covers โ Uses Akamai CDN for Steam, SteamGridDB and Epic CDN for others
- Progressive cover loading โ Covers appear progressively as they are fetched, without blocking the UI
- Platform filtering โ Filter by Steam / Epic / GOG / Amazon
- Sorting options โ Sort by name, playtime, platform, or installation status
- Grid / List view โ Two different UI modes
- Auto-refresh every 6 hours โ Steam API and Epic library update silently in the background
Platform filters and game counters on the left sidebar, cover grid on the right โ Steam Libraryโstyle interface.
- Python 3.10+
- pip
git clone https://github.com/kullanici/oyun-kutuphanesi.git
cd oyun-kutuphanesipython -m venv venv
# Linux / macOS
source venv/bin/activate
# Windows
venv\Scripts\activatepip install eel requestscp config.example.json config.jsonOpen config.json in a text editor and fill in your details:
{
"SGDB_API_KEY": "Your SteamGridDB API key",
"STEAM_API_KEY": "Your Steam Web API key",
"STEAM_ID": "Your 64-bit Steam ID"
}For instructions on how to obtain API keys, see the Configuration section.
python main.pyThe app will open in your default browser at http://localhost:8000.
- Go to https://www.steamgriddb.com and create an account
- Navigate to Profile โ API โ click Generate API Key
- Paste the generated key into the
SGDB_API_KEYfield inconfig.json
SteamGridDB is not used for Steam games (Steam CDN is used directly). It is only required for Heroic/GOG/Amazon games.
- Go to https://steamcommunity.com/dev/apikey
- Enter a domain name (anything works, e.g.,
localhost) - Paste the generated key into the
STEAM_API_KEYfield inconfig.json
- Go to https://www.steamidfinder.com or open your Steam profile
- Copy your SteamID64 (e.g.,
76561198XXXXXXXXX) - Paste it into the
STEAM_IDfield inconfig.json
Your Steam profile Game Details privacy setting must be set to Public.
On first launch, you need to authenticate for the Epic library:
- Click "Authorization Page โ" in the sidebar
- Copy the
authorizationCodevalue from the opened page (within 30 seconds!) - Paste it into the input field and click Login
The token is automatically saved to epic_token.json. When the access token expires, it is automatically refreshed using the refresh token โ you only need to log in once.
Lib/
โโโ main.py # Python backend (Eel, all API calls)
โโโ config.json # Personal config (not committed)
โโโ config.example.json # Config template
โโโ kapak_cache.json # SGDB cover URL cache (auto-generated)
โโโ kutuphane_cache.json # Library cache (auto-generated)
โโโ epic_token.json # Epic OAuth token (auto-generated)
โโโ .gitignore
โโโ web/
โโโ index.html
โโโ app.js
โโโ style.css
| Platform | Installed Games | Library | Playtime | Covers |
|---|---|---|---|---|
| Steam | โ Disk scan | โ Web API | โ Web API | โ Akamai CDN |
| Epic Games | โ Heroic config | โ Library Service API | โ Epic CDN | |
| GOG | โ Heroic config | โ Heroic config | โ | โ SteamGridDB |
| Amazon | โ Heroic config | โ Heroic config | โ | โ SteamGridDB |
Epic, GOG, and Amazon games are automatically detected if managed via Heroic Launcher.
~/.config/heroic/legendaryConfig/legendary/ (Epic)
~/.config/heroic/gog_store/ (GOG)
~/.config/heroic/nile_config/nile/ (Amazon)
~/.var/app/com.heroicgameslauncher.hgl/... (Flatpak)
| Layer | Technology |
|---|---|
| Backend | Python 3.10+, Eel |
| Frontend | Vanilla HTML / CSS / JavaScript |
| IPC | Eel (bidirectional PythonโJS communication over WebSocket) |
The application uses two cache layers:
kapak_cache.json โ Stores game cover URLs. Loaded into RAM at startup and used without file I/O during runtime. Written to disk once after all SGDB requests are completed.
kutuphane_cache.json โ Stores game list and Steam installation IDs. The library loads instantly at startup. If more than 6 hours have passed since the last scan, Steam API and Epic library are updated in the background.
On every startup, appmanifest_*.acf files are scanned (~100ms) and compared with the cached Steam ID set. Newly installed games are added, removed games are deleted โ without performing a full rescan.
| Platform | Protocol |
|---|---|
| Steam | steam://rungameid/{appid} |
| Epic / GOG / Amazon | heroic://launch/{app_name} |
- Epic playtime: The
appNamereturned by the Playtime API does not always match the catalogitem_id, so playtime may not appear for some Epic games - Epic library filtering: Epic Library Service may return IARC rating certificates and Unreal Engine marketplace assets
- Heroic Windows support: Heroic config path is hardcoded for Linux, so it may not be auto-detected on Windows
- Epic login timing: The
authorization_codegrant must be used within ~30 seconds
Pull requests are welcome. For major changes, opening an issue first is recommended.
MIT