Files
nmemmertandClaude Sonnet 5.5 fc0ae05415
build-container / build (push) Successful in 12m8s
Lyrics and karaoke for the music player
- full-screen lyrics view that follows the song: highlighted current line with a colour sweep (word by word when the source has word timing), tap a line to jump, text size, timing nudge, 'Wrong lyrics?' search
- Karaoke mode: the current line large and centered
- lyrics from Plex first, then the bundled Lyrica service (LRCLIB, Musixmatch via Lrcmux, NetEase, Megalobiz); YouTube captions never used; wrong-length recordings refused; answers kept in /data/lyrics
- lyrica/: Lyrica pinned to one commit, built by the workflow as hub-lyrica; compose service sharing the hub's network
- tools/lyrics-test.js

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21 11:13:00 -04:00

15 lines
897 B
Docker

# Lyrica (https://github.com/Wilooper/Lyrica, MIT): a lyrics service that tries several sources and returns plain, line-synced and word-synced lyrics.
# Pinned to one commit so what runs is what was tested; change LYRICA_REF to update.
FROM python:3.11-slim
ARG LYRICA_REF=2c77f81752f3e1ae9a1adbd7b68f633d60b2de23
ENV PYTHONUNBUFFERED=1 PORT=9999
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends build-essential gcc git libxml2-dev libxslt1-dev libffi-dev libssl-dev curl ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
&& curl -fsSL "https://github.com/Wilooper/Lyrica/archive/${LYRICA_REF}.tar.gz" | tar xz --strip-components=1 -C /app \
&& pip install --no-cache-dir --upgrade pip && pip install --no-cache-dir -r requirements.txt \
&& useradd -m lyrica && chown -R lyrica /app
USER lyrica
EXPOSE 9999
CMD ["gunicorn", "-c", "gunicorn.config.py", "run:app"]