Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ RUN npm run build
FROM node:22-alpine AS backend
WORKDIR /app/backend

RUN apk add --no-cache ffmpeg

COPY backend/package*.json ./
RUN npm ci --omit=dev

Expand Down
12 changes: 7 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,10 @@ The frontend also installs the shared Emberline design system directly from GitH
2. Under **Plex Libraries** in Settings, select the libraries to scan and set a minimum resolution threshold per library (default: **1080p**).
3. Navigate to **Video Quality Check** and click **Run Check**.
4. Movies below their library's threshold are listed separately from movies above it, showing resolution, codec, and audio details for each.
5. Select movies in the **Below Threshold** list and click **Upgrade** to delete the current file in Radarr and queue a replacement search.
6. Select movies in the **Above Threshold** list and click **Downgrade** to delete the current file in Radarr and queue a replacement search for a smaller file.
7. Radarr still decides the replacement based on that movie's current quality profile, so a downgrade will only happen if the Radarr profile allows a lower-quality result.
5. Optional: enable **Deep scan** to run a full `ffmpeg` decode pass per movie for more trustworthy media details. Plex metadata is used only as a fallback to locate a media part when the library listing does not already expose one. This is much slower, especially on large libraries.
6. Select movies in the **Below Threshold** list and click **Upgrade** to delete the current file in Radarr and queue a replacement search.
7. Select movies in the **Above Threshold** list and click **Downgrade** to delete the current file in Radarr and queue a replacement search for a smaller file.
8. Radarr still decides the replacement based on that movie's current quality profile, so a downgrade will only happen if the Radarr profile allows a lower-quality result.

## Unmanaged Movies

Expand All @@ -118,8 +119,9 @@ The frontend also installs the shared Emberline design system directly from GitH
1. Configure Plex and Sonarr URLs + credentials in **Settings**.
2. Set your preferred leeway percentage (default: **5%**) and episode minimum difference (default: **3 min**) under **Duration Tolerance** in Settings.
3. Navigate to **Episode Duration Check** and click **Run Check**.
4. Only episodes from shows managed by Sonarr (matched by TVDB ID) are compared. Episodes are flagged only when the runtime difference is greater than both the percentage threshold and the minimum difference, i.e. `|actual - expected| > max(expected * leeway%, min_diff_minutes)`.
5. Select flagged episodes and click **Redownload** to delete the existing file in Sonarr and trigger a new automatic episode search.
4. Optional: enable **Deep scan** to run a full `ffmpeg` decode pass per episode before comparing durations. Plex metadata is used only as a fallback to locate a media part when needed.
5. Only episodes from shows managed by Sonarr (matched by TVDB ID) are compared. Episodes are flagged only when the runtime difference is greater than both the percentage threshold and the minimum difference, i.e. `|actual - expected| > max(expected * leeway%, min_diff_minutes)`.
6. Select flagged episodes and click **Redownload** to delete the existing file in Sonarr and trigger a new automatic episode search.

## Data Storage

Expand Down
3 changes: 2 additions & 1 deletion backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
"main": "src/index.js",
"scripts": {
"start": "node src/index.js",
"dev": "node --watch src/index.js"
"dev": "node --watch src/index.js",
"test": "node --test"
},
"keywords": [],
"author": "",
Expand Down
Loading
Loading