zfoxer/foo_scrobbler_mac
zfoxer/foo_scrobbler_mac has 39 GitHub stars and 1 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-09 07:14 UTC. Last push 2026-10-19.
Native Last.fm scrobbler (foo_scrobbler_mac) for foobar2000 on macOS.
What you can do
- Native macOS Last.fm scrobbling, built specifically for foobar2000Fully integrated with foobar2000 for macOS. No compatibility layers or wrapper apps. Not a port.
- Rule-based submission logicScrobbles only when playback is meaningful (e.g., ≥ 50% or ≥ 240 seconds).
- Automatic offline cachingIf Last.fm or the network is unavailable, scrobbles are stored and submitted automatically later.
- Accurate “Now Playing” handlingFully aligned with Last.fm Scrobbling 2.0 API specification.
Measured star growth
- in 24h
- 0
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Original
Foo Scrobbler for Mac
Version: 2.0.1 — foo_scrobbler_mac — Released under MIT License
© 2025-2026 by Konstantinos Kyriakopoulos
See the detailed Installation Guide and Last.fm Authentication Guide.
Foo Scrobbler (foo_scrobbler_mac) is a native Last.fm scrobbling plugin for foobar2000 on macOS. Submits tracks based on precise playback rules, caches scrobbles when offline, and operates silently after one-time authentication. Built using the official foobar plugin API, it focuses on reliability, low overhead, and correct metadata handling. Fully open-source under MIT Licence.
Supports macOS 11.5+ on both Intel and ARM.
This is the GitHub site of the macOS version.
For the native Windows version of Foo Scrobbler see here.
For the port of Foo Scrobbler to the fooyin player see here.
Key Features
Native macOS Last.fm scrobbling, built specifically for foobar2000
Fully integrated with foobar2000 for macOS. No compatibility layers or wrapper apps. Not a port.Rule-based submission logic
Scrobbles only when playback is meaningful (e.g., ≥ 50% or ≥ 240 seconds).Automatic offline caching
If Last.fm or the network is unavailable, scrobbles are stored and submitted automatically later.Accurate “Now Playing” handling
Fully aligned with Last.fm Scrobbling 2.0 API specification.Minimal user interaction
Authentication is required only once.Lightweight and efficient
Runs inside foobar2000 without performance loss. Does not rely on third-party dependencies.Strict playback validation
Prevents malformed or duplicate scrobbles.Full radio streaming and dynamic sources support
Advanced stream metadata handling.Regex & Title Formatting support
Title Formatting for input tags and filtering scrobbles | Regular expressions for filtering scrobbles.Full console logging
Reports every impactful internal scrobbling action.Open-source (MIT License)
Transparent and extensible.
Usage
Install foo_scrobbler_mac.fb2k-component from within foobar2000 by pointing to it (that is, add via '+') from the components section.
Authentication requires only an active Last.fm account. Users grant access once through the Last.fm website with their account, after which Foo Scrobbler runs quietly in the background and submits track information automatically. If authentication is cleared from the menu, the same user —or a different one— must grant access again through browser redirection to the Last.fm website. Foo Scrobbler adds a simple, convenient and non-intrusive last entry under Playback in the menu bar. More options are located in Preferences → Tools → Foo Scrobbler.
If you prefer to compile the plugin yourself, see the Compilation Guide.
Changelog
Expand
2.0.1 2026-10-02
Extend handling of NowPlaying for Stop/Pause on all use cases.
Fix console logging of per-scrobble Last.fm refusals within batches.
Fix parsing of local tracks without Artist field, to avoid NP dispatch.
2.0.0 2026-08-23
Replace JSON key scanners with a strict parser written from scratch.
Make worker HTTP cancellable so exit doesn't block on a stalled socket.
Detect and handle Last.fm per-track scrobble refusals of dispatched batches.
Refresh pending metadata by queue entry id.
Catch regex errors at match time.
Set the maximum daily scrobble submission budget to 900 from 2600.
1.5.7 2026-08-01
Rework the logic behind the seekbar and scrobble eligibility.
Pass musicbrainz_trackid through the TF pipeline.
1.5.6 2026-07-20
Fix handling of eligible pending stream scrobbles at shutdown.
1.5.5 2026-07-07
Fix order of station title content parsing.
Fix pause state from vetoing an eligible scrobble at track boundaries.
Refresh FOO_SCROBBLER tag state on edits instead of polling every tick.
Add option to hide the Playback Last.fm menu.
Run Last.fm authentication off the main thread.
1.5.4 2026-06-28
Apply Title Formatting scripts to streams like local files.
Keep short CJK stream titles from being filtered as station noise.
1.5.3 2026-06-21
Defer filtered dynamic tracks like local files.
Further separate dynamic and local tracker paths.
Move shared tracker helpers into utilities.
1.5.2 2026-06-11
Extend validation for VA field values.
Defer tracks not in the library instead of rejecting them immediately.
Fix UTF-8 handling in station title heuristic.
Make exclusion substring matching Unicode-aware.
1.5.1 2026-06-01
Add an authentication status indicator to the Console tab in Preferences.
Disable the Dynamic sources combo box when “Scrobble only from media library” is enabled.
Fix Now Playing notifications being sent when scrobbling was resumed while playback was paused.
1.5.0 2026-05-28
Replace the Advanced settings area with a Cocoa tabbed pane under Preferences → Tools → Foo Scrobbler.
Add four Title Formatting exclusion filter templates.
Clean up small repeated snippets of code related to retry behavior and scrobbling.
Hold filtered tracks until they become eligible instead of dropping them immediately.
Improve track metadata handling for local files and dynamic streams.
1.1.2 2026-05-21
Refresh edited playback metadata through the same filters before NP or queue updates for consistency.
Fix Last.fm error 9 re-auth console spam.
1.1.1 2026-05-11
Preserve order of TF input and TF exclusion filters.
Improve batch scrobbling error logs.
Use not-due scrobbles to fill batches for small queues.
1.1.0 2026-05-08
Update queue draining with Last.fm API 2.0 batch scrobbling support.
Fix rare worker races that could cause busy spins and stale queue retries.
Add exclusion filtering using foobar2000 Title Formatting.
Add regex filtering support for albums.
Drop support for the legacy v1.0.1 short-lived queue format.
Ignore scrobbling and Now Playing according to the FOO_SCROBBLER tag flag.
Replace Apple MD5 hashing with the SDK-native implementation.
Update the universal build to use Apple Clang 21.
1.0.9 2026-03-26
Avoid reparsing the persisted scrobble queue on every access.
Cache compiled Title Format scripts instead of rebuilding them during playback.
Replace unsafe static locals in stream dedup with per-instance tracker state.
Treat Last.fm back-end error 8 as temp, not having limited retries before discarding.
1.0.7 2026-03-20
Handle Last.fm rate-limit error 29 with queue cooldown.
Added MUSICBRAINZ_TRACKID in scrobbling and NP dispatch data.
Merged NP code into WebAPI.
1.0.6 2026-03-12
Added support for foobar Title Formatting for input tags. Removed previous tag mapping.
1.0.5 2026-03-07
Added support for regular expressions (regex) to filter out submissions (Advanced prefs).
Fixed: Unicode track titles, are now handled correctly for Now Playing and scrobbling.
Language support increased from C++17 → 20.
Switched to MIT License.
1.0.2 2026-02-25
Added tag mapping support (Advanced preferences).
Discard queued scrobbles after 5 consecutive unclassified responses from Last.fm.
Fixed: Minor bypass of daily queue drain limit.
Changed: Small-queue cooldown ignore threshold reduced to 50 (from 100).
Removed old queue-format compatibility (pre-AlbumArtist field).
1.0.1 2026-02-08
Fix: Include Album Artist in Now Playing and scrobble submissions (compilations support).
1.0.0 2026-02-08
Minor modifications to logging.
0.9.9 2026-01-25
Supporting dynamic sources like radio streams, etc.
0.9.7 2026-01-08
Improved Last.fm web client error handling.
0.9.6 2026-01-04
If a different user authenticates, the local scrobble cache is cleared.
Controlling the submission rate of the local scrobble cache to meet Last.fm requirements.
Fixed bug when authentication was not completed the first time and fbar restart was required.
Refactored the internal thread system.
0.9.5 2025-12-24
Introduced new configuration fields in Preferences → Advanced → Tools → Foo Scrobbler.
Added option to only scrobble tracks from the media library.
Added option to set the console info level: none, basic or debug.
Added option to disable NowPlaying notifications.
0.7.7 2025-12-15
Fixed bug related to the behaviour while the user gets unauthenticated.
Fixed policy issues related to disabling scrobbling.
0.7.6 2025-12-14
Removed rule about the seekbar moves at first half of track which were cancelling the scrobble.
Fixed linear queue policy.
0.7.5 2025-12-13
Not considering candidate scrobbles with garbage tag entries.
Added linear back-off retry strategy per scrobble for the queue.
Improved internal design.
0.7.3 2025-12-07
Improved management of the communication to Last.fm.
Improved internal timing system according to specifications.
When track tags change during playback, scrobbling will detect them and use the updated info.
Seeking across the submission mark with the slider (e.g., 50%) doesn’t cheat the scrobble.
Added option to enable/disable scrobbling while the user remains authenticated.
0.7.0 2025-12-01
Initial release.
Explore related projects
ytdl-org/youtube-dl
Command-line program to download videos from YouTube.com and other video sites
141,500 starsexcalidraw/excalidraw
Virtual whiteboard for sketching hand-drawn like diagrams
135,396 starsgodotengine/godot
Godot Engine – Multi-platform 2D and 3D game engine
119,840 starsmrdoob/three.js
JavaScript 3D Library.
117,905 stars