split audio/subtitle concerns, remove docker-in-docker, add per-node path mapping
All checks were successful
Build and Push Docker Image / build (push) Successful in 1m54s

- install ffmpeg in dockerfile (fixes exit code 127)
- buildCommand() now audio-only remux, no subtitle extraction
- add unapprove endpoint + ui button for approved items
- add batch extract-all subtitles endpoint + ui button
- audio detail page shows only video+audio streams
- remove global movies_path/series_path config, add per-node path mapping
- remove docker-in-docker command building (buildDockerCommand, buildDockerExtractOnlyCommand)
- ssh execution translates /movies/ and /series/ to node-specific paths
- remove media paths section from setup page
- add unraid-template.xml

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-04 16:48:00 +01:00
parent 36080951ef
commit d5f4afd26b
19 changed files with 171 additions and 286 deletions

40
unraid-template.xml Normal file
View File

@@ -0,0 +1,40 @@
<?xml version="1.0"?>
<Container version="2">
<Name>netfelix-audio-fix</Name>
<Repository>git.felixfoertsch.de/felixfoertsch/netfelix-audio-fix:latest</Repository>
<Registry>https://git.felixfoertsch.de/felixfoertsch/-/packages/container/netfelix-audio-fix/latest</Registry>
<Network>traefik</Network>
<MyIP/>
<Shell>sh</Shell>
<Privileged>false</Privileged>
<Support>https://git.felixfoertsch.de/felixfoertsch/netfelix-audio-fix</Support>
<Project>https://git.felixfoertsch.de/felixfoertsch/netfelix-audio-fix</Project>
<Overview>Scan a Jellyfin library, review which audio/subtitle tracks to keep or remove, then execute FFmpeg to strip/reorder streams.</Overview>
<Category>MediaApp:Video Tools:Utilities</Category>
<WebUI>http://[IP]:[PORT:3000]/</WebUI>
<TemplateURL/>
<Icon/>
<ExtraParams/>
<PostArgs/>
<CPUset/>
<DonateText/>
<DonateLink/>
<Requires/>
<Config Name="WebUI" Target="3000" Default="3000" Mode="tcp" Description="Web interface port" Type="Port" Display="always" Required="true" Mask="false">3000</Config>
<Config Name="Data" Target="/data/" Default="/mnt/user/appdata/netfelix-audio-fix/" Mode="rw" Description="SQLite database and application data" Type="Path" Display="always" Required="true" Mask="false">/mnt/user/appdata/netfelix-audio-fix/</Config>
<Config Name="Jellyfin URL" Target="JELLYFIN_URL" Default="" Mode="" Description="Jellyfin server URL (e.g. http://jellyfin:8096)" Type="Variable" Display="always" Required="true" Mask="false"></Config>
<Config Name="Jellyfin API Key" Target="JELLYFIN_API_KEY" Default="" Mode="" Description="Jellyfin API key (admin key recommended)" Type="Variable" Display="always" Required="true" Mask="true"></Config>
<Config Name="Jellyfin User ID" Target="JELLYFIN_USER_ID" Default="" Mode="" Description="Jellyfin user ID (optional, auto-detected if omitted)" Type="Variable" Display="always" Required="false" Mask="false"></Config>
<Config Name="Radarr Enabled" Target="RADARR_ENABLED" Default="1" Mode="" Description="Enable Radarr for movie language detection (1 or 0)" Type="Variable" Display="always" Required="false" Mask="false">1</Config>
<Config Name="Radarr URL" Target="RADARR_URL" Default="" Mode="" Description="Radarr server URL (e.g. http://radarr:7878)" Type="Variable" Display="always" Required="false" Mask="false"></Config>
<Config Name="Radarr API Key" Target="RADARR_API_KEY" Default="" Mode="" Description="Radarr API key" Type="Variable" Display="always" Required="false" Mask="true"></Config>
<Config Name="Sonarr Enabled" Target="SONARR_ENABLED" Default="1" Mode="" Description="Enable Sonarr for episode language detection (1 or 0)" Type="Variable" Display="always" Required="false" Mask="false">1</Config>
<Config Name="Sonarr URL" Target="SONARR_URL" Default="" Mode="" Description="Sonarr server URL (e.g. http://sonarr:8989)" Type="Variable" Display="always" Required="false" Mask="false"></Config>
<Config Name="Sonarr API Key" Target="SONARR_API_KEY" Default="" Mode="" Description="Sonarr API key" Type="Variable" Display="always" Required="false" Mask="true"></Config>
<Config Name="Subtitle Languages" Target="SUBTITLE_LANGUAGES" Default="eng,deu" Mode="" Description="Subtitle languages to keep (comma-separated ISO 639-2 codes)" Type="Variable" Display="always" Required="false" Mask="false">eng,deu</Config>
<Config Name="Movies" Target="/movies/" Default="/mnt/user/media/movies/" Mode="rw" Description="Movies library (mounted into the container for FFmpeg access)" Type="Path" Display="always" Required="true" Mask="false">/mnt/user/media/movies/</Config>
<Config Name="Series" Target="/series/" Default="/mnt/user/media/series/" Mode="rw" Description="Series library (mounted into the container for FFmpeg access)" Type="Path" Display="always" Required="true" Mask="false">/mnt/user/media/series/</Config>
<Config Name="DATA_DIR" Target="DATA_DIR" Default="/data/" Mode="" Description="Data directory inside container" Type="Variable" Display="advanced" Required="false" Mask="false">/data/</Config>
<Config Name="PORT" Target="PORT" Default="3000" Mode="" Description="Server port inside container" Type="Variable" Display="advanced" Required="false" Mask="false">3000</Config>
<TailscaleStateDir/>
</Container>