Skip to content(if available)orjump to list(if available)

Show HN: A personal YouTube frontend based on yt-dlp

tracerbulletx

I kind of wish people would stop making yt-dlp more accessible and increasing Google's desire to shut it down.

Gigachad

Agreed. Youtube downloaders are essential for backup purposes and for getting clips to put in your own videos as fair use. But people turning them in to fully user facing ad free frontends are driving the crackdown on the tools so we will end up with no way at all to download videos..

Would be nice if Youtube just let premium users download the actual video files. What I find interesting is how so many of the Chinese social media platforms just let you download videos while western tech companies pretty much universally block it.

zozbot234

If they shut down yt-dlp for good, a lot of power users and creators would find the YouTube platform useless for themselves and abandon it en masse for its nearest competitor. A tool like yt-dlp is very much required if you want to engage professionally with that kind of community. Even something as trivial as making a well-produced "video reaction" relies on it.

Yes, YT has good monetization, but it still pays peanuts to the average creator. So the competitive threat is very real - superstars alone wouldn't be enough to make for a really compelling platform.

krystofee

My take is: its either there with all of its features and popularity or its not. The argument that it will be taken down if its more popular seems to me fundamenally wrong.

jjulius

I'd say it's less people's fault and more Google's for driving people to want something like it.

Gigachad

Yes, people prefer to get stuff for free rather than paying for it. That's not a very interesting insight.

freehorse

There is no way to pay google to get features like these or like what yt-dlp offers. If there was I would have gladly paid.

2OEH8eoCRo0

I don't think they can ever kill it. Something else will rise. There is too much demand for it.

yimby2001

do you feel the same about ad blockers?

null

[deleted]

freehorse

Ad blockers are basically about blocking ads. Yt-dlp has also uses whose main purpose is not about blocking ads.

ivoputzer

it's a nice side-effect though.

greggyb

A 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.

toomuchtodo

If you were to have something local build you an algorithm, what signal would you want it to consume and how far from the median would you want it to deviate? Would you want it to use signal from online socials?

creer

This is a good idea. One signal would be HN mentions. Second might be reddit mentions, but with a lot of qualifications.

As a first step, a page showing recent youtube links from HN would be nice!

charcircuit

Why limit it to local? You could use the API for the YouTube recommendations. You already are using the YouTube API for the videos themselves.

toomuchtodo

Certainly, ingest all the signal you’d like, and then emit a feed for clients to consume (or to be republished). Could run locally, could run in a container, could run on an AT protocol PDS. It is an algorithm/discovery/recommendation sovereignty play.

tmpz22

I 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.

siavosh

There’s a lot of truth to this but one of the most powerful elements of a discovery algorithm is finding things you completely did not look for, ie Christopher Columbus and the western continents. Like your cornerstones are iOS and recipe videos but you discover the right dance video and it changes your whole life.

tmpz22

> you discover the right dance video and it changes your whole life

You're going to have to explain this one, how would a dance video change my life? Being exposed to something new that becomes profoundly life changing seems like a romanticized notion and not a realistic one especially within a monetized environment.

We're exposed to new stuff everyday, just because .0001% is truly impactful doesn't justify watching 100_000 short reels of ads, even if Google and Facebook REALLY want us to.

Unearned5161

I owe many interests in my life to the little recommendation tab next to a currently playing video on youtube

prophesi

I've been using Unhook[0] for years that it's almost a jumpscare for me to see a recommended video or the Youtube homepage. Your social circles and natural serendipity should be plenty for finding new creators. And in general, avoiding algorithmic feeds will help with ADHD and mindless scrolling.

[0] https://unhook.app/

atum47

I've been using a third party app to watch the videos and the official app to discover content.

Instead of just clicking the video I click share and watch on the unofficial with no ads.

creer

I readily follow youtube links offered on HN discussions. If anything, I could use more of these.

But otherwise I agree with your concern. Video recommendations on youtube was far from perfect (very repetitive in my experience), but was uncovering useful stuff.

BlueGh0st

I use a Firefox profile to watch specific videos while logged-out just for the focused recommendations.

I've also noticed that I getting more recommendations for small creators with little to no views/subs when I'm browsing from a smaller, developing country.

siavosh

I looked into this as well since I find the YouTube algorithm terrible, but couldn’t find any API for exploration. Which makes sense they want to control what you watch and hence monetize. In a perfect world you could just pick an open source recommendation algorithm from a marketplace and YouTube would just be a wrapper around s3 buckets and some index.

bluebarbet

An even more perfect world would not have S3 buckets.

toomuchtodo

You have to store bits somewhere, and an S3 compatible target optimizes for flexibility and optionality. It can be local (Minio), it can be remote, the client does not care where it is. Even the Internet Archive's API is S3-ish.

modmodmod

good 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

tasuki

Ahaha, 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

modmodmod

copied it from someone else, can't remember who :)

ss64

"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

Along with so many shorts. So many. Going from Smarttube back to the official app and it just plain sucks.

freehorse

I 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.

PaulKeeble

Can 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.

modmodmod

will do, thanks for the suggestion

jv22222

This 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

Monetizing this would put YT-DLP in danger of having legal action taken against it, or at least being shut down.

jdpedrie

What is “safe app”? Too generic to be googleable.

notepad0x90

What 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.

ivanjermakov

Write a script to call yt-dlp command with url in clipboard on ipfs server

idle_zealot

What you're describing is a piracy platform. That makes it pretty tricky to get off the ground, with regards to funding and outreach.

huydotnet

I 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

nickthegreek

Just 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

thanks!

maxglute

How 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

Just 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

phdelightful

I 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

I 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).

gdulli

Plex 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.

egeozcan

I 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.

toomuchtodo

Have a repo you can share?

thinkingemote

Interesting! How do you stream it to your phone? I imagine its on the local network?

erwaen98

Hi 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

the 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