Youtube General thread (formerly Youtube Censorship discussion thread)

I've noticed that if you're not signed in, YouTube will recommend left-wing content even when you'r'e watching something entirely unrelated.
It also does that if you're signed in and you don't watch political shit—if you happen to watch something they've internally labeled as right wing. Gotta jerk you back from that rabbithole.

A year later I'm still getting punished with "news" and corporate troonshit for watching a Sargon vid about the ruin of the streets where the old Swindon live music venues were. I watched it because I'm an XTC fan. The places they used to play in and sing about are immigration fraud fronts now.

An innocent algorithm would understand ("understand") what I did. But YouTube's has a Prime Directive: No escape.
 
Since it seems like a lot of people dislike the YouTube related/recommended videos, here's a cross-post from the "Dead Internet" thread with a short script I wrote to remove that section from the video playback page. I don't use YT enough to know where else they show recommended videos, but the script could easily be adapted to include more tags or ids if you wanted.

 
I think I managed to break the YouTube front page algorithm. Apparently if you block enough channels and individual videos through the "Not Interested" / "Don't recommend channel" buttons the algorithm just gives up and stops working. This has two results: the front page displays maybe 2-6 videos at a time and the buttons with categories on top disappear completely. This means I can choose between an almost completely empty front page or a front page full of slop I am not interested in.
 
I think I managed to break the YouTube front page algorithm. Apparently if you block enough channels and individual videos through the "Not Interested" / "Don't recommend channel" buttons the algorithm just gives up and stops working. This has two results: the front page displays maybe 2-6 videos at a time and the buttons with categories on top disappear completely. This means I can choose between an almost completely empty front page or a front page full of slop I am not interested in.
I am at this stage for years, new videos won't even load anymore when i scroll down. I tried to "fix" it once by reverting my Do Not Recommend list but reached this same stage in like three month because im very rigorous on what i want recommended or not. Pretty much only watch videos by the sub 20 people i am subscribed to now. It's not a bad thing per se because it limits the time i spend on that shitty site but sometimes i am in the mood to bombard myself with slop and i simply can't do that anymore, thanks to the subhumans who wrote YT's code.
 
I think I managed to break the YouTube front page algorithm. Apparently if you block enough channels and individual videos through the "Not Interested" / "Don't recommend channel" buttons the algorithm just gives up and stops working. This has two results: the front page displays maybe 2-6 videos at a time and the buttons with categories on top disappear completely. This means I can choose between an almost completely empty front page or a front page full of slop I am not interested in.
I've found that too, but it's only temporary. After a couple of weeks, the slop comes back.

The only way I've found that stops the slop from returning is to use Blocktube, and set it so that when you block a channel it automatically clicks "Not interested / don't recommend channel". I suspect what happens there is that whenever The Algorithm thinks the coast is clear, that video will be clobbered before you even get a chance to be bothered by it.

Even when I rawdog YT without Blocktube these days, the front page is nowhere nearly as egregious as it once was, though I suspect if stopped using Blocktube entirely, it'd take YT a few days to entirely shit it up again.
 
If you care about how you listen to music on YouTube or audio in general, this post may be of importance.

Have you ever listened to a music track on YouTube and wondered why it sounds not as good compared to listening to it "raw" as a audio file? Or that when downloading and reposting any video here it sounds noticeably louder than what it was before on site? Then you're experiencing "Loudness Units Full Scale" or LUFS for short. LUFS acts as a "Volume Normalization" for videos that exceeds a certain threshold (-14 LUFS in specific) to where if the audio in videos passes this threshold, it will turn down the volume of said video. This was made so that audio played between videos wouldn't be so "loud" one after the other, but this comes with the downside that you are actively listening to a gimped version of a video that is NOT at full volume. If you listen to music tracks there like I'm sure most here do, this is especially problematic as this is what many refer to as "YouTube compression" that makes listening to music there not as good of an experience than listening to it raw or elsewhere.

HOW 2 FIX
If you're using a frontend for video playback like FreeTube, PipePipe, GrayJay, etc., then you have nothing to worry about as it extracts the raw audio and video streams from YouTube and plays them with standard media players.

But if you're watching it in-browser, then
1. Install Tampermonkey
2. Install this userscript from GitHub that disables the normalization (clicking the "raw" button should install it automatically).
Kod:
// ==UserScript==
// @name         No YouTube Volume Normalization
// @namespace    https://gist.github.com/abec2304
// @match        https://www.youtube.com/*
// @match        https://music.youtube.com/*
// @grant        GM_addElement
// @version      2.80
// @author       abec2304
// @description  Enjoy YouTube videos at their true volume
// @run-at       document-start
// @allFrames    true
// ==/UserScript==

/* eslint-env browser, greasemonkey */
/* biome-ignore-all lint/style/useTemplate: legacy support */
/* biome-ignore-all lint/complexity/useArrowFunction: legacy support */
/* biome-ignore-all lint/suspicious/noRedundantUseStrict: quirky linters */

(function xvolnorm(pageScript, thisObj) {
  "use strict";

  var scriptId = "ytvolfix2";

  var logMessage = function (message) {
    console.debug(scriptId + "_injector: " + message);
  };

  var digestMessage = function (message, callback) {
    var msgBytes = new TextEncoder().encode(message);
    logMessage("attempting to hash script");
    window.crypto.subtle.digest("SHA-256", msgBytes).then(function (buffer) {
      var arr;
      var hex;

      if (typeof cloneInto !== typeof undefined) {
        // workaround for Firemonkey
        buffer = cloneInto(buffer, thisObj);
      }

      try {
        arr = Array.from(new Uint8Array(buffer));
        hex = arr
          .map(function (b) {
            return b.toString(16).padStart(2, "0");
          })
          .join("");
        logMessage("obtained hash");
        callback(hex);
      } catch (_ignore) {
        logMessage("unable to convert hash data");
        callback("unknown");
      }
    });
  };

  var inject = function (hash) {
    var content = "(" + pageScript + ")('" + scriptId + "', '" + hash + "');";
    logMessage("preparing page script");
    if (document.head) {
      GM_addElement("script", { id: scriptId, textContent: content });
      logMessage("injected page script");
      return;
    }
    document.addEventListener("DOMContentLoaded", function () {
      GM_addElement("script", { id: scriptId, textContent: content });
      logMessage("injected page script (delayed)");
    });
  };

  if (typeof GM_addElement === typeof undefined) {
    window.GM_addElement = function (a, b) {
      var elem = document.createElement(a);
      Object.keys(b).forEach(function (key) {
        elem[key] = b[key];
      });
      document.head.appendChild(elem);
      return elem;
    };
    logMessage("defined addElement polyfill");
  }

  try {
    digestMessage(pageScript, inject);
  } catch (_ignore) {
    logMessage("unable to hash");
    inject("unknown");
  }
})(function (scriptId, hash) {
  "use strict";

  var logMessage = function (message) {
    console.debug(scriptId + ": " + message);
  };

  var _ignore = logMessage("page script called");

  var volumeColors = ["thistle", "plum", "orchid", "mediumorchid", "darkorchid", "darkviolet"];

  var styleNum = 0;

  var addVolumeStyle = function (parent) {
    var offset = "position: absolute; left: 0 !important; transform: translate(-100%)";
    var color = "background: " + volumeColors[styleNum % volumeColors.length] + " !important";
    var about = "No YouTube Volume Normalization #" + hash.slice(0, 16);

    var curStyle = parent.querySelector("style." + scriptId + "_style");
    if (curStyle) {
      logMessage("updating style");
    } else {
      curStyle = document.createElement("style");
      curStyle.className = scriptId + "_style";
      parent.appendChild(curStyle);
      logMessage("added style element");
    }
    curStyle.textContent = ".ytp-volume-slider-handle::after { " + color + "; " + offset + "; }";
    curStyle.textContent += " .ytp-sfn-content::after { content: '" + about + "' }";
    curStyle.textContent += " ytmusic-nerd-stats::after { content: '" + about + "' }";
    styleNum += 1;
  };

  var setVolume = function (panel, video, setter) {
    var newVolume = panel.getAttribute("aria-valuenow") / 100;
    if (newVolume === video.lastVolume) {
      return;
    }
    video.lastVolume = newVolume;
    setter.call(video, newVolume);
  };

  var handleVideo = function (videoElem) {
    var parentL0;
    var parentL1;
    var desc;
    var setter;
    var volumePanel;

    parentL0 = videoElem.parentNode;
    if (!parentL0) {
      logMessage("video immediately detached from page " + videoElem.outerHTML);
      return;
    }

    parentL1 = parentL0.parentNode;
    if (!parentL1) {
      logMessage("video detached from page " + videoElem.outerHTML);
      return;
    }

    if (videoElem.volume === 42) {
      logMessage("shadowed value indicates we already handled this video");
      return;
    }

    desc = Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, "volume");
    if (!desc) {
      logMessage("using archaic volume descriptor");
      desc = Object.getOwnPropertyDescriptor(videoElem, "volume");
    }

    setter = desc.set;

    volumePanel = parentL1.querySelector(".ytp-volume-panel");
    if (!volumePanel) {
      volumePanel = document.querySelector("ytmusic-player-bar #volume-slider #sliderBar");
      if (!volumePanel) {
        logMessage("abandoning shadow - no associated volume panel");
        return;
      } else {
        logMessage("found music subdomain volume panel");
      }
    }

    addVolumeStyle(parentL1);

    Object.defineProperty(videoElem, "volume", {
      get: function () {
        logMessage("read of shadowed volume value");
        return 42;
      },
      set: function (_ignore) {
        var toCall = function () {
          setVolume(volumePanel, videoElem, setter);
        };
        // slight delay to allow volume panel to update
        window.setTimeout(toCall, 5);
      }
    });
    logMessage("shadowed volume property");

    setVolume(volumePanel, videoElem, setter);
    logMessage("initial volume set");
  };

  var videoObserver;
  var intervalId;

  var existingVideos = document.querySelectorAll("video");
  logMessage("number of existing video elements = " + existingVideos.length);
  Array.prototype.forEach.call(existingVideos, handleVideo);

  videoObserver = new MutationObserver(function (records) {
    records.forEach(function (mutation) {
      Array.prototype.forEach.call(mutation.addedNodes, function (node) {
        var volumePanel;
        var allVideo;

        var processNext = function (index, videoLen) {
          if (index < videoLen) {
            logMessage("evaluating potential video element");
            handleVideo(allVideo[index]);
            processNext(index + 1, videoLen);
          }
        };

        if ("VIDEO" === node.tagName) {
          logMessage("observed a video element being added");
          handleVideo(node);
        } else {
          volumePanel = node.querySelector ? node.querySelector(".ytp-volume-panel") : null;
          if (volumePanel) {
            logMessage("volume panel lazily added");
          } else {
            return;
          }
          allVideo = document.querySelectorAll("video");
          processNext(0, allVideo.length);
        }
      });
    });
  });

  videoObserver.observe(document.documentElement, { childList: true, subtree: true });

  intervalId = window.setInterval(function ytvolfix2cleanup() {
    var scriptElem = document.getElementById(scriptId);
    if (!scriptElem) {
      logMessage("nothing found to clean up");
    } else {
      scriptElem.parentNode.removeChild(scriptElem);
      logMessage("cleaned up own script element");
    }
    clearInterval(intervalId);
  }, 1500);
}, this);
And that's it, now you can enjoy your music (or earrape) in full 0 dBs quality! :D
 
Anyone know where I can get a free YT downloader that will download YT videos that are longer than 30 minutes? I used to be able to do it with YTMP3 but nowadays it gives you an error message if you try and download anything longer than 30 minutes.
Use yt-dlp which is what all of those tools are built on. If you need a GUI then Stacher.
 
Anyone else having "YouTube Featured" ads breaking through Brave's ad blocker in the last day or two? I've tried turning shields on and off, clearing cookies and caches, I'm not even getting the "Turn off Ad-blocker to continue using YouTube" pop-up or the "Experiencing Interruptions?" one either, they're just getting through somehow.
 
Is someone making a new channel every couple of days called "Boring History for Sleep?" With variations in the name, but the same AI thumbnails.

And if so, why? Are the previous channels being deleted or are there dozens of AI "Sleepy Historian" channels by now? Competing, or all the same company?

It's just weird. I think there's something similar going on in true crime, but the names aren't as cookie-cutter.
 
Is someone making a new channel every couple of days called "Boring History for Sleep?" With variations in the name, but the same AI thumbnails.
Yes, every channel and even individual videos that get a reasonable number of views are automatically AI-copied. If those copies get views, that spawns another round of copies.
slopmania.png

A script scrapes for watched new videos, downloads it, computervision summarizes it and transcripts the audio, then this is pipelined to other models that create new graphics based on the existing ones and slaps a new AI-generated voiceover on it. All of this can now be automated and Youtube is completely drowning in this.
 
A script scrapes for watched new videos, downloads it, computervision summarizes it and transcripts the audio, then this is pipelined to other models that create new graphics based on the existing ones and slaps a new AI-generated voiceover on it. All of this can now be automated and Youtube is completely drowning in this.
Fuck.

At least there were live humans making the Elsagate videos.
 
I have no fucking clue how to install yt-dlp let alone get it working so it's not a fucking option for me. Want a website I can just plug in the address and click the convert/download button.
Just use Stacher then. It serves the same purpose as those websites but is running locally.
If you absolutely MUST have a website, try these.
 
I have no fucking clue how to install yt-dlp let alone get it working so it's not a fucking option for me. Want a website I can just plug in the address and click the convert/download button.
If you can deal with basic computer usage you can certainly deal with yt-dlp. You're in the information age, stop being a retard and just read any tutorial telling you exactly what needs to be done, it will take less time than finding an another excuse to why you're incapable of doing this.
 
Have you ever listened to a music track on YouTube and wondered why it sounds not as good compared to listening to it "raw" as a audio file? Or that when downloading and reposting any video here it sounds noticeably louder than what it was before on site? Then you're experiencing "Loudness Units Full Scale" or LUFS for short. LUFS acts as a "Volume Normalization" for videos that exceeds a certain threshold (-14 LUFS in specific) to where if the audio in videos passes this threshold, it will turn down the volume of said video. This was made so that audio played between videos wouldn't be so "loud" one after the other, but this comes with the downside that you are actively listening to a gimped version of a video that is NOT at full volume. If you listen to music tracks there like I'm sure most here do, this is especially problematic as this is what many refer to as "YouTube compression" that makes listening to music there not as good of an experience than listening to it raw or elsewhere.
The reason audio on YouTube sounds like ass is the compression. The volume reduction is just ReplayGain. It doesn’t affect the quality. Lowering the volume is a realtime operation, not a reencoding process (like using the volume bar). Doing your hack is just going to lead to a bigger variation in volume from video to video. It won’t affect the quality.

If you want the best quality audio, use something like Enhancer to force videos to play at their highest quality (e.g. 4K).
 
Ostatnio edytowane:
Is someone making a new channel every couple of days called "Boring History for Sleep?" With variations in the name, but the same AI thumbnails.

And if so, why? Are the previous channels being deleted or are there dozens of AI "Sleepy Historian" channels by now? Competing, or all the same company?

It's just weird. I think there's something similar going on in true crime, but the names aren't as cookie-cutter.
That's weird you mention this; I noticed on my recommends, maybe a week ago, some video labelled along those lines. I don't know if it was "Boring History for Sleep", but it was a very similar name; boring something for something.

I didn't click it, but I distinctly remember seeing the thumbnail, because my reaction was "why the fuck would I want to watch a BORING video??" followed by me fuming for the next few minutes about being sent intentionally dumbed-down or dumbed-down branded YT videos, and how I rather like long, engaging, informative content, blah blah blah the usual spergery.
1782661992191.png

I don't want to click on too many of them because, even logged off all accounts and in private browsers running TOR, I'm worried they will enshittify my recommendations even harder than they have been already, but I did find this video from Boring History Secrets that may clarify some things, but ultimately just raises more questions:

tl;dr he claims to be a history teacher from Vietnam (the UK, according to his channel description) who overcame a longtime struggle with insomnia by watching history videos. He then partnered with a shadowy video editor team to make videos to help other people sleep (I guess).
1782662879835.png
Because AI is physically incapable of making anyone that ugly and awkward, I assume he's a real live person. He does, of course, give off some serious scammer vibes, but here too his complete lack of charisma actually helps his case: if the AI video production team hired an actor to pretend to be a human in charge of this super-serious boring sleep insomnia-busting channel, they'd have surely hired someone who looks less like an acne-scarred lolicon enthusiast and more like, I dunno, a trustworthy history teacher. I'm guessing that IS the guy, at least behind that one particular channel, although it's anyone's guess as to whether or not he's a teacher, or from Vietnam, or ever had insomnia.

Of course, there are channels whose creation date predate his, that appear to be run by different people:
1782663109020.png
However, despite the age of the channel, whoever runs it only started uploading content a year ago, around the same time "Max" did. Same with:
1782663402707.png
The next guy's channel dates back to 2009, but only started uploading content 8 months ago. Possibly an old abandoned account some hackers got into? Or a boomer whose midlife crisis is starting a boring history slop channel?
1782663505008.png
2007!! Whoever created this channel was probably watching Fred. And yet, no content from before a year ago:
1782663678359.png
 
Possibly an old abandoned account some hackers got into? Or a boomer whose midlife crisis is starting a boring history slop channel?
They could be hacked or sold accounts but there's also the possibility that Google is generating them personally and collecting the ad revenue. That's why they don't care about the metric tonnes of sloppage flooding their website because they are trying to make a profit off it themselves (and Michael Tan there is just an actor, maybe). This is similar to how Spotify has tried to manufacture their "artists". The dates the accounts joined Youtube (2007 or 2009) are fake to throw off snoopy viewers. Of course Youtube could easily edit entries in their own database, just replacing 2025 with 2007.
 
Wstecz
Top Na dole