Song server: search and download songs, mobile web UI
- Sources: "free" (Creative Commons songs with media from github.com/UltraStar-Deluxe/songs) and "usdb" (usdb.animux.de with an account; audio/video via yt-dlp from the song's #VIDEO hints or YouTube links in the comments, covers from fanart.tv/YouTube) - Aggregated search (all sources in parallel, in-library flag), download queue into <library>/Downloads/<source>/<Artist - Title>, then rescan - Web UI in wwwroot (plain JS, no build): search, downloads with progress, library; phone first, dark mode, installable - Docker image with yt-dlp, ffmpeg and deno; library mounted writable - Tests for matching, USDB parsing and song rewriting Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
efcc63a640
commit
1e65864c8f
19 files changed
+1862
-12
No files matched your search
@@ -8,11 +8,22 @@ COPY VocaluxeSongServer/ VocaluxeSongServer/
|
||||
RUN dotnet publish VocaluxeSongServer/VocaluxeSongServer.csproj -c ReleaseLinux --no-restore -o /app
|
||||
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:10.0
|
||||
# Song downloads (USDB source): yt-dlp for audio/video, ffmpeg for merging, deno as the JavaScript runtime
|
||||
# yt-dlp needs for YouTube. yt-dlp is the newest release at build time; rebuild the image to update it.
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y --no-install-recommends ffmpeg ca-certificates curl unzip \
|
||||
&& curl -fsSL -o /usr/local/bin/yt-dlp https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp_linux \
|
||||
&& chmod 755 /usr/local/bin/yt-dlp \
|
||||
&& curl -fsSL -o /tmp/deno.zip https://github.com/denoland/deno/releases/latest/download/deno-x86_64-unknown-linux-gnu.zip \
|
||||
&& unzip -q /tmp/deno.zip -d /usr/local/bin && chmod 755 /usr/local/bin/deno && rm /tmp/deno.zip \
|
||||
&& apt-get purge -y unzip && apt-get autoremove -y && rm -rf /var/lib/apt/lists/*
|
||||
WORKDIR /app
|
||||
COPY --from=build /app .
|
||||
# The song library (read-only is enough); see README.md
|
||||
# The song library; must be writable for downloads (new songs go to <library>/Downloads)
|
||||
VOLUME /songs
|
||||
ENV Library__Path=/songs
|
||||
ENV Library__Path=/songs \
|
||||
HOME=/tmp \
|
||||
XDG_CACHE_HOME=/tmp/cache
|
||||
EXPOSE 8080
|
||||
USER $APP_UID
|
||||
# Runs as the user given with --user (on Unraid 99:100 = nobody:users, the owner of the shares)
|
||||
ENTRYPOINT ["dotnet", "VocaluxeSongServer.dll"]
|
||||
Reference in new issue
Block a user