Many YT privacy frontends are down it seems. YouTube is cracking down on these servers fast. Both Invidious and Piped services are not working now.

So how are you watching videos now? Just plain youtube[dot]com with unblock and VPN?

    • plm00@lemmy.ml
      link
      fedilink
      arrow-up
      9
      ·
      edit-2
      13 days ago

      I’ve had a good experience with GrayJay. It’s a bit young and missing features but it’s never broken for me.

      • land@lemmy.ml
        link
        fedilink
        arrow-up
        7
        ·
        edit-2
        13 days ago

        Btw, they also have a desktop app, but it’s currently in beta.

        FreeTube is more stable for desktop.

        • plm00@lemmy.ml
          link
          fedilink
          arrow-up
          6
          ·
          13 days ago

          I’ve been using their GrayJay desktop app, and I’ve enjoyed it so far.

          I haven’t checked out FreeTube but maybe this is the push I need.

          • land@lemmy.ml
            link
            fedilink
            arrow-up
            3
            ·
            13 days ago

            I’ve used it for a few days, but it lacks several fundamental features. Additionally, it’s quite resource-intensive.

  • 7_Heavens@lemmy.ml
    link
    fedilink
    arrow-up
    26
    arrow-down
    1
    ·
    13 days ago

    At this point we should just start torrenting YouTube. Like fuck YouTube.

    • jagged_circle@feddit.nl
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      12 days ago

      Well PeerTube is p2p like torrents are (but with a simple streaming web ui), so basically just run PeerTube

      • pineapple@lemmy.ml
        link
        fedilink
        English
        arrow-up
        1
        ·
        11 days ago

        I love the idea of PeerTube it works really well the only problem is basically no one uploads to it so most of the people I want to watch just aren’t there.

        • jagged_circle@feddit.nl
          link
          fedilink
          English
          arrow-up
          2
          arrow-down
          1
          ·
          11 days ago

          I’d love to see someone operating some sort of PeerTube instance that basically acts as a temp cache for YT videos.

          Like it could just store all the videos that we link-to from Lemmy and autodelete after 1 month.

  • TranquilTurbulence@lemmy.zip
    link
    fedilink
    English
    arrow-up
    18
    ·
    12 days ago

    Close the door, turn off the lights, wear earbuds, pull a duvet over your head. Works every time. Might look a bit suspicious, but at least it’s private.

    Seriously though, it’s getting pretty bad. I’m currently shifting my video watching habits away from YT. I have a feeling that sooner rather than later I may have to quit YT completely.

  • llama@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    16
    arrow-down
    1
    ·
    edit-2
    13 days ago

    There are several way, honestly. For Android, there’s NewPipe. The app itself fetches the YouTube data. For PC, there are similar applications that do the same such FreeTube. Those are the solutions I recommend.

    If you’re one of those, you can also host your own Invidious and/or Piped instances. But I like NewPipe and FeeTube better.

      • llama@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        9 days ago

        That really depends on your threat model. The app isn’t monitoring your activity or has imbedded trackers. It pulls content directly from YouTube’s CDN. All they (Google) know is your IP address, but nothing else. For 99.9% of people that’s totally ok.

  • z3rOR0ne@lemmy.ml
    link
    fedilink
    arrow-up
    11
    arrow-down
    1
    ·
    edit-2
    13 days ago

    You can still use yt-dlp with most of the invidious instances that are still up, but not displaying the video for some reason. Just copy the URL and use it with yt-dlp from the command line. All still works, sponsor block and all.

    On my android phone I use either invidious with seal(yt-dlp wrapper app) or tubular (fork of newpipe with sponsor block).

    • corvus@lemmy.ml
      link
      fedilink
      arrow-up
      4
      ·
      12 days ago

      Freetube has an option to watch videos in a external viewer. I set it to be MPV which I set it to use yt-dlp to download which allows me to customize many things like video and audio quality, subtitles, equalize audio, etc. No need to copy and use the command line.

        • corvus@lemmy.ml
          link
          fedilink
          arrow-up
          2
          ·
          11 days ago

          Go to configuration, external player, choose mpv, in custom external player arguments put: --ytdl;–ytdl-format=best audio+bestvideo ( or whatever format you like). For subtitles and equalization you have to download mpv scripts from github.com/stax76/awesome-mpv in the User Script section. There’s a lot of cool scripts there. You have to put the script in the mpv script directory of your OS.

    • jagged_circle@feddit.nl
      link
      fedilink
      English
      arrow-up
      1
      ·
      12 days ago

      Why? That basically means they track you the same, but with lots if extra steps.

      Unless you use a VPN and then you’re back to the same problem again.

      • good_hunter@lemmy.world
        link
        fedilink
        arrow-up
        2
        arrow-down
        1
        ·
        12 days ago

        I am not the full expert on the subject, but I assume the profiling is to a lesser extent. For one you don’t browse within a Google account.

        I also like the slimmed down UI and subscription management of invidious compared to yt.

        And don’t forget no ads and sponsorblock. Although some add ons like vinegar for safari get you pretty close to uninterrupted viewing.

        All said, probably not the best in regards to pure privacy.

  • Melody Fwygon@lemmy.one
    link
    fedilink
    English
    arrow-up
    8
    ·
    edit-2
    11 days ago

    Freetube is a useful project as it allows you to “fallback” on a non-preferred frontend.

    https://github.com/FreeTubeApp/FreeTube

    This allows you to continue to use Youtube irregardless of which frontend is (potentially not) working.

    In ‘Settings > General’ you’ll want to select “Invidious API” as your “Preferred API backend” and specify your favorite invidious instance in the “Current Invidious Instance” field and click “Set Current Instance as Default”. This locks FreeTube into the specified instance.

    Then, when you notice that FreeTube is issuing notices to you about your favorite Invidious Instance being down, you can wander back to ‘Settings > General’; hit the “Clear Default Invidious Instance” Button and wait as FreeTube magically contacts the “https://api.invidious.io/” page for you and selects a new, and hopefully online and working Invidious instance. (You may have to hit this button several times to roll a working instance, Hit the button, check the subs page and see if everything loads, repeat if it falls back on the Local API.)

    When you run into instances where you can’t roll up a good Invidious instance; the built in Local API is running a NewPipe Extractor like API directly from your FreeTube client. Not the best; but at least it keeps things working while you wait for the Invidious devs to fix things up; and it still reasonably preserves as much of your privacy as it can while doing this to the best effort it can.

    …Sadly this doesn’t work when Google manages a double combo of breaking both Invidious and NewPipe; but I have found that this is less often the case and the devs of either project are usually fairly quick about getting fixes out. Bless their hard work with a donation sometime maybe, if you can.

  • airikr@lemmy.ml
    link
    fedilink
    arrow-up
    8
    arrow-down
    1
    ·
    12 days ago

    I download the videos I want to watch with yt-dlp. This applies to audio as well. I then add the videos to my Jellyfin server to watch them on the TV.

    • corvus@lemmy.ml
      link
      fedilink
      arrow-up
      5
      ·
      12 days ago

      Use yt-dlp URL -o - | mpv - This way the video goes directly to mpv without using the disk, avoiding the need to delete. It should work with other viewers as well.

        • corvus@lemmy.ml
          link
          fedilink
          arrow-up
          1
          ·
          edit-2
          11 days ago

          Another thing that I do is make an alias: alias pvid=“yt-dlp $(xsel -b) -o - | mpv -”. Install xsel first, xsel -b pastes what’s in the clipboard. So you only have to copy the URL and execute pvid, no need to paste. Or even better make an app that executes that command and put it in the taskbar. You only have to click it after copying.

          • Karyoplasma@discuss.tchncs.de
            link
            fedilink
            arrow-up
            2
            ·
            edit-2
            10 days ago

            I wrote myself a Chrome add-on that adds a context menu entry to play or download links.

            background.js
            chrome.runtime.onInstalled.addListener(() => {
            		
                chrome.contextMenus.create({
                    id: "processLink",
                    title: "Download as...",
                    contexts: ["link"]
                });
            
                chrome.contextMenus.create({
                    id: "720p",
                    parentId: "processLink",
                    title: "720p",
                    contexts: ["link"]
                });
            
                chrome.contextMenus.create({
                    id: "music",
                    parentId: "processLink",
                    title: "MP3",
                    contexts: ["link"]
                });
            
                chrome.contextMenus.create({
                    id: "maxQual",
                    parentId: "processLink",
                    title: "Maximum quality video",
                    contexts: ["link"]
                });
            	
                chrome.contextMenus.create({
                    id: "separator1",
                    parentId: "processLink",
                    type: "separator",
                    contexts: ["link"]
                });
            
                chrome.contextMenus.create({
                    id: "piQual",
                    parentId: "processLink",
                    title: "30 fps for RPi",
                    contexts: ["link"]
                });
            	
                chrome.contextMenus.create({
                    id: "separator2",
                    parentId: "processLink",
                    type: "separator",
                    contexts: ["link"]
                });
            	
                chrome.contextMenus.create({
                    id: "streamLink",
                    parentId: "processLink",
                    title: "Stream to VLC...",
                    contexts: ["link"]
                });
            });
            
            chrome.contextMenus.onClicked.addListener((info, tab) => {
                let linkUrl = info.linkUrl;
            
                if (info.menuItemId === "720p") {
                    sendLinkToNativeApp(linkUrl, "video720");
                } else if (info.menuItemId === "music") {
                    sendLinkToNativeApp(linkUrl, "music");
                } else if (info.menuItemId === "maxQual") {
                    sendLinkToNativeApp(linkUrl, "videomp4");
                } else if (info.menuItemId === "piQual") {
                    sendLinkToNativeApp(linkUrl, "video720p30");
                } else if (info.menuItemId === "streamLink") {
                    sendLinkToNativeApp(linkUrl, "stream");
                }
            });
            
            function sendLinkToNativeApp(link, action) {
                console.log("Sending link to native app with action:", action, link);
                chrome.runtime.sendNativeMessage(
                    'com.example.ytlink_processor',
                    { link: link, action: action },
                    function(response) {
                        if (chrome.runtime.lastError) {
                            console.error("Error:", chrome.runtime.lastError.message);
                        } else {
                            console.log("Received response from native app:", response.output);
                        }
                    }
                );
            }
            
            native_host.py (chatGPT wrote this because I can't Python)
            import sys
            import subprocess
            import json
            import struct
            
            def log_to_file(message):
                with open("log.txt", "a") as log_file:
                    log_file.write(message + "\n")
            
            def get_message():
                raw_length = sys.stdin.read(4)
                if len(raw_length) == 0:
                    sys.exit(0)
                message_length = struct.unpack('I', raw_length)[0]
                message = sys.stdin.read(message_length)
                return json.loads(message)
            
            def send_message(message_content):
                message = json.dumps(message_content)
                sys.stdout.write(struct.pack('I', len(message)))
                sys.stdout.write(message)
                sys.stdout.flush()
            
            def process_link(link, action):
                if action == "stream":
                    cmd = 'yt-dlp --stream "{}" -o - | "D:/Programme/VLC/vlc.exe" -'.format(link)
                else:
                    cmd = 'yt-dlp --{} "{}"'.format(action, link)
                result = subprocess.Popen('start cmd /c "{}"'.format(cmd), shell=True)
                return result.stdout + result.stderr
            
            if __name__ == "__main__":
                message = get_message()
                link = message.get("link")
                action = message.get("action")
                if link and action:
                    output = process_link(link, action)
                    send_message({"output": output})
            
            

            The actions are just aliases for different qualities (old pi, so 720p60 stutters at times), audio extraction, etc.