foo_artwork ~ Foobar2000 Advanced Album Art Display


A high-performance, feature-rich artwork display component for foobar2000 v2 (x64 and 32-bit). It provides intelligent, multi-tiered artwork discovery and acoustic audio recognition for local tracks, internet radio streams, and YouTube playback. It seamlessly supports both Default User Interface (DUI) and Columns UI (CUI).

Artwork Discovery & Retrieval:

  • Local Artwork Search: Automatically searches for artwork files and embedded tags configured in foobar2000 (Preferences > Display > Album Art).
  • Online Commercial Search APIs: Automatically queries Deezer, iTunes, Last.fm, MusicBrainz (Cover Art Archive), and Discogs when local artwork is missing.
  • Customizable API Priority: Reorder and enable/disable individual API services via an intuitive 5-position priority chain.
  • In-Stream Broadcast Artwork Extraction: Parses dynamic in-stream cover links from $info(cover_url), COVER_URL, ARTWORK_URL, icy-cover-url, song.art, and XML/JSON broadcast streams (e.g. Radio Paradise, Cidade FM).
  • YouTube Video Thumbnail Retrieval: Automatically extracts 11-character video IDs from YouTube links and plugin protocols (youtube.com, youtu.be, 3dyd://, fy://, fy+https://), querying commercial music APIs first and falling back to high-resolution video thumbnails (maxresdefault.jpg / hqdefault.jpg).
  • Interactive Provider Rejection: Reject mismatched artwork on-the-fly via shortcut or menu command (View > Artwork Display > Reject Artwork & Search Next Provider). Evicts the bad cache file, blacklists the provider for the active track, and queries the next provider in the fallback chain.
  • Universal Format Support: High-performance decoding for .png, .jpg / .jpeg, .webp (via Windows Imaging Component), .gif, and .bmp.

Internet Radio & Streaming Intelligence:

  • ACRCloud Acoustic Audio Recognition: Local 16 kHz PCM stream sampling and RIFF WAV payload generation to identify untagged radio streams and music tracks via acoustic fingerprinting.
  • Multi-Account ACRCloud Failover: Configure Primary and Secondary credentials with automatic, seamless failover when the Primary account exhausts its monthly quota (Error 3001).
  • Windows DPAPI Credential Security: ACRCloud Access Keys and Secrets are securely encrypted on disk using the Windows Data Protection API (CryptProtectData), eliminating plaintext exposure in .cfg files.
  • CoverSync Stream Latency Compensation: Asynchronous cue delay compensation (?coversync=±N) synchronizes artwork and metadata transitions on radio streams where the audio buffer lags behind metadata changes.
  • External Now-Playing Stream APIs: Automated polling and auto-probing for AzuraCast (/api/nowplaying) and RadioReg (api.radioreg.net) JSON endpoints, supporting live listener counts, cue timings, and HLS streams.
  • m-TAGS & URL Modifiers: Full support for .tags files (reading target stream URLs from the @ metadata tag) and URL query flags (?forceacr, ?coversync, ?inverted, ?rejectstationcovers, ?ext_api_autoprobe, ?bypass).

Dynamic Title Formatting Variables:

  • Canonical API Metadata Publication: Commercial search APIs (Deezer, iTunes, Last.fm, Discogs) and ACRCloud extract authoritative metadata directly into foobar2000 title formatting variables (%foo_artwork_artist%, %foo_artwork_title%, %foo_artwork_album%), replacing messy stream tags.
  • Dynamic Track Timing: Real-time duration (%foo_artwork_length%), elapsed time (%foo_artwork_playback_time%), and countdown remaining (%foo_artwork_playback_remaining%) calculated for both local audio files and live radio streams.
  • Live Stream Diagnostics: Real-time status string (%foo_artwork_status%) reporting query stages, stream connection progress, CoverSync countdowns, and image dimensions with payload size (e.g. Art 1200x1200 342 KB from Deezer).
  • Live Listener Counts: Real-time listener statistics (%foo_artwork_listeners%) from AzuraCast and RadioReg broadcasts.

Advanced Metadata Sanitization:

  • 4-Stage Stream Metadata Sanitizer: Cleans noisy stream metadata by stripping broadcast slogans, stream headers, URLs, timestamps, track numbers, and media noise while protecting band names containing &, and, or slashes (Mumford & Sons, Earth, Wind & Fire, AC/DC).
  • Accented UTF-8 Title Casing: Normalizes all-caps and all-lowercase stream metadata into Title Case with full support for accented characters across Portuguese, Spanish, French, and Italian without CP1252 character corruption.
  • Non-Latin Script Preservation: Conservative sanitization rules protect Cyrillic, Greek, and other non-Latin alphabets from accidental bracket stripping or character truncation.
  • Dedicated Noise Words Blacklist: User-configurable blacklist page backed by an auto-reloaded text file (foo_artwork_data\blacklist.txt).

Caching & Storage Architecture:

  • Persistent Disk Metadata Caching (.meta Sidecars): Remote API metadata is cached on disk alongside image binaries (<hash>.meta alongside <hash>.cache), ensuring instant warm track replays in under 1ms with zero network overhead.
  • Automatic 1 GB Disk Cache Limit: Intelligent background LRU (Least Recently Used) cache eviction automatically keeps the cache under 1 GB, pruning old entries down to 900 MB when needed.
  • Single-File Cache Mode (current.cache): Overwrites a single cache file (current.cache) for external skin scripts and panels (e.g. JScript Panel 3 Thumbs) that monitor a folder for the currently playing track’s artwork.
  • Cache Freshness Verification: Automatically verifies whether local artwork or file tags were updated after the cache was generated, refreshing stale cache entries automatically.

User Interface & Interactivity:

  • Dark Mode Support: Full native theme integration with foobar2000 dark mode across all UI elements and dialogs.
  • Dual UI Support: Native panel integration for both Default UI (DUI) and Columns UI (CUI).
  • Popup Artwork Viewer: Double-click any artwork panel to launch an interactive viewer with window memory, a toggle between “Fit to window” and “Show original size”, mouse-drag panning for oversized images, and a “Save Image…” button.
  • foo_artgrab Integration: Automatic hover overlay displaying a download arrow icon in the bottom-left corner when foo_artgrab.dll is installed, launching the art grabber gallery in one click.
  • On-Screen Display (OSD) & Infobar: Optional Infobar in DUI displaying artist, album, and track title; configurable OSD overlay showing the artwork provider source.

github.com/jame25/foo_artwork
hydrogenaudio.org/index.php/topic,128111.0

Comments welcome