1
0
mirror of https://github.com/pixeltris/TwitchAdSolutions.git synced 2024-11-23 02:42:42 +01:00
TwitchAdSolutions/low-res/low-res.user.js
2021-01-06 15:14:42 -05:00

38 lines
1.6 KiB
JavaScript

// ==UserScript==
// @name TwitchAdSolutions (low-res)
// @namespace https://github.com/pixeltris/TwitchAdSolutions
// @version 1.0
// @description Avoids Twitch ads by using a lower resolution live stream without ads
// @author pixeltris
// @match *://*.twitch.tv/*
// @downloadURL https://github.com/pixeltris/TwitchAdSolutions/raw/master/low-res/low-res.user.js
// @run-at document-start
// @grant none
// ==/UserScript==
(function() {
'use strict';
function hookFetch() {
var OPT_ACCESS_TOKEN_PLAYER_TYPE = 'thunderdome';//480p
//var OPT_ACCESS_TOKEN_PLAYER_TYPE = 'picture-by-picture';//360p
var realFetch = window.fetch;
window.fetch = function(url, init, ...args) {
if (typeof url === 'string') {
if (OPT_ACCESS_TOKEN_PLAYER_TYPE) {
if (url.includes('/access_token')) {
var modifiedUrl = new URL(url);
modifiedUrl.searchParams.set('player_type', OPT_ACCESS_TOKEN_PLAYER_TYPE);
arguments[0] = modifiedUrl.href;
}
else if (url.includes('gql') && init && typeof init.body === 'string' && init.body.includes('PlaybackAccessToken')) {
const newBody = JSON.parse(init.body);
newBody.variables.playerType = OPT_ACCESS_TOKEN_PLAYER_TYPE;
init.body = JSON.stringify(newBody);
}
}
}
return realFetch.apply(this, arguments);
}
}
hookFetch();
})();