The other day someone was complaining about the new ad blocker-blocker on YouTube and I mentioned that it might be fun to write a Firefox extension that would just load up yt-dlp and play the video through mpv.

It turns out, writing a Firefox extension is easy and tricking Firefox into launching yt-dlp isn’t much harder (though it does require some annoying configuration on the user’s end).

Anyway, if you’re a Linux user, feel free to try it out. I don’t know how much I’m going to pour into this, but as an exercise of “can this be done”, it was pretty good for a few hours on a Friday night.

  • demesisx
    link
    fedilink
    English
    arrow-up
    29
    ·
    2 years ago

    Additional pro-tip: you can just launch mpv from the terminal using the YouTube url and it will open a new player.

  • zaknenou@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    9
    ·
    edit-2
    2 years ago

    can you please share a video of how it looks like when implemented. I think it is already possible to watch videos using VLC ?

    • Telorand@reddthat.com
      link
      fedilink
      English
      arrow-up
      6
      ·
      2 years ago

      I’ve had a couple videos that wouldn’t load properly in VLC. Rare, but it happens. Alternatives are always welcome.

    • Daniel Quinn@lemmy.caOP
      link
      fedilink
      English
      arrow-up
      4
      ·
      2 years ago

      I don’t think I have it in me to put together a video, but I can describe it if you like.

      Once you install the extension and follow the setup instructions, you just go to a YouTube page. The extension adds an ugly button to the top-left of the page that says “bypass”. When you click it, Firefox launches yt-dlp [the URL you're at] -o - | mpv - which basically just downloads the video and streams the output through the mpv video player. So now you’re watching just the video, with no web page necessary.

    • Contend6248@feddit.de
      link
      fedilink
      English
      arrow-up
      3
      arrow-down
      1
      ·
      2 years ago

      My best guess would be that the internal player of Firefox comes to play here.

      You can try opening any MP4 with Firefox

    • Daniel Quinn@lemmy.caOP
      link
      fedilink
      English
      arrow-up
      13
      ·
      2 years ago

      Honestly, because I didn’t know (a) that ff2mpv even existed, or that (b) mpv could play YouTube URLs directly. So thanks! I learnt two things today :-)

      It was still a fun project though 'cause I learnt how to write a Firefox extension and get the browser to launch programs on-click, so not a waste of time!

  • Morgikan@lemm.ee
    link
    fedilink
    English
    arrow-up
    6
    ·
    2 years ago

    I was curious how you implemented this as it’s pretty much the default YT bypass qutebrowser users use. Then I read the MIME type addition you did and had a good laugh. That’s clever. Always nice to see a fellow Go user, too.

    • Daniel Quinn@lemmy.caOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      2 years ago

      Is there another way to do this? This hack was the only way I could figure out how to get Firefox to invoke an external binary, but if there’s a more conventional way to do it, I’d like to know 'cause I have another more complicated project in need of a pattern much like this one.

      • Morgikan@lemm.ee
        link
        fedilink
        English
        arrow-up
        3
        ·
        2 years ago

        No, the way you did it is the only way I can think you can. Otherwise it opens up things to arbitrary code execution. I’m not exactly sure how qutebrowser gets away with it, but I know it’s built on QT so maybe it just isn’t running sandboxed or had some special method for calling external binaries/scripts. You might take a look at that project and see, but Firefox/qutebrowser is probably like comparing apples and oranges.

        • Daniel Quinn@lemmy.caOP
          link
          fedilink
          English
          arrow-up
          2
          ·
          2 years ago

          That’s actually very helpful, thanks. I’ve been working on another project to open certain URLs in specific browsers/profiles, and wanted to be sure that I wasn’t missing a more obvious design pattern. The project is here if you’re curious.