This seems to works in Greasemonkey with least issues so far. The modified launcher script modifies the target script to address the issue with
strict-origin-when-cross-origin, which breaks dislike count and search box suggestions.
Code: Select all
// ==UserScript==
// @name Project VORAPIS TURBOLAUNCHER
// @namespace //www.github.com/VORAPIS
// @version 2.1.0.0
// @description V3 is the alternative solution to a fast and responsive YouTube frontend which combines performance with beauty, bringing back Google's best web layout.
// @author eov3cv@hotmail.com
// @include /.*:\/\/.*\.youtube\.com\/.*/
// @include /.*:\/\/www\.googleapis\.com\/youtube\/.*/
// @include /.*:\/\/youtube\.clients6\.google\.com\/.*/
// @include /.*:\/\/content-youtube\.googleapis\.com\/.*/
// @include /.*:\/\/myactivity\.google\.com\/.*/
// @include /.*:\/\/storage\.googleapis\.com\/.*/
// @exclude /.*:\/\/.*\.youtube\.com\/embed\/.*/
// @exclude /.*:\/\/studio\.youtube\.com\/.*/
// @exclude /.*:\/\/consent\.youtube.com\/.*/
// @exclude /.*:\/\/.*\.youtube.com\/oembed.*/
// @exclude /.*:\/\/.*\.youtube.com\/api\/.*/
// @exclude /.*:\/\/.*.youtube.com\/subscribe_embed.*/
// @exclude /.*:\/\/.*\.youtube.com\/s\/.*/
// @exclude /.*:\/\/.*\.youtube\.com\/img\/.*/
// @exclude /.*:\/\/img\.youtube\.com\/.*/
// @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com
// @grant none
// @run-at document-start
// ==/UserScript==
//Project VORAPIS (V3) License & Disclaimer
//
//Copyright (c) 2024 VORAPIS (eov3cv@hotmail.com)
//
//All rights reserved.
//
//DISCLAIMER
//
//Project VORAPIS (short. V3) is a JavaScript application developed to run as a userscript/extension on www.youtube.com, aiming to recreate the experience of using YouTube as it was in 2013-2014.
//It is important to note:
//
//1. This project is not funded, endorsed, or affiliated with Google LLC, YouTube, or any of their subsidiaries. V3 is developed independently and operates within the Terms of Service (TOS) of the utilized Google and YouTube services, including but not limited to "My Activity", "InnerTube", and "YouTube Data API v3".
//
//2. The developer(s) of V3 claim rights only to the original code that powers this library. No claim is made to any CSS, HTML, JavaScript, or other assets owned by Google, YouTube, or their subsidiaries. This includes a modified version of the 2014 Google/YouTube HTML5 player, adapted for compatibility with today's APIs. The modification efforts are acknowledged, but proprietary rights to the original player remain with Google/YouTube.
//
//LICENSE TERMS
//
//The V3 project is provided "as is" for personal, non-commercial use, free of charge, with the following conditions:
//
//- Sale or any form of commercial exploitation of V3 is strictly prohibited.
//- Users are not allowed to claim V3 or any of its parts as their own work.
//- The developer(s) of V3 offer no warranties or guarantees regarding the software's functionality, performance, or its compliance with any legal standards.
//
//LIMITATION OF LIABILITY
//
//Under no circumstances shall the developer(s) of V3 be liable for any direct, indirect, incidental, special, or consequential damages resulting from the use of or inability to use the project, including but not limited to reliance on any information obtained through the project; or any failure of performance.
//
//COPYRIGHT NOTICE
//
//Copyright (c) 2024 Project VORAPIS. All rights reserved.
//
//By downloading, accessing, or using V3, you acknowledge that you have read, understood, and agree to comply with the terms and conditions outlined in this license and disclaimer.
//page script
void function () {
window["trusted_policy"] = window["trustedTypes"] ? (window["trustedTypes"].createPolicy("VOR_TRUSTED_USELESS_POLICY", {
createHTML: function (a) {
return a;
}
})) : {
createHTML: function (a) {
return a;
}
};
window["PatcherJSC_TURBO_RUNNING"] = true;
var turbo_launcher = {};
turbo_launcher.gcc = {};
turbo_launcher.gcc.url = "https://vorapis.pages.dev/product/v3/game_service/patcher/get_latest_client";
turbo_launcher.gcc.update = function () {
return fetch(turbo_launcher.gcc.url + "?t=" + (new Date()).getTime()).then(function (r) {
return r.text();
}).then(function (r) {
return r;
});
};
turbo_launcher.vss = {};
turbo_launcher.vss.req = function (u) {
return fetch(u).then(function (r) {
return r.text();
}).then(function (r) {
return r.replaceAll("strict-origin-when-cross-origin", "");
});
};
turbo_launcher.vss.get = function () {
var ls = window.localStorage;
if (!ls) {
return console.error("LocalStorage error!");
}
var info = ls.getItem("VLTURBO_INFO");
var data = ls.getItem("VLTURBO_DATA");
var imp = false;
if (data) {
imp = true;
var s = document.createElement("script");
s.innerHTML = window["trusted_policy"].createHTML(data);
document.documentElement.appendChild(s);
} else {
window.stop();
}
return turbo_launcher.gcc.update().then(function (cver) {
if (info != cver) {
return turbo_launcher.vss.req(cver).then(function (cvss) {
ls.setItem("VLTURBO_DATA", cvss);
if (!imp) {
window.location.reload();
}
});
}
ls.setItem("VLTURBO_INFO", cver);
});
};
turbo_launcher.main = function () {
turbo_launcher.vss.get();
};
turbo_launcher.main();
}();
This hides from the user when the actual V3 interface scripts gets updated, but I guess it's where they're taking it. It's odd that executing V3 script directly in Greasemonkey makes it bug out, but it works through this script. Neither use any Gresemonkey features I think.
It was noticed that unlike original YT interface, loop playback of playlists currently doesn't work (nothing to do with web browser).