If you use uBlock Origin, you can also just hide them: https://github.com/gijsdev/ublock-hide-yt-shorts
The inability of tech companies to accept that no means no, and not "bother me later" is a dark pattern that I've noticed more and more lately.
Do you want to enable push notifications?
[Yes please] [Later]
How about [No]? Just add a note that I can always enable this later if I want to, but don't jerk around with this nudging making me feel I'm just postponing this choice.IMO, something should have been done when A/B tests became normal(mid to late 2000s). That ship had long long sailed, but I believe that alone require independent ethics board if it is happening outside the Web. It should not be something easily handled with a blanket waiver in shrinkwrap EULA.
Or I should say, I nearly wrote a userscript to do this, it mostly works but I still find myself manually changing urls. I am not good with JS.
// ==UserScript==
// @name Youtube shorts redirect
// @namespace http://tampermonkey.net/
// @version 0.3
// @description Youtube shorts > watch redirect
// @author
// @match *://*.youtube.com/*
// @icon https://www.google.com/s2/favicons?domain=youtube.com
// @grant none
// @run-at document-start
// @license GNU GPLv2
// ==/UserScript==
var oldHref = document.location.href;
if (window.location.href.indexOf('youtube.com/shorts') > -1) {
window.location.replace(window.location.toString().replace('/shorts/', '/watch?v='));
}
window.onload = function() {
var bodyList = document.querySelector("body")
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (oldHref != document.location.href) {
oldHref = document.location.href;
console.log('location changed!');
if (window.location.href.indexOf('youtube.com/shorts') > -1) {
window.location.replace(window.location.toString().replace('/shorts/', '/watch?v='));
}
}
});
});
var config = {
childList: true,
subtree: true
};
observer.observe(bodyList, config);
}; // ==UserScript==
// @name eat my shorts
// @namespace http://tampermonkey.net/
// @version 0.1
// @description change links to youtube shorts to reguler site
// @author jrs
// @match https://www.youtube.com/*
// @icon none
// @grant none
// ==/UserScript==
(function() {
'use strict';
function eat_shorts() {
const root = document;
const shorts_re = /^\/shorts\/(.*)/;
const ae = root.getElementsByTagName("a");
for (var i = 0; i < ae.length; i++) {
const this_a = ae[i];
const short_match = shorts_re.exec(this_a.getAttribute("href") );
if (short_match) {
this_a.setAttribute("href", "/v/" + short_match[1]);
}
}
}
const config = {
attributes: false,
childList: true,
subtree: true
}
//timer resets every time the returned function is called
function make_reset_timer(cb, timeout) {
var timer = setTimeout(cb, timeout);
function reset_timer(mutation_list, observer) {
clearTimeout(timer);
timer = setTimeout(cb, timeout);
}
return reset_timer;
}
const short_observer = new MutationObserver(make_reset_timer(eat_shorts, 10));
short_observer.observe(document, config);
})();