Tube Archivist is quite heavyweight as it's meant to do heavy full archiving of YouTube channels and search through positively huge libraries. I'm getting the sense that it's a data hoarding tool, not a casual web video watching tool. I found that I just want to add a few channels to my media library, for which I use Jellyfin already.<p>For people looking for a more lightweight option of that kind, I run the following script hourly [1]. This script uses yt-dlp to go through a text file full of YouTube RSS urls (either a channel RSS or a playlist RSS works for channels where you're only interested in a subset of videos) [2] and downloads the latest 5 videos organized in folders based on channel name. I watch these files by adding the output folder in a Jellyfin "Movies" type library sorted by most recent. The script contains a bunch of flags to make sure Jellyfin can display video metadata and thumbnails without any further plugins, and repackages videos in a format that is 1080p yet plays efficiently even in web browsers on devices released in at least the last 10 years.<p>It uses yt-dlp's "archive" functionality to keep track of videos it's already downloaded such that it only downloads a video once, and I use a separate script to clean out files older than two weeks once in a while. Running the script depends on ffmpeg (just used for repackaging videos, not transcoding!), xq (usually comes packaged with jq or yq) and yt-dlp being installed. You sometimes will need to update yt-dlp if a YouTube side change breaks it.<p>For my personal usage it's been honed for a little while and now runs reliably for my purposes at least. Hope it's useful to more people.<p>[1]: <a href="https://pastebin.com/s6kSzXrL" rel="nofollow noreferrer">https://pastebin.com/s6kSzXrL</a><p>[2]: E.g. <a href="https://danielmiessler.com/p/rss-feed-youtube-channel/" rel="nofollow noreferrer">https://danielmiessler.com/p/rss-feed-youtube-channel/</a>
I saw this was a Django app so I dug around to look at their models. As far as I can tell this is all they have: <a href="https://github.com/tubearchivist/tubearchivist/blob/master/tubearchivist/home/models.py">https://github.com/tubearchivist/tubearchivist/blob/master/t...</a> - just a `Account` model.<p>It looks like Django + SQLite is used for user accounts, but all other data storage happens in Elasticsearch.<p>It's an interesting design decision. I would have gone all-in on the database, and used SQLite FTS in place of Elasticsearch for simplicity, but that's my own personal favourite stack. Not saying their design is bad, just different.
Does it save the video thumbnail as well? Video description? Comments? Channel name? Channel avatar? etc<p>Currently I use yt-dlp to manually download individual videos that I want to keep. At the moment I only save the video itself. And most of the time I then also paste the URL of the video into archive.is save page and web.archive.org/save so that there is a snapshot of what the video page itself looked like at the time. But this is still incomplete, and relies on those services continuing to exist. Locally saving a snapshot of the page like that, and then also saving the thumbnail and perhaps more of the comments would be nice.
I've had significant problems running this for extended periods.<p>It will crash and then restoration will fail internally with corruption errors, requiring reading through docker logs or just starting over from scratch completely.
Ha, I have also wrote something similar<p><a href="https://github.com/rumca-js/Django-link-archive">https://github.com/rumca-js/Django-link-archive</a><p>I support not only youtube, but also any RSS source.<p>It functions as link aggregation software. I can also fetch meta for all videos in channel, and download videos, audios.<p>I am using standard Django auth module.<p>It still lacks polish, and it is under development. I am not a webdev, so I am still struggling with overall architecture
Interesting idea.<p>I always dream of writing a proxy server—-where all videos—-irrespective of device—-get stored in a local cache and served without going outside on subsequent requests.<p>Gonna try this one, and gonna take that direction.
As a less sophisticated alternative there's a metadata plugin for jellyfin <a href="https://github.com/ankenyr/jellyfin-youtube-metadata-plugin">https://github.com/ankenyr/jellyfin-youtube-metadata-plugin</a>
I couldn't find docs for installing from source. Is docker really mandatory ?<p>Also, "Tube Archivist depends on Elasticsearch 8." . Wow, why?
Looks great, I will try it, since YouTube broke my scirpts a while a go...<p>The way I was using them was to create a playlist named "save" and pulling from it once a day. It worked for a while, but YT started to ban somehow my script. Tube Archivist looks like would be ideal for that.<p>Thanks for sharing this!