I’m looking for a server I can host in my home that has a simple ui where I can put in URLs for download and have them all show up on my Jellyfin. Bonus if there is VPN support.
Update: Thanks to everyone for the suggestions! Several projects to check out: youtube-dl, pinchflat, ytptube, metube, tubearchivist, yt-dlp-webui, ytzero, igloo, youtarr
Don’t forget to check out Youtarr. I think it hits all the targets. You can do channels, playlists or individual videos. It has an option for a proxy URL to use to download which I believe can be set up with a self-hosted VPN. And it formats and sends things directly to Jellyfin.
I’d like to second pinchflat. It’s great. I have it set up to monitor certain channels but also have it set up to monitor a playlist. Anything I add to the playlist gets auto downloaded. I don’t even have to log into it really it just works.
Pinchflat isn’t being maintained and has a few annoying bugs already.
Someone was working on a “community maintained” fork that had a bunch of fixes and new features and were also working on a hard fork with even more features but then last week they abruptly overwrote the history of the repo so there’s nothing but a script to migrate back to the main pinchflat. They also deleted all the packages which means
docker pullnow errors if you have their version. Thankfully someone had a fork of that one saved but the person who saved the fork doesn’t have the programming skills to continue development so we’re back to it not being maintained.Interesting. I’m still running the original but I’ll take a look at this fork. I’ve been looking for a new hobby project.
Anybody knows a way to automate cookie passing to the manager? Youtube denies access if cookies are not copied from a valid browser with a youtube account :-(
If you’re using Firefox, then there are a plethora of cookie copiers. I used one, don’t know which now, a while back. Seemed to function for my purposes.
MeTube
…ok - what’s wrong with MeTube?
Dunno, you’re referring to your one downvote? I use Metube as well, works pretty well for me so far.
The score was zero when I asked. I thought maybe there was something problematic with it…
Nothing
But someone already commented that
And provided a link for it
If you want VPN support in docker containers, I was surprised his well gluetun works with any container.
Though ironically metube is the one thing I intentionally took out of the VPN, because too baby sites I cares about blocked it and I didn’t care about VPNs too in that use case.
Tangential to your question… but I’m curious if any of these suggestions work with Jellyfin in a way that lets each user subscribe to YouTube channels?
My understanding is that almost all of these solutions will just drop YouTube videos in a directory and then they’ll be available to all users, rather than just the user who might be interested in that content?
I can say that TubeArchivist is essentially single-user. Multiple accounts on a single TA instance will share the same underlying library with a
./library_dir/channel_id/video_id.extdirectory structure. You could run an instance per user for individual TA libraries but, last I looked, the Jellyfin plugin doesn’t support multiple TA instances so it still wouldn’t be able to get the metadata from any instance(s) other than the one it’s configured to. It was a requested feature, on the plugin’s GitHub, but I’m not sure if it’s actively being implemented. The only workaround I can think of for now would be using a shared TA library and then manually tagging the videos in JF and using parental controls to hide them. Billy won’t see vids tagged #SusieYT, Susie has #BillyYT added to her blacklist, etc.
Does tubearchivist fit this bill?
tubearchivist is great but probably overkill for someone just looking to subscribe and watch with Plex/Jellyfin instead of the YouTube app.
TA is probably perfect, really. You get the TA Jellyfin plugin , mount TA’s library directory as read-only in Jellyfin, and add that mount as a “Shows” library with TA as the sole metadata provider. Channels become “Show” names and “Seasons” are the upload year. One-way or bi-directional watch progress between JF and TA. I don’t use the feature but I think it supports some sort of organizing by YouTube playlist these days too, maybe as “Collections.”
The only issue I’ve had is JF seems to do some built-in stuff when it comes to filling in metadata based on file names. Occasionally an “S0” or “E12”, as examples, will erroneously put a video into “Specials” (Season 0) or give an “Episode 12” where there shouldn’t be if those or similar substrings are in the Video ID (which is also the filename). My hackish solution, for a while, was a script that ran a sqlite command against the Jellyfin DB to find any videos in the YouTube library with not null episode numbers and set them to null, and also set unexpected seasons to the year of the video’s upload.
I had it automated to run right after my scheduled TA downloads completed but it felt a bit wrong doing that on live DB. So now I just periodically run the query, sans the updating, then fix the metadata from within JF’s UI if there are any query results. I could see that being a little irksome, and beyond what non-hobbyists could figure out, but it’s honestly a small price for me when it means I have all my archived YouTube content organized, with descriptions and thumbnails, with no other real work on my part.
When I tried it I got the feeling it’s more for people looking to backup/archive entire YouTube channels than those (such as myself) basically just having what is functionally an RSS feed of most recent videos released this week (for example).
But like I said, it’s absolutely great at what it does I just found it waaaay too complicated than the simple “use jellyfin as a YouTube app replacement” I was looking for.
Gotcha, that sheds more light. For your use case you’d need to script up some solution that parses the URLs from the feed(s) and sends them to TA’s API. I don’t think it’d be terribly difficult but, if I wasn’t concerned with actually saving the content, I’d turn to something like SmartTube/FreeTube/etc for simplicity and to just stream it.
For OP’s use case, throwing specific URLs at something which will download them and then have them pop up in Jellyfin, I can’t think of anything easier (at least after the initial setup) than TA. Unless any of the other suggestions here can also handle the metadata for JF, there’s gonna be a lot of manual work involved to have videos show up meaningfully and organized in JF.
Being unaware of pinchflat, I kinda ended up making my own.
Started off with a little app, the entirety of which was a button that, when pressed, took the link om my clipboard and downloaded the video into my Jellyfin folder. Then I got tired of having to keep it all updated across several different computers I use, so I turned it into something that runs in a docker container on my home server, that I can access through anything in my tailnet. Works beautifully.
I’m enjoying Pinchflat. I looked at TubeArchivist, but it’s a little heavyweight for me. Pinchflat is just one container.
It is a little broken - the refresh button and the page buttons don’t do anything - but I’m accessing the video through Jellyfin so it’s not a problem.Not what you are asking for, but maybe what you want: https://invidious.io/ is a youtube front end with some features that might or might not make it what you want.
I’ve been using YouTube-DL
Could they not think of an original name? Calling it YouTube-dl is just unnecessarily lazy and confusing. This appears to be mostly a docker image of yt-dlp, which is itself a fork of youtube-dl.
I mean, I guess I’m not informed enough to know. I just know that this one has a GUI, and certain automation functions. I got it all set up and now I don’t even have to think about it, it just downloads my desired YT vids, which then get scanned by Jellyfin and show up there, which is what OP wanted. 🤷
There’s https://github.com/kieraneglin/pinchflat
mainly for YouTube downloads though.












