Skip to content

Cheaper YouTube channel refresh - #1025

Merged
madeofpendletonwool merged 2 commits into
mainfrom
youtube-refresh
Oct 23, 2026
Merged

madeofpendletonwool merged 2 commits into
mainfrom
youtube-refresh

Conversation

@madeofpendletonwool

@madeofpendletonwool madeofpendletonwool commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner
  • New videos are detected from the channel's RSS feed (conditional GET + body hash, ignoring view counts); yt-dlp runs only for new IDs, in one batched process
  • Falls back to yt-dlp --flat-playlist --playlist-end 15 when the feed fails; feed errors go through feed health
  • Channels are grouped across users: one fetch per channel, and nothing older than the longest subscriber cutoff is fetched
  • yt-dlp limited to 3 concurrent processes during refresh
  • New videos are returned and streamed over the refresh websocket
  • Old-video cleanup keeps videos in a user's history, queue, saved list, downloads, playlists or collections (it also no longer deletes podcast queue rows whose episode ID equals an old video's ID)
  • Per-channel video filters (migration 076): shortest/longest length in minutes and "title contains"; new endpoints GET /api/data/youtube_video_filter, POST /api/data/update_youtube_video_filter; web settings UI + translations
  • A YouTube cutoff of 0 now means no limit, as the web UI already said (it used to remove every video)
  • Integration tests with a videos.xml fixture and a yt-dlp stub; 225/225 on Postgres and MariaDB

Release notes:

  • YouTube channels now refresh much faster and lighter: Pinepods checks each channel's RSS feed and only runs yt-dlp for new videos.
  • A YouTube channel several users follow is checked once for all of them.
  • New YouTube videos now appear live during a manual refresh.
  • Old YouTube videos are no longer removed while they're in your history, queue, saved list, downloads, playlists or collections.
  • New: YouTube video filters. In a channel's settings, add only videos longer or shorter than a number of minutes (keep a channel's podcast episodes without its short clips, or leave out multi-hour streams), or only videos whose title contains some text.
  • Fixed: a YouTube download limit of 0 days now keeps all videos instead of removing them.

@madeofpendletonwool
madeofpendletonwool merged commit ebcafb5 into main Oct 23, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant