Changes for version 0.2.0 - 2026-04-15

  • GUI refactored into Moo roles (MetadataFetch, SheetSync, FolderBrowse).
  • Background metadata fetch via fork+pipe; UI remains responsive.
  • Live track-row updates in the list view as metadata arrives.
  • Retry Incomplete Metadata: re-fetches only tracks missing key fields.
  • FLAC embedded tag reading via Audio::FLAC::Header (optional).
  • MusicBrainz genre support (curated genres preferred over folksonomy tags).
  • Genre lookup now falls back through release → release-group levels.
  • Title cleaning now strips leading track numbers from underscore filenames.
  • Duration captured from mpv playback and persisted to DB and sheet.
  • Config supports google_restapi key introduced in Google::RestApi 2.2.1.
  • Track lookup fixed after column sort (was using stale position index).
  • Column widths set to sensible defaults on initial load.
  • Log4perl appenders set to UTF-8 to suppress wide-character warnings.
  • Library → Refresh menu item added.
  • Stop button hidden when playback is idle.
  • Folder-scoped metadata fetch via sidebar right-click.

Documentation

GTK3 music player for Google Drive

Modules

GTK3 music player for Google Drive
Load, persist and query DrivePlayer configuration
SQLite database facade for the DrivePlayer library
GTK3 application window for DrivePlayer
Role for Drive folder browsing dialogs
Role for background metadata fetching
Role for Google Sheet synchronisation
Fetch track metadata from iTunes, MusicBrainz, and AcoustID
mpv-based audio player that streams from Google Drive
Recursively scan a Google Drive folder and store tracks
DBIx::Class schema for the DrivePlayer SQLite database
DBIx::Class result for the folders table
DBIx::Class result for the scan_folders table
DBIx::Class result for the tracks table
Common imports for all DrivePlayer modules
Sync the DrivePlayer library to/from a Google Sheet