Skip to content

Feature Request: Support #EXTIMG tag in M3U playlists for remote stream artwork #1588

Description

@BrewGnu

Summary

I would like to suggest adding support for an '#EXTIMG' tag in M3U playlists to allow artwork to be displayed for remote streams and podcast episodes.

Current behaviour

When playing remote audio streams or podcast episodes loaded via M3U playlist, LMS has no way to display artwork. For local files, artwork is read from ID3 tags. For remote streams, LMS relies on ICY metadata embedded in the stream itself - which podcast files typically do not provide.

Proposed behaviour

LMS should recognise the '#EXTIMG' tag in M3U playlists and use the URL it contains as the artwork source for the following track entry. This would allow clients like iPeng to display episode or channel artwork for podcast streams.

Example playlist structure:

#EXTM3U
#EXTURL:podcast://https://audio.example.com/episode.mp3
#EXTIMG:https://example.com/podcast-artwork.jpg
#EXTINF:3600,Episode Title
podcast://https://audio.example.com/episode.mp3

Why '#EXTIMG'?

LMS already uses its own extended M3U tags ('#EXTURL', '#CURTRACK') beyond the standard '#EXTINF'. '#EXTIMG' is a natural extension of this convention and is already used by some other players for the same purpose. Adopting it would be consistent with the existing LMS M3U dialect.

Use case

Users who manage podcast playlists externally - for example, aggregating episodes from multiple RSS feeds into a single chronological M3U playlist - currently have no way to pass artwork metadata to LMS. RSS feeds provide artwork URLs at both channel level () and episode level (itunes:image). A tool generating such playlists could easily embed these URLs via '#EXTIMG', provided LMS reads and stores them.

On the LMS side, the implementation would be straightforward: when parsing an M3U file, if an '#EXTIMG' line is encountered, store its URL as the 'artwork_url' for the subsequent track entry in the internal database. Clients such as iPeng already retrieve artwork via the LMS API and would display it automatically without any client-side changes.

Environment

  • LMS version: 9.1.0

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions