This is super basic, but I finally sat down and learned the syntax for yt-dl and built a script for checking all of my favorite channels on youtube for any new content and archiving them locally. I was doing it manually before and that turned into a huge pain as my list of channels I wanted to archive continued to grow.
Now it runs every night and I get notifications if it runs into errors.
This script would be good for my kids. Would you be willing to share?
I want an easy way for them to watch their favorite channels, without seeing the suggestions from youtube. It often suggests similar content, but not child appropriate. Specifically, Minecraft content.
I think a local cache of videos served to a HTPC client would work well.
An alternative is to just block YouTube recommendations on the client. You can use the 'My Filters' feature of uBlock. See https://github.com/gorhill/uBlock/wiki/Static-filter-syntax for details. Personally, I get along just fine with something like the following:
Some notes on the batch file below. This is saved as a .bat file and runs in the middle of the night using task scheduler. I didn't include the error checking portion because it adds a bunch of complexity and dependencies. The batch file below can be copied and pasted in the same batch file for every channel you want to download. Just copy the block below and paste it below and modify it for the next channel. I also keep a copy of yt-dlp.exe in every folder I'm downloading to, and in the batch file, it runs an update of that file to make sure I always have the latest version before downloading. I also download the subtitles in English and I download the thumbnail for the video, so that it shows up nicely in Plex. The first time it runs, it will download all of the videos from the channel, and it will record the urls into a text file for all of the videos. The next time it runs, it will check the videos available from the channel against the list it recorded and only download new content. If you need help, consult the docs on yt-dlp github page. I don't really have time to help with tech support. I should also add that you'll need to replace the http string below with the url of your favorite youtube channel.
ECHO Checking Your Favorite Channel...
cd "\path\goes\between\the\quotes"
.\yt-dlp.exe -U
.\yt-dlp.exe --download-archive ./playlist.txt -iw -o "%%(title)s-%%(release_date)s.%%(ext)s" -o "thumbnail:%%(title)s\%%(title)s.%%(ext)s" -v https://www.youtube.com/channel/UCpil30eNi37bPLwKp4g4kUA
cd \
ECHO Your Favorite Channel updated
I have this set up for specific playlists that download to specific folders (tech,kids, etc) and when I or family member come across videos we want to watch later we just add to playlist and it's available for watching later on the HTPC.
I use a script to clean out the playlists occasionally.
I like my idea for a local cache with HTPC client because there are plenty of clients to choose from for Fire TV, and my kids are more comfortable with a 10ft interface.
YouTube is one of the few websites which I wouldn't trust to have a video that I watched today be available tomorrow. The reason can be anything — local geographic censorship, copyright strike, uploader removing his own video, video becoming private, lots of other things I can't recall right now.
There are several reasons I do this, and most of it comes down to not trusting Youtube to keep content available consistently for the various reasons others have listed.
There is an added benefit. I have one channel I follow that does a LOT of q&a type videos from the audience. Because I download the subtitles as well, I can throw those into a database with the video titles and make a searchable database if I want to see what the host has said about a particular topic. I don't have to rely on my memory or go hunting. I can just query my database and know exactly which video/timestamp has the topic I'm looking for.
The other day I visited a 3 years old Reddit thread. OP posted a playlist for a certain topic. There were about 100 links to songs on Youtube. About a third no longer work. For many Youtube doesn't even tell me what the titles were, so I can't search for alternatives. I'll never know what those links pointed to.
If you have a system for delivering locally stored content already, then this lets you avoid all of the anti-user aspects of YT like ads and the recommendation engine.
Now it runs every night and I get notifications if it runs into errors.