From 75e4b6a69cbb94c6394ec7e0b53039e3fd648f7d Mon Sep 17 00:00:00 2001 From: SimonBrazell Date: Tue, 10 Mar 2020 16:03:28 +1100 Subject: [PATCH] Add 'Always proxy video' as a settings & avoid youtube-dl.org redirects --- background.js | 21 ++++++++++++++------- images/.DS_Store | Bin 0 -> 6148 bytes manifest.json | 2 +- pages/options/options.html | 9 +++++++++ pages/options/options.js | 8 ++++++-- 5 files changed, 30 insertions(+), 10 deletions(-) create mode 100644 images/.DS_Store diff --git a/background.js b/background.js index 0373354..ed042da 100644 --- a/background.js +++ b/background.js @@ -25,14 +25,15 @@ const layers = { 'bicycling': 'C' } -let nitterInstance; -let invidiousInstance; -let bibliogramInstance; -let osmInstance; let disableNitter; let disableInvidious; let disableBibliogram; let disableOsm; +let nitterInstance; +let invidiousInstance; +let bibliogramInstance; +let osmInstance; +let alwaysProxy; window.browser = window.browser || window.chrome; @@ -56,6 +57,7 @@ browser.storage.sync.get( invidiousInstance = result.invidiousInstance || invidiousDefault; bibliogramInstance = result.bibliogramInstance || bibliogramDefault; osmInstance = result.osmInstance || osmDefault; + alwaysProxy = result.alwaysProxy; } ); @@ -84,6 +86,9 @@ browser.storage.onChanged.addListener(changes => { if ('disableOsm' in changes) { disableOsm = changes.disableOsm.newValue; } + if ('alwaysProxy' in changes) { + alwaysProxy = changes.alwaysProxy.newValue; + } }); function addressToLatLng(address, callback) { @@ -123,8 +128,10 @@ function redirectYouTube(url) { // Redirect requests for YouTube Player API to local files instead return browser.runtime.getURL('assets/www-widgetapi.js'); } else { - // Proxy video through the server - url.searchParams.append('local', true); + // Proxy video through the server if enabled by user + if (alwaysProxy) { + url.searchParams.append('local', true); + } return `${invidiousInstance}${url.pathname}${url.search}`; } } @@ -217,7 +224,7 @@ browser.webRequest.onBeforeRequest.addListener( details => { const url = new URL(details.url); let redirect; - if (url.host.match(youtubeRegex)) { + if (url.host.match(youtubeRegex) && !url.host.includes('youtube-dl.org')) { if (!disableInvidious) { redirect = { redirectUrl: redirectYouTube(url) diff --git a/images/.DS_Store b/images/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 +
+
+

Always proxy videos through Invidious?

+   + +
+
+ diff --git a/pages/options/options.js b/pages/options/options.js index aefca8f..8b30d90 100644 --- a/pages/options/options.js +++ b/pages/options/options.js @@ -8,6 +8,7 @@ let disableNitter = document.querySelector('#disable-nitter'); let disableInvidious = document.querySelector('#disable-invidious'); let disableBibliogram = document.querySelector('#disable-bibliogram'); let disableOsm = document.querySelector('#disable-osm'); +let alwaysProxy = document.querySelector('#always-proxy'); window.browser = window.browser || window.chrome; @@ -20,7 +21,8 @@ browser.storage.sync.get( 'disableNitter', 'disableInvidious', 'disableBibliogram', - 'disableOsm' + 'disableOsm', + 'alwaysProxy' ], result => { nitterInstance.value = result.nitterInstance || ''; @@ -31,6 +33,7 @@ browser.storage.sync.get( disableInvidious.checked = !result.disableInvidious; disableBibliogram.checked = !result.disableBibliogram; disableOsm.checked = !result.disableOsm; + alwaysProxy.checked = result.alwaysProxy; } ); @@ -43,7 +46,8 @@ document.querySelector('#save').addEventListener('click', () => { disableNitter: !disableNitter.checked, disableInvidious: !disableInvidious.checked, disableBibliogram: !disableBibliogram.checked, - disableOsm: !disableOsm.checked + disableOsm: !disableOsm.checked, + alwaysProxy: alwaysProxy.checked }); window.close(); }); \ No newline at end of file