[PR #12941] [MERGED] Add API support for ELRC word-based lyrics #13423

Closed
opened 2026-02-07 07:12:37 +03:00 by OVERLORD · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/jellyfin/jellyfin/pull/12941
Author: @AlexDalas
Created: 11/2/2024
Status: Merged
Merged: 4/7/2025
Merged by: @crobibero

Base: masterHead: master


📝 Commits (10+)

📊 Changes

5 files changed (+157 additions, -6 deletions)

View changed files

📝 MediaBrowser.Model/Lyrics/LyricLine.cs (+10 -1)
MediaBrowser.Model/Lyrics/LyricLineCue.cs (+35 -0)
📝 MediaBrowser.Providers/Lyric/LrcLyricParser.cs (+40 -5)
tests/Jellyfin.Providers.Tests/Lyrics/LrcLyricParserTests.cs (+41 -0)
tests/Jellyfin.Providers.Tests/Test Data/Lyrics/Fleetwood Mac - Rumors.elrc (+31 -0)

📄 Description

Adds support for word-based timestamps from within ELRC files. This adds to the lyrics support, as the current lyrics support does not support word-by-word lyrics in an ELRC file Instead, it just ignores it. Adding this would mean that a client could read the TimeTags and get word-by-word timings for lyrics.

I've created a fork of Jellyfin-web that works with the lyrics from the backend, but it is a bit buggy at the moment because of where the code for searching the word is ran.

Changes

  • Adds new parameter to LyricLine > timetags - "Gets the Enhanced LRC timestamps for the song."
  • Adds new entry to "Audio/id/Lyrics" page with a dictionary that has "Section (letters): time".
    - For example "4: 6000" would be 6 seconds in and 4 letters into the lyrics.

Issues
No issues, but related: Feishin (which works with Jellyfin) shows this when you use ELRC files with Navidrome. It does not show this on Jellyfin, but it doesn't time the word lyrics either.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/jellyfin/jellyfin/pull/12941 **Author:** [@AlexDalas](https://github.com/AlexDalas) **Created:** 11/2/2024 **Status:** ✅ Merged **Merged:** 4/7/2025 **Merged by:** [@crobibero](https://github.com/crobibero) **Base:** `master` ← **Head:** `master` --- ### 📝 Commits (10+) - [`b1ac4e2`](https://github.com/jellyfin/jellyfin/commit/b1ac4e2c9725eca025650ed61ab708d287b2f212) Add API support for ELRC word-based lyrics - [`a635f45`](https://github.com/jellyfin/jellyfin/commit/a635f455bdba839cb7db5fb3517efc326985e121) Merge branch 'jellyfin:master' into master - [`93ce630`](https://github.com/jellyfin/jellyfin/commit/93ce630a24bea2a01752c5bf6193a71d4e865485) Create TimeTags object - [`85001b0`](https://github.com/jellyfin/jellyfin/commit/85001b03088bad67932b5b6f07323d4cf3c4d4ac) Merge branch 'master' of https://github.com/AlexDalas/jellyfin-elrc-lyrics - [`d920dc3`](https://github.com/jellyfin/jellyfin/commit/d920dc33e263a57dbe8df82c962bcf053d85a13a) redo TimeTag implementation - [`87e06c6`](https://github.com/jellyfin/jellyfin/commit/87e06c64a07ae49b977051634d047979bccf7db2) Changes to LyricLineTimeTag - [`a9feeac`](https://github.com/jellyfin/jellyfin/commit/a9feeac8b4ab5fe66c5ec49267bb947d083edb2d) Change LyricLineTimeTag to LyricLineCue, include info about end times - [`f89552e`](https://github.com/jellyfin/jellyfin/commit/f89552ef40245a6f35ba78142500c5d1dafd4d74) Remove width - [`c3d7f13`](https://github.com/jellyfin/jellyfin/commit/c3d7f13d4715d99767f6153ec4d70bbb277ee8a4) Remove width tag - [`5c4a430`](https://github.com/jellyfin/jellyfin/commit/5c4a430574b1ca9cb20de7af07de7f3af5fa7e2c) Merge remote-tracking branch 'refs/remotes/upstream/master' into elrc ### 📊 Changes **5 files changed** (+157 additions, -6 deletions) <details> <summary>View changed files</summary> 📝 `MediaBrowser.Model/Lyrics/LyricLine.cs` (+10 -1) ➕ `MediaBrowser.Model/Lyrics/LyricLineCue.cs` (+35 -0) 📝 `MediaBrowser.Providers/Lyric/LrcLyricParser.cs` (+40 -5) ➕ `tests/Jellyfin.Providers.Tests/Lyrics/LrcLyricParserTests.cs` (+41 -0) ➕ `tests/Jellyfin.Providers.Tests/Test Data/Lyrics/Fleetwood Mac - Rumors.elrc` (+31 -0) </details> ### 📄 Description Adds support for word-based timestamps from within ELRC files. This adds to the lyrics support, as the current lyrics support does not support word-by-word lyrics in an ELRC file Instead, it just ignores it. Adding this would mean that a client could read the TimeTags and get word-by-word timings for lyrics. I've created [a fork of Jellyfin-web](https://github.com/AlexDalas/jellyfin-web-elrc-lyrics) that works with the lyrics from the backend, but it is a bit buggy at the moment because of where the code for searching the word is ran. **Changes** - Adds new parameter to LyricLine > timetags - "Gets the Enhanced LRC timestamps for the song." - Adds new entry to "Audio/id/Lyrics" page with a dictionary that has "Section (letters): time". - For example "4: 6000" would be 6 seconds in and 4 letters into the lyrics. **Issues** No issues, but related: Feishin (which works with Jellyfin) shows [this](https://github.com/jeffvli/feishin/issues/555) when you use ELRC files with Navidrome. It does not show this on Jellyfin, but it doesn't time the word lyrics either. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
OVERLORD added the pull-request label 2026-02-07 07:12:37 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/jellyfin#13423