|
Some checks failed
Compile the app and run tests / sanity-check (push) Has been cancelled
new opt-in feature — default keeps everything, so nothing changes unless a channel sets it. - history got smarter: youtube rows now carry channel_id + published_at (mined from search_ctx) + a pruned_at marker. new queries: youtube_channels_with_downloads, youtube_channel_episodes, mark_download_pruned. - core/video/retention.py (pure): parse_retention + episodes_to_prune — age by UPLOAD date (published_at, filename fallback); 'count_N' keeps newest N, 'days_N' keeps last N days; undated episodes never pruned. - handler auto_video_clean_youtube_episodes: for each channel with a policy, delete the out-of-window video + its -thumb/.nfo sidecars (only the exact recorded dest_path, never walks folders), then mark the history row pruned — KEPT so the scan never re-downloads it. - 'Keep' dropdown in each channel's cog modal (Everything / Last 30 episodes / Last 3 / 6 months); playlists excluded. seeded daily automation + register/block/label/icon/sort. pure math + handler (i/o injected) + the prune-keeps-dedup DB contract all tested. |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| _pipeline_shared.py | ||
| database_update.py | ||
| discover_playlist.py | ||
| download_cleanup.py | ||
| duplicate_cleaner.py | ||
| maintenance.py | ||
| personalized_pipeline.py | ||
| playlist_pipeline.py | ||
| process_wishlist.py | ||
| progress_callbacks.py | ||
| quality_scanner.py | ||
| refresh_mirrored.py | ||
| registration.py | ||
| run_script.py | ||
| scan_library.py | ||
| scan_watchlist.py | ||
| search_and_download.py | ||
| sync_playlist.py | ||
| video_auto_wishlist_airing.py | ||
| video_clean_youtube.py | ||
| video_process_wishlist.py | ||
| video_process_youtube_wishlist.py | ||
| video_refresh_airing_schedules.py | ||
| video_scan_library.py | ||
| video_scan_watchlist_channels.py | ||
| video_scan_watchlist_people.py | ||
| video_scan_watchlist_playlists.py | ||