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