github jnracreates/ytfinall v1.1
v1.1 — Search, Browse, Auto-Delete

one month ago

What's new

🔍 In-app YouTube search

A search bar on the dashboard lets you find videos and channels without leaving the app.

  • Videos tab returns up to 300 results with pagination ("Load 30 more")
  • Channels tab returns the first page of channel results, each with a Videos button that opens a browse page
  • Each result has a one-click Add video / Subscribe button that feeds straight into the download pipeline

📺 Channel browse page

Clicking Videos on any channel result opens /channel/<id> — a paginated list of that channel's uploads.

  • Starts at 60 videos
  • Load 30 more button increments by 30 up to 500
  • Includes the channel avatar, name, and a Subscribe button for the whole channel

🗑️ Auto-delete after watching

Optional per-user toggle on the dashboard. When enabled, ytfinall is notified by Jellyfin the moment a video is watched to completion and removes the file from disk.

  • Only fires when Jellyfin reports PlayedToCompletion=true — stopping halfway, pausing, or closing the player does nothing
  • Deletion also removes the .nfo, .info.json, and ytfinall's own marker file
  • Falls back to the retention scheduler for anything you don't watch
  • Requires Jellyfin's Webhook plugin — setup instructions are shown on ytfinall's admin settings page

🏷️ Ownership markers

Every download is now tagged with a .ytfinall.json sidecar that records the source it came from. This serves two purposes:

  • Retention — each file is evaluated against its own source's retention period
  • Safe deletion — the webhook and cleanup pass refuse to delete any file without a marker, so non-ytfinall media under the same mount is never touched

🧩 Browser extension v1.0.2

The companion extension was updated alongside this release:

  • Server URL now works with or without http:// — typing youtube.example.com behaves the same as http://youtube.example.com
  • Widened host permissions for reverse-proxied setups on ports other than 6842
  • Firefox: added required data collection declaration

Chrome users should grab the new zip from this release's assets. Firefox and Edge users will get it automatically once the store updates are approved.

🛠️ Fixes

  • Fixed a name 'db' is not defined error on startup that prevented download task cleanup from running
  • Fixed the retention scheduler crashing on No item with that key — sweeps now actually run
  • Fixed Jellyfin webhook user matching — Jellyfin sends UUIDs with dashes, ytfinall stores them without, and the two now normalize
  • Rewrote the in-app webhook setup instructions to match what actually works with the current plugin

📝 Upgrade notes

Drop-in — no database migration needed. Existing downloads will not have .ytfinall.json markers, so auto-delete will skip them until they're re-downloaded. To backfill markers for existing files, run this inside the container:

find /media/users -type f \( -name "*.mp4" -o -name "*.mkv" -o -name "*.webm" -o -name "*.m4v" \) | while read f; do
  [ -f "$f.ytfinall.json" ] || echo "{\"source_id\":null}" > "$f.ytfinall.json"
done

Don't miss a new ytfinall release

NewReleases is sending notifications on new releases.