gokadzev / gokadzev/Musify

[Feature] Native Last.fm and ListenBrainz scrobbling

Open
#886 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Dart
Stars
4.2k
Forks
385
Avg merge
1d 18h
Merged PRs (30d)
17

Description

## Feature Request: Native Last.fm / ListenBrainz Scrobbling

### Problem

Musify has no built-in Last.fm or ListenBrainz scrobbling. There are no open or closed issues tracking this. Users who maintain a listening history on Last.fm or ListenBrainz cannot use Musify without losing scrobble data, and third-party scrobblers on Windows (where Musify also runs) often cannot detect playback from apps that do not expose SMTC metadata.

### Proposed Solution

Add a **Scrobbling** section in Settings > Integrations:
1. **Last.fm login** via the official Last.fm authentication API (web OAuth, session key stored in secure storage)
2. **Scrobble submission** when >=50% of a track plays: sends track title, artist, album, duration, and Unix timestamp per the Last.fm scrobble protocol
3. **Now playing** update at track start
4. Optional **ListenBrainz** parallel submission (same UX, different API endpoint — free, privacy-respecting alternative)

### Why it matters

Last.fm scrobbling is a standard feature expected in any serious music player. Musify targets users who want a privacy-respecting, open-source alternative to Spotify/YouTube Music. Those users frequently maintain listening history on Last.fm or ListenBrainz as part of their music metadata workflow. Flutter/Dart has existing packages for the Last.fm API that make implementation straightforward.

### References

- Last.fm scrobbling API: https://www.last.fm/api/scrobbling
- ListenBrainz API: https://listenbrainz.readthedocs.io/en/latest/users/api/core.html
- Dart `lastfm` package on pub.dev

### Platform

Android + Windows (cross-platform).

Contributor guide

Open the contributing guide

Research direction

Start with Settings > Integrations and the playback lifecycle, then review the Last.fm scrobbling API, ListenBrainz API, and the referenced Dart lastfm package. Done means users can authenticate securely, submit now-playing and 50%-complete scrobbles, and optionally enable both services on Android and Windows.

Written by the indexing model from the issue text.

Assessment

Tech stack
dart, flutter
Domain
api, authentication, desktop, mobile
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.