mirror of
https://github.com/pixeltris/TwitchAdSolutions.git
synced 2024-11-23 02:42:42 +01:00
38 lines
1.6 KiB
JavaScript
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();
|
|
})();
|