A web interface where you can add channels from Youtube etc. Videos from these channels are then cleanly listed, and can be downloaded with a single click for viewing without an internet connection.
Data is retrieved from Youtube via the invidious API.
Data is stored locally in an SQLite3 database. This includes a list of added channels, the videos within each channel, and their "status" (if queued for download, downloaded, etc)
Each video is represented as a VideoInfo object. This is generic enough to be applicable to every service. When retrieved from database, VideoInfo is wrapped in DBVideoInfo which adds some vidl or DB specific info (mainly ID and status - essentailly any info that wouldn't be known without the VIDL database)
yt-dlp for offline caching of videos.
Env vars:
VIDL_INVIDIOUS_URL
...
Update youtube-dl:
docker exec -it vidl pip install --upgrade yt-dlp