10 ms·
Show HN: A personal YouTube frontend based on yt-dlp
- new_user_final 2y agotip: Disable YouTube history and go to subscription page for chronological ordered videos. No more "algorithmically curated" videos in YouTube home page.
- freehorse 2y agoWhy disable youtube history? I have it enabled, and my subscription page works fine.
- new_user_final 2y agoDisabling YouTube history makes two additional changes: no more "algorithmically curated" videos in your YouTube homepage and no more YouTube Shorts rabbithole.
- freehorse 2y agoRight. This works against personalisation (and thus addictiveness I assume). I use an extension (unhook) that basically redirects youtube.com to youtube.com/feed/subscriptions, and hides any shorts, so I can keep my youtube history.
- 01jonny01 2y agoI use skipvids.com as my frontend
- phdelightful 2y agoI basically have an even simpler version of something like this for my own personal use too. I found it pretty easy to write in Go and my area of expertise is decidedly not web frontend/backend. I’d recommend it as a fun little project if you’re looking for something to do. For mine, I paste in a video or playlist URL and it downloads the video and creates a lower resolution transcoded version suitable for streaming to my phone. It also extracts an audio-only version in case that’s more appropriate.
- atomicnumber3 2y agoI have one too, it's honestly a very fun area to program around, and I'm not going to be surprised if this thread is full of me-toos. Mine is specifically meant to help get videos onto plex in exactly the way we want - with particular emphasis on playlists, taking the numbering and putting it in plex format, and transcoding any codecs (detected via ffprobe) i know certain shitty players (smart TVs) will have issues with. Along with putting it in the right spot on the filesystem with the right permissions and user+group set so it serves correctly over samba too (for management from windows / via GUI).
- toomuchtodo 2y agoHave a repo you can share?
- atomicnumber3 2y agoNo unfortunately, not only is it too tangled (not irredeemably, but I've never made an effort t try to make it cleanly ploppable) with the rest of my home-rails-server monolith, but the code is all also ridiculously bad, written in 2000 separate 5 minute scraps of time, all while standing up and holding at least one baby. I call it "dadware".
- egeozcan 2y agoI have something similar as a simple PHP script on a shared hosting service. I can't PHP well anymore so it's probably the worst and most insecure code I've produced by a big margin. Does it do the job? Yes.
- gdulli 2y agoPlex is the destination for my setup, too. I have a bookmarklet I can click when I'm on any Youtube (or other video) page that sends the URL to a local Flask app that's just a wrapper for calling yt-dlp with the right args and post-processing.
- thinkingemote 2y agoInteresting! How do you stream it to your phone? I imagine its on the local network?
- yoyohello13 2y agoShhh! We are going to have to fork it again if too many people find out.
- deleted 2y ago[deleted]
- Joel_Mckay 2y agoIndeed, those with ridiculously slow broadband networks won't ever get 4k content again. DRM was.. and still is dumb... as it collectively punishes paying customers. While ContentID is sometimes abused by brazen scammers, it is a better solution given the majority of content is still served off the YT platform. =3
- tredre3 2y ago> DRM was.. and still is dumb... as it collectively punishes paying customers. Maybe it's true in other contexts, but users of such frontend likely are not paying for youtube and they're also not paying with their eyes (ads) so the DRM here is working as intended... Also paying customers are already allowed to download youtube videos (granted they can't watch it outside of youtube but it still counters your broadband claim).
- Joel_Mckay 2y ago"already allowed to download youtube videos" Sure, but it is not users that ultimately make that policy choice, and may be rescinded at any time. Thus, still seems lame... Most streaming platforms have fragile resolution fail-back thresholds, and rightfully discourage camping on CDN host connections for 10 times longer than most of the users. These days the amount of media data people consume in a year will be disproportionately larger than the capacity of any information appliance. i.e. not paying for the service would still mean a fortune in offline storage devices. DRM still sucks, ask any library or historian. But I do respect your opinion, as it could seem true for some. =3
- 2y ago
- wkat4242 2y agoHmm nice. I already have my own search frontend (SearXNG), my own chat frontend (Matrix+Element), LLM (OpenWebUI), and this would now be a good addition. It's sad that it's necessary but the internet has become so enshittified.
- modmodmod 2y agothanks, and totally agree on the enshittification of the web (and not only). this is the very reason why I wanted to dig deeper into my-yt and trying to build a custom solution for my needs
- kennysoona 2y ago[flagged]
- deleted 2y ago[deleted]
- modmodmod 2y agosimply wanted to build my own minimal solution, that's all
- zaruvi 2y agoAs a user of a Firefox-based browser, YouTube's performance really is hit or miss. Sometimes it's ok, other times it's barely useable. These days I simply queue up videos in mpv. It is much lighter on the resources, and also provides a nice cache that makes seeking through videos a breeze. I can open a link straight in mpv using a very nice system[1]. Once I have an mpv instance open I simply drag links on top of it to enqueue them. (shift+drag if you haven't set the following option in your config: drag-and-drop=append) It works so well I find myself doing it for other online sources of videos too (e.g. Twitter/X, local TV websites, ...) [1]: https://github.com/Baldomo/open-in-mpv https://github.com/Baldomo/open-in-mpv
- folmar 2y agoI use h264ify plugin and didn't see performance issues for playback. The UI depends on test group you go into, but only the first load is really terrible.
- nickthegreek 2y agoI never have yt issues in FF. Do you have addons that are yt related?
- Havoc 2y agoThere was a thing couple months back where Google was AB testing stuff that broke FF. So not everyone experienced it Went away about a week later
- unhappy_meaning 2y agoInteresting project and great to see other projects as well. Everyone has their own wants, wishes, and requirements for their YT feed so its awesome to see what people have come up with. This post has actually inspired me to create something of my own because I am the worst YT addict of all time.
- modmodmod 2y agoawesome, thanks!
- samstave 2y agoWonderful! (Also, to all the other posters who have done the same for themselves) -- I have been mentally building a UX I want out of YT over the last few weeks. What I want to do is have it go through all my history and categorize it and give me a local page and sqlite3 of my browsing hist with various meta-data.. My YT experience has gotten so poor, that even browsing which channels I am sub'd to and finding newer vids in them is a nightmare of a dark pattern... I thought I wouldnt be able to pull off my vision - but this gives me new hope - and I had told myself that this week I would make an attempt. One thing I want to do is include VoidTools 'Everything' Search into some MCP tools for Cursor -- and this inspiration ties it all into a more formulated vision for what I want out of a YT ux. I look forward to trying this out and seeing if it fills the void - or still build my own thing. (There was an HN SHOW: that was "what if YT channels were like a TV some time ago and that always pops into my head) -- EDIT: With the postings of GH repos and such, and my comment on categorizing and searching hist -- I also want to be able to have a dashboard of GH repos that I click on, and then have that click in hist be sent to my history categorizer automatically and give me a summary of the thing and category. maybe even from which site I found the repo -- so much like broawsing a YT hist of vids - being able to see all the repos I have been interested in. Anyone build anything like that for themselves?
- modmodmod 2y agothanks!
- zeroq 2y agoI remember a project from some 20 years ago that acted as a proxy and kept a local copy of every single page you visited. I don't remember any details other that you could access that app and search through the history based on time, urls, page titles and content separately. I believe this is one area where current AI could really shine. For instance I have a large collection of links about the stuff I care or one I use as one-line answers to different questions (e.g. a friend is taking part in a hackathon and needs a color palette to display some statistical data - in my collection I exactly that along with 20 page long explanation on why these particular colors were chosen if one wish to know). I keep them in a long markdown file I can somehow navigate by using tags, hierarchy and short descriptions but it gets clunky. Having youtube links doesn't help. Would be nice to have a tool that would be able to get transcription, distil it to a short summary and maybe you could even ask direct questions about the contents.
- bitbasher 2y agoMissed opportunity. Should have called it MyTube?
- modmodmod 2y agohaha who cares :) the missed opportunity would have been if I kept it for myself instead of releasing it
- greenchair 2y agoyou can change the name when you get the first take down notice :)
- modmodmod 2y agogood point
- deleted 2y ago[deleted]
- swyx 2y agoqq on tech choice - why lmstudio over ollama?
- modmodmod 2y agocurrently into lmstudio, but had it working before with ollama. it's compatible with both, since it uses the standard /chat/completions endpoint.
- modmodmod 2y agoIt should work out of the box by just changing the server port of the llm service you’re contacting LMStudio 1234 ollama 11434
- nickthegreek 2y agoJust got done setting up Pinchflat this morning as I need jellyfin and sponsorblock integration but it’s always great to see a nice gui around yt-dlp with some new niche features.
- modmodmod 2y agothanks!
- PaulKeeble 2y agoCan you make either a hub.docker or ghcr.io premade image so that people can just pull the image and run it and automate the updates? Its pretty standard practice in the self hosting world and if you don't do it a lot of people will not install it. People have 40-50 odd services installed, managing it via git updates just isn't going to happen.
- greggyb 2y agoA question for the author or anyone else who has experience in similar solutions. Is there any good solution for discovering new content? Much of the time, I want to stick to my subscriptions, but I do enjoy content surfaced by the algorithm at least once weekly, sometimes more often. My concern in taking my viewing off-platform is twofold: 1) going to YouTube will prompt me with all the stuff I've already watched off platform, and 2) any changes to my viewing habits won't be reflected in algorithmic suggestions. Am I making any bad assumptions or missing anything that would be useful? As an example, I usually get conference presentations surfaced for me, but I don't track conferences to know when I should go looking for presentations. YouTube is good at surfacing these for me.
- marxisttemp 2y agoCheck out the Vinegar extension if you use Safari. Same old YouTube but all the videos are replaced with HTML5 <video>s.
- modmodmod 2y agogood question. I don't think I have a definitive answer but I'll try: - pure luck. sometimes I discover a channel/creator/blog by pure accident, I'm an avid rss reader and HN adept so content comes to me naturally, so to speak. - following a feed (be it a website's rss feed, reddit/YouTube) sometimes made me discover related feeds, simply because someone wrote about a cool project a peer made and links their YouTube/github/blog
- tmpz22 2y agoI view Discovery as a social problem where the content you want is almost always clustered between a relatively small number of creators, regions, etc. Technically it then becomes less of an indexing everything problem and more of a find a few cornerstone creators, say Khan academy, and occasionally branching out. So to answer your question I don’t thing the cost/benefit for automating discovery is much better then spending 20 minutes and finding enough cornerstones to fill you for 100+ hours of content. Or similarly finding a social group like an rss feed, say in ios development it would be fatbobman, and sourcing it from there. Time to source content isn’t the bottleneck worthy of software solutions, yet for monetization reasons discovery is the vice grip of social media and made to be the most important thing.
- samstave 2y agoAnother thought: Can it do this: "give me a list of the latest podcasts about/from [subject/channel] {{from the already subscribed channels}}" -- Or a crontab of schedule "play the latest X at Y time" (so you can tell it to put on your bedtime playlist starting at 9pm) sort of thing?
- tangotaylor 2y agoThis is awesome and it's one of the countermeasures that the book Chokepoint Capitalism proposed against enshittification. Imagine seeing Twitch, Nebula, Youtube, etc all in one aggregator app, then the switching cost of leaving one platform to another goes way down. If a content creator wanted to move from one platform to another to get a better deal, the users would hardly notice. Unfortunately I think DRM + DMCA makes this illegal, e.g. removing DRM from a Netflix stream to use a third-party app is illegal even if there is no copyright infringement. This needs to be fixed.
- pests 2y agoThis already kinda exists in the TV sticks like Google TV in that all recently watched / continue watching is a mix of different services that open the correct app when launched. Also has the "Live" tab which shows a combined TV guide of all app's that share it (pluto, tubi, prime, etc) Of course this still locks you into the end app for playback but the concepts are there.
- helpfulContrib 2y ago[dead]
- agumonkey 2y agoI wonder how many front/proxies exists: - invidious what else ?
- modmodmod 2y agoa lot for sure. but the more the better, right?
- nyanpasu64 2y agoThere's Piped but that keeps running into "IOS player response is not valid" error. (I don't know if my Invidious instance works either, I shut it down because of errors.)
- erwaen98 2y agoHi Chris, do you know how to handle issues with cookies in production? It seems yt-dlp works fine, but once put in a cloud runner, it doesn't work. Coincidentally, I was also working with yt-dlp this week for another reason.
- modmodmod 2y agothe project currently supports cookies (never use your own though, of your google profile), just place them in cookies.txt in the root of the project. but it didn't seem to work well on my server, on a residential IP it works well
- maxglute 2y agoHow does yt-dlp work with sponsorblock? Does it download the video can snip out segments? I wish PLEX still had youtube plugin. Right now I have a googlesheet script that adds latest videos of channels into various playlists on my premium account. Keeps things simple bouncing between devices / chromecast.
- modmodmod 2y agoJust recently I stumbled upon these options of yt-dlp, but haven't had the chance to dig deeper (sorry in advance for the formatting): SponsorBlock Options: Make chapter entries for, or remove various segments (sponsor, introductions, etc.) from downloaded YouTube videos using the SponsorBlock API (https://sponsor.ajay.app) --sponsorblock-mark CATS SponsorBlock categories to create chapters for, separated by commas. Available categories are sponsor, intro, outro, selfpromo, preview, filler, interaction, music_offtopic, poi_highlight, chapter, all and default (=all). You can prefix the category with a "-" to exclude it. See [1] for descriptions of the categories. E.g. --sponsorblock-mark all,-preview [1] https://wiki.sponsor.ajay.app/w/Segment_Categories --sponsorblock-remove CATS SponsorBlock categories to be removed from the video file, separated by commas. If a category is present in both mark and remove, remove takes precedence. The syntax and available categories are the same as for --sponsorblock-mark except that "default" refers to "all,-filler" and poi_highlight, chapter are not available --sponsorblock-chapter-title TEMPLATE An output template for the title of the SponsorBlock chapters created by --sponsorblock-mark. The only available fields are start_time, end_time, category, categories, name, category_names. Defaults to "[SponsorBlock]: %(category_names)l" --no-sponsorblock Disable both --sponsorblock-mark and --sponsorblock-remove --sponsorblock-api URL SponsorBlock API location, defaults to https://sponsor.ajay.app
- huydotnet 2y agoI built the same thing a few years back [0], and used the YouTube API for searching. It was fun on the building part. For hosting, though, I picked Heroku, and they kept removing my deployment because I downloaded ytdlp on it! I ended up deploying it on my own server to make it work. [0]: https://github.com/huytd/xaudio https://github.com/huytd/xaudio
- ss64 2y ago"wanted to get back my chronological feed, instead of a "algorithmically curated" one" The 'Subscriptions' link at the top left of the Youtube home page only shows the things you subscribed to, just bookmark that.
- nickthegreek 2y agoAlong with so many shorts. So many. Going from Smarttube back to the official app and it just plain sucks.
- freehorse 2y agoI use the "unhook" extension which let's you remove recommendations, set your youtube home page to your subscriptions (chronologically ordered videos), block shorts and more (you can cherrypick the features you want). Highly recommended. I would have paid for youtube premium if I was given these options, honestly.
- nickthegreek 2y agoI have premium and that’s what hurts the most! My issue is mostly on tv connected devices.
- imp0cat 2y agoSo why not just keep Smart tube installed on your TV?
- nosrepa 2y agoOn android, you can even force the app to open up to that page (long press the icon and you can place a shortcut to subscriptions).
- snailmailman 2y agoThey are constantly testing pushing other things into the subscription box. What I want is it to only show me videos. Now, it also shows shorts, and also now “community posts” which are frequently just self-promotion and useless polls that drive engagement. I’ve started unsubscribing from anyone that uses those features too much. I want videos not “check out my twitch channel” and “want more merch? Check out my merch! Also this is a poll so that you will click it” One channel I follow got some new “comments from the community” kind of feature, and suddenly posts from anyone on YouTube were showing up in my sub box because they also subscribed to the same creator. All of the posts were image posts that were blatantly rule breaking spam, or comments like “why is this a feature”. None of them were from anyone I intentionally followed. Literally just random internet comments as a huge section in my sub-box. I instantly unsubscribed. YouTube REALLY wants to shove other content into the “subscription box” because as-is it lets you avoid all the algorithmic clickbait.
- TZubiri 2y agoI wonder if it will be taken down.
- modmodmod 2y agoeventually
- notepad0x90 2y agoWhat I've wanted for a while now is a browser extension that adds a button on youtube video pages, where you click on it and it does yt-dlp downloading but saves it to something like ipfs and posts it to some free video site for indexing. Basically, there should be a video indexing/search/discovery protocol (don't care if it's still http) where random people can submit metadata and a link to a distributed content-addressable system like ipfs. Alternatives to youtube,tiktok,etc.. even platforms like Bluesky can make use of this. Popular videos get more "seeds"/"mirrors" this way. The biggest problem is getting enough interesting content, so the browser extension helps with that, you just click "share in <insert platform name>" and you have it locally available as well as available on any of your other devices, and now others can see the content without having to use yt.
- idle_zealot 2y agoWhat you're describing is a piracy platform. That makes it pretty tricky to get off the ground, with regards to funding and outreach.
- notepad0x90 2y agoit's piracy when you share it with others, it can default to act as your personal cloud. It is dropbox/onedrive/gdrive except optionally searchable/shared/indexable by the public or a group of people (those legit services already allow public sharing of arbitrary data).
- jasonfarnon 2y agopirating who? I actually don't know who holds the copywrite to youtube videos. I assume the creators do, and that a lot of them would be happy to have their videos shared. It's google that wants suck the value out of the creations for themselves.
- furyofantares 2y agoWell as long as you don't know who owns the copyright and/or make an assumption that they'd be cool with it, must be good to go.
- tasuki 2y agoAhaha, I love the "vi/vim" pronouns on Christian's GitHub profile[0]. How have I never seen this before? [0]: https://github.com/christian-fei https://github.com/christian-fei
- modmodmod 2y agocopied it from someone else, can't remember who :)
- johnisgood 2y agoMaybe mine are mg/emacs.
- Thorrez 2y agoI don't see it. Has it been removed?
- modmodmod 2y agoit seems that in private browsing (or generally if you're not logged in to GitHub) it doesn't show
- tracerbulletx 2y agoI kind of wish people would stop making yt-dlp more accessible and increasing Google's desire to shut it down.
- temptemptemp111 2y ago[dead]
- yimby2001 2y agodo you feel the same about ad blockers?
- freehorse 2y agoAd blockers are basically about blocking ads. Yt-dlp has also uses whose main purpose is not about blocking ads.
- ivoputzer 2y agoit's a nice side-effect though.
- hsbauauvhabzb 2y agoIn some reguards I would say it is. Yt-dlp terminates my need for an adblocker for the lifetime of the videos I download, something chrome no longer does on a per-view basis and these days not as easily. It also blocks the YouTube algorithm suggestions, which in my eyes are an advertisement too.
- deleted 2y ago[deleted]
- jjulius 2y agoI'd say it's less people's fault and more Google's for driving people to want something like it.
- 2y ago
- jv22222 2y agoThis is monetizable for parents (or at least, highly needed). YouTube is terrible for child behavior as there are so many pranks and people screaming etc (in kids content) but there are a select few YouTubers who are really good for kids. For example our 10yo does well with: ZebraGamer, Half Asleep Chris, Mark Rober, Brick Experiment Channel, Ants Canada, etc. We have it locked down via safe app but it would be great to have this for the full home network with channels buttoned down.
- samtheDamned 2y agoMonetizing this would put YT-DLP in danger of having legal action taken against it, or at least being shut down.
- jdpedrie 2y agoWhat is “safe app”? Too generic to be googleable.
- jv22222 2y agohttps://apps.apple.com/us/app/safe-vision-kids-for-youtube/id1273458074 https://apps.apple.com/us/app/safe-vision-kids-for-youtube/i...
- benkaiser 2y agoOn this same topic, I just launched an app that lets you use your offline videos in an interface that is easy to use for kids. https://play.google.com/store/apps/details?id=com.kaiserapps.kids_video_player https://play.google.com/store/apps/details?id=com.kaiserapps... I stuck to a one-off payment, rather than the garbage subscription models all the other parenting apps use.
- jv22222 2y agoWhat we find essential about safe vision is that the kid can search like normal but it's limited to the approved channels. With about 30 (highly curated) channels the kid can find a lot of safe content. It also generates an updated dashboard page from new stuff from all the creators, also essential. The offline thing has never come up for us. They do a yearly sub $29.99, happy to pay. Just an FYI.
- aucisson_masque 2y agoFreetube is great alternative. Personally I don't even use it to watch the video and instead open them in browser, but it allows to monitor the channel you want and only that with a 'feed' that consist of their video in chronological order. It doesn't require self hosting, no YouTube account, has the thing to skip promotional video and setting to automatically change clickbait thumbnail.
- duffpkg 2y agoGrayjay also has a desktop app that does this very well. https://grayjay.app/ https://grayjay.app/
- modmodmod 2y agodoes it work on iOS?
- aussieguy1234 2y agoSeems it needs docker and/or NodeJS and runs as a server, so not something most of the non technical users out there would use. This makes widespread adoption unlikely. If it was packaged as a single executable electron app on the other hand, that would be another story.
- dinkblam 2y agogreat to see this, absolutely need to try it out. it is awful that a paid subscription product like YouTube does actually aim to give their (paying) users the worst experience possible by only ever showing stuff i do NOT want to see and offering no way to disable or customize things. honestly, is there anyone happy with their offering? but will this or anything similar ever run on FireTV / Samsung?
- modmodmod 2y agoAwesome! Have some things cooking for the future, hope to see your feedback if you can
- pierrefermat1 2y agoWould really appreciate if you could add some options for download quality(with webm merge for 4k support), gave it a go and it just by default downloads the 360p MP4.
- modmodmod 2y agoAbsolutely
- shekhargulati 2y agoWe built Videocrawl [1] to enhance the learning and watching experience using LLMs. It handles the usual tasks like clean transcript extraction, summarization, and chat-based interaction with videos. However, we go a step further by analyzing frames to extract code snippets, references, sources, and more. You can try it out by watching a video on Videocrawl, such as the OpenAI Agent video, by following this link [2]. LLMs have the potential to significantly improve how we learn from and engage with videos. 1. https://www.videocrawl.dev/ https://www.videocrawl.dev/ 2. https://www.videocrawl.dev/studio?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DhciNKcLwSes https://www.videocrawl.dev/studio?url=https%3A%2F%2Fwww.yout...
- dockerd 2y agoHow many active users do you have?
- udev4096 2y agoFreetube, invidious and newpipe are still the best frontends imo
- rcarmo 2y agoDidn’t invidious stop working?
- jfim 2y agoThat's pretty great, just tried it. I'd have a few feature requests: - Make it possible to delete downloaded videos - Show more than just a few weeks worth of videos per channel. For example, if I look at @AndrejKarpathy I only see his latest two videos. - Have a way to view a video at a reasonable size in between the small preview and full screen - Add a way to download a single video without subscribing to a channel Thanks for making it a Docker image, it's super easy to get it working with Docker compose!
- modmodmod 2y agoThanks for the feedback! Some of the new additions are already wip :)
- modmodmod 2y agotried to find a solution for your 3rd point, would love to get your feedback
- jfim 2y agoThat works, it makes it possible to watch the video now. :-) The only thing that had me stumped was that to add a subscription one needs to press enter, I don't recall if that was the behavior before. Appreciate all the changes!
- getcrunk 2y agoI get sign in to prove your not a bot all the time since the last few months esp on vpn. Too scared to use my home ip cus I don’t want my gmail to get banned with it
- mococa 2y agoTen years ago I wrote a alternative frontend for YouTube in C++ (Qt & VLC), it worked pretty well! https://github.com/skhaz/qt-youtube https://github.com/skhaz/qt-youtube
- mdhb 2y agoSo refreshing to see native web components and not some React monstrosity with 500 extra dependencies.
- modmodmod 2y agoThanks! It is definitely not the cleanest code I've written but I'm slowly making it cleaner and ready for OSS contributions. Learned a ton along the way too, which makes this all worth it nevertheless. I'll use the common excuse: I jotted this project down for myself without the thought of publishing it ^^
- scosman 2y agoPotentially dumb question: if YouTube.js works in browser - can/has someone made a YouTube player that’s just a static page? Is there a need for a backend?
- scosman 2y agoTo answer my own question: "To use YouTube.js in the browser, you must proxy requests through your own server"
- modmodmod 2y agohey scosman, let me give it a try: I don't really know if it could work, but I have a feeling it won't work mainly due to CORS (regardless if the app is served from http or file protocol) in the browser
- wlonkly 2y ago> make youtube great again I wish we would all just stop doing this. At least fora bit.
- modmodmod 2y agoif you don't get the sarcasm, I can't help you.
- ebri 2y agoStop this you’re getting yt dlp shut down you dimwit
- modmodmod 1y agolove you too