# DrivePlayer A GTK3 desktop music player that streams audio files stored in Google Drive. ## Features - Streams audio directly from Google Drive via mpv - Local SQLite library of scanned folders and tracks - Sidebar navigation by artist, album, genre, or folder - Metadata enrichment via iTunes, MusicBrainz, and AcoustID fingerprinting - Google Sheets sync for portable metadata across multiple devices - Incremental folder sync (adds new files, removes deleted ones) - OAuth2 authentication via Google::RestApi ## Requirements ### System packages ``` sudo apt-get install build-essential pkg-config libssl-dev mpv \ libgtk-3-dev libglib2.0-dev libgirepository1.0-dev gir1.2-gtk-3.0 ``` ### CPAN dependencies ``` cpanm --installdeps . ``` Or install everything in one step: ``` make install ``` ## Setup ### 1. Create Google Cloud credentials 1. Go to [Google Cloud Console](https://console.cloud.google.com/) and create a project 2. Enable the **Google Drive API**: APIs & Services → Enable APIs → search "Drive API" 3. Create OAuth credentials: APIs & Services → Credentials → Create Credentials → OAuth client ID → **Desktop app** 4. Note the **Client ID** and **Client Secret** ### 2. Configure the application Launch the app, open **File → Settings**, and paste the Client ID and Client Secret. Click Save. The config file is written to `~/.config/drive_player/config.yaml`. ### 3. Authorise access to Google Drive ``` google_restapi_oauth_token_creator ``` Follow the prompts. The token is stored at `~/.config/drive_player/token.dat` by default. ### 4. Add music folders Open **File → Manage Folders** and add the Google Drive folder ID (the last path component of the folder's Drive URL) and a display name. ### 5. Sync Click **Sync** in the toolbar or choose **Library → Sync** to scan your Drive folders and populate the library. ## Cross-device sync via Google Sheets DrivePlayer can store your library metadata in a Google Spreadsheet so it survives across devices or a fresh install: - **File → Settings**: enter or create a Spreadsheet ID - Metadata is pushed to the sheet automatically after each sync - On a new device, the sheet is pulled automatically when the app starts with an empty database, restoring your library without a full rescan ## Files | Path | Description | |------|-------------| | `~/.config/drive_player/config.yaml` | OAuth credentials, log level, folder list | | `~/.config/drive_player/token.dat` | OAuth2 token cache | | `~/.local/share/drive_player/music.db` | SQLite track library | | `~/.local/share/drive_player/drive_player.log` | Application log | ## License MIT — see [LICENSE](LICENSE)