Social: scrobbling Plugin #26
Labels
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Depends on
#19 Plugin API: capability enforcement and secret isolation
SBDeveloper/medley
Reference
SBDeveloper/medley#26
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of #13
What to build
Optional event Plugin that scrobbles played Tracks to a service, built only on playback events and the public plugin API.
Open question (needs a human)
Which service to scrobble to (e.g. Last.fm or ListenBrainz). Decide before this ticket becomes ready-for-agent.
Acceptance criteria
Blocked by
Agent Brief
Decision: scrobble to ListenBrainz (open API, single user token, no shared secret or request signing). Last.fm is out of scope for this ticket; file a separate ticket if wanted.
Category: enhancement
Summary: Optional event Plugin that submits played Tracks to ListenBrainz, built only on playback events and the public plugin API.
Behaviour:
api.listenbrainz.org, playback events, own secret storage).GET /1/validate-tokenbefore enabling.playing_nowviaPOST /1/submit-listens(Authorization: Token <token>).listen_type: "single"withlistened_at,artist_name,track_name,release_namewhen known. Threshold: 50% of Track duration or 4 minutes, whichever comes first (ListenBrainz guidance). Skip Tracks shorter than 30s.Acceptance criteria:
playing_nowon start,singlelisten after threshold, no duplicatesOut of scope: Last.fm, love/like sync, importing history, Track matching across Sources.
Dependencies: blocked by #19 (capability enforcement and secret isolation).
crates/plugin-apicurrently exposes no network or event-subscription surface; if #18/#19 don't deliver the HTTP and playback-event capabilities this Plugin needs, add them there first rather than special-casing this Plugin.Implemented in
8066fcf: optional ListenBrainz plugin (plugins/optional/listenbrainz). Token validated and kept in plugin storage; playing_now on start, single listen after 50% or 4 min of real listening; tracks under 30s skipped; failed submissions tried 3 times then dropped. Tested through the plugin host with ListenBrainz faked.