Skip to content

About

Last.fm music integration for Jellyfin 12

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

145 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

JellySin Last.fm

HISS Adopted

Praetor manages this repository's declared governance policy. This managed block records adoption state; it is not a verification certificate.

Verification: make verify-all runs the repository's configured verification cascade.

HISS Audit: praetorctl audit enforces policy, generated-surface integrity, and the debt ratchet.

Context Sync: praetorctl compile-context --verify verifies every generated agent context against AGENTS.md.

Debt Baseline: .standards-baseline.json anchors the debt ratchet at 0 recorded infractions; audit forbids growth.

Last.fm music integration for Jellyfin 12: scrobbling, favourites, listening insights, discovery and playlists. This is a new implementation with its own plugin identity. The plugin is in development; the first release is 0.1.0.

It is a project of the JellySin organisation. JellySin: Jellyfin plus sin, a little temptation for your media server; said JELLY-sin.

Music features

  • Now-playing updates and scrobbles based on observed listening, with a bounded durable delivery queue and visible retry/reconnect state.
  • Last.fm loved tracks and Jellyfin favourites, with additive initial reconciliation and an explicit review before propagating removals.
  • Recent history, top tracks/artists/albums and listening statistics; an optional previewed import raises local aggregate play counts and last-played dates.
  • Discovery of playable music already in your library and off-library tracks, artists and albums linked to Last.fm.
  • Private Jellyfin playlists from loved tracks, charts, similarity and discovery, with saved recipes and optional daily refresh.
  • Metadata providers for artist biographies, album wikis and album release dates, with HTML stripped to plain text and a link back to the Last.fm page.
  • External links to Last.fm artist and album pages built from library names on page render without network calls.

The account dashboard is served by the plugin at /JellySin/Lastfm/ under your Jellyfin server's base path. Sign in with Jellyfin credentials or Quick Connect, then select Connect Last.fm: the browser opens Last.fm, you allow access there, and it returns to the dashboard connected. Each Jellyfin user manages their own account. Last.fm passwords and session keys are never entered into the dashboard.

Installation after the first release

  1. Run Jellyfin 12 and add the JellySin Plugin Repository in the administrator dashboard: https://raw.githubusercontent.com/jellysin/repo/main/manifest.json.
  2. Install JellySin Last.fm when it appears in the Plugin Repository, then restart Jellyfin.
  3. As administrator, open the plugin's settings page and select Connect Last.fm to connect your own account. Release builds need no application key.
  4. Every other user visits /JellySin/Lastfm/ on the server, signs in, selects Connect Last.fm and enables the features they want for their account. An administrator can add a link to it in Jellyfin's menu.

Jellyfin 10.11 is unsupported. Users of the older Last.fm plugin must remove it, restart Jellyfin and reconnect their accounts in this plugin. The new GUID is 2034650d-a290-4a16-b195-89fb44cfb932; old credentials and XML settings are not silently copied. See migration.

Jellyfin versions and clients

The plugin is compiled against Jellyfin 12.0.0 and supports Jellyfin 12 from there up. Every change is checked on Jellyfin 12.0.0, 12.1.0 and 12.2.0; release readiness names what each check covers.

Scrobbling reads the playback reports the server receives, whichever client sends them; a client that reports no playback to the server produces no listen. Some clients report only when a track starts and when it stops. For such a session the server's own once-a-second position updates count as listening time, up to the position the client's stop reports, and only once that stop arrives. Plays a client made offline and reports later only as a last-played date are not scrobbled (#129). The checks send these reports through the server's API. The account dashboard is a web page of the server and was checked in a Chromium browser and in Jellyfin's web interface; Jellyfin's TV, mobile and desktop clients were not checked.

Planned work is listed in the repository's milestones.

Removing the plugin

Removing the plugin in Jellyfin removes its program files only. Its data folder, which holds the account state and the key ring, and its settings file stay on the server, and Last.fm keeps each authorization until its user revokes it there. Stored data names the places and what a check showed.

Boundaries

Generated playlists contain items the user can access in Jellyfin. External discovery links do not stream or download unavailable music. The plugin does not use Last.fm's deprecated radio or playlist APIs and does not download artwork. Its dashboard is a separate authenticated page; custom controls do not automatically appear in every Jellyfin TV or mobile client.

History import updates Jellyfin's aggregate play count and last-played fields, without fabricating native chronological play events. It retains the higher count and later verified date; a later deliberate Jellyfin reset remains possible. Unmatched and ambiguous tracks remain for review. Last.fm offers no idempotency key for scrobbles, so an accepted request whose reply is lost cannot be guaranteed exactly once.

See account privacy and operations, API research and integration boundaries, and architecture. Performance measurements and their limits are recorded in the benchmark documentation.

Build and validation instructions are in CONTRIBUTING.md. Code is licensed under EUPL-1.2 and documentation under CC-BY-SA-4.0, as REUSE.toml records file by file; Last.fm data and third-party dependencies retain their own terms.

About

Last.fm music integration for Jellyfin 12

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages