Skip to content

Commit af12787

Browse files
authored
Merge pull request #339 from th-ch/fix-downloader-plugin
Fix downloader plugin
2 parents 47a5dec + 38ef452 commit af12787

File tree

4 files changed

+83
-16
lines changed

4 files changed

+83
-16
lines changed

index.js

+44-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
const path = require("path");
33

44
const electron = require("electron");
5+
const enhanceWebRequest = require("electron-better-web-request").default;
56
const is = require("electron-is");
67
const unhandled = require("electron-unhandled");
78
const { autoUpdater } = require("electron-updater");
@@ -143,17 +144,19 @@ function createMainWindow() {
143144
});
144145
}
145146
});
146-
147+
147148
win.webContents.on("render-process-gone", (event, webContents, details) => {
148149
showUnresponsiveDialog(win, details);
149150
});
150-
151+
151152
win.once("ready-to-show", () => {
152153
if (config.get("options.appVisible")) {
153154
win.show();
154155
}
155156
});
156157

158+
removeContentSecurityPolicy();
159+
157160
return win;
158161
}
159162

@@ -373,7 +376,45 @@ function showUnresponsiveDialog(win, details) {
373376
app.quit();
374377
break;
375378
default:
376-
break;
379+
break;
377380
}
378381
});
379382
}
383+
384+
function removeContentSecurityPolicy(
385+
session = electron.session.defaultSession
386+
) {
387+
// Allows defining multiple "onHeadersReceived" listeners
388+
// by enhancing the session.
389+
// Some plugins (e.g. adblocker) also define a "onHeadersReceived" listener
390+
enhanceWebRequest(session);
391+
392+
// Custom listener to tweak the content security policy
393+
session.webRequest.onHeadersReceived(function (details, callback) {
394+
if (
395+
!details.responseHeaders["content-security-policy-report-only"] &&
396+
!details.responseHeaders["content-security-policy"]
397+
)
398+
return callback({ cancel: false });
399+
delete details.responseHeaders["content-security-policy-report-only"];
400+
delete details.responseHeaders["content-security-policy"];
401+
callback({ cancel: false, responseHeaders: details.responseHeaders });
402+
});
403+
404+
// When multiple listeners are defined, apply them all
405+
session.webRequest.setResolver("onHeadersReceived", (listeners) => {
406+
const response = listeners.reduce(
407+
async (accumulator, listener) => {
408+
if (accumulator.cancel) {
409+
return accumulator;
410+
}
411+
412+
const result = await listener.apply();
413+
return { ...accumulator, ...result };
414+
},
415+
{ cancel: false }
416+
);
417+
418+
return response;
419+
});
420+
}

package.json

+4-3
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,10 @@
6969
"YoutubeNonStop": "git://github.com/lawfx/YoutubeNonStop.git#v0.9.0",
7070
"async-mutex": "^0.3.1",
7171
"browser-id3-writer": "^4.4.0",
72-
"custom-electron-titlebar": "^3.2.7",
7372
"chokidar": "^3.5.1",
73+
"custom-electron-titlebar": "^3.2.7",
7474
"discord-rpc": "^3.2.0",
75+
"electron-better-web-request": "^1.0.1",
7576
"electron-debug": "^3.2.0",
7677
"electron-is": "^3.0.0",
7778
"electron-localshortcut": "^3.2.1",
@@ -82,8 +83,8 @@
8283
"md5": "^2.3.0",
8384
"node-fetch": "^2.6.1",
8485
"node-notifier": "^9.0.1",
85-
"ytdl-core": "^4.8.2",
86-
"ytpl": "^2.2.0"
86+
"ytdl-core": "^4.8.3",
87+
"ytpl": "^2.2.1"
8788
},
8889
"devDependencies": {
8990
"electron": "^12.0.8",

plugins/adblocker/blocker.js

+11-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,17 @@ const loadAdBlockerEngine = (
3333
...additionalBlockLists,
3434
];
3535

36-
ElectronBlocker.fromLists(fetch, lists, {}, cachingOptions)
36+
ElectronBlocker.fromLists(
37+
fetch,
38+
lists,
39+
{
40+
// when generating the engine for caching, do not load network filters
41+
// So that enhancing the session works as expected
42+
// Allowing to define multiple webRequest listeners
43+
loadNetworkFilters: session !== undefined,
44+
},
45+
cachingOptions
46+
)
3747
.then((blocker) => {
3848
if (session) {
3949
blocker.enableBlockingInSession(session);

yarn.lock

+24-9
Original file line numberDiff line numberDiff line change
@@ -550,9 +550,9 @@
550550
integrity sha512-qunWJl5PezpXEm31tb8Qu5z37B5KVA1VYZCpXchMhuAb3X9T7PuE3SlhOwphEoRhzaOa3lpofDfzihAUMFaVPQ==
551551

552552
"@ffmpeg/ffmpeg@^0.10.0":
553-
version "0.10.0"
554-
resolved "https://registry.yarnpkg.com/@ffmpeg/ffmpeg/-/ffmpeg-0.10.0.tgz#0bebd944d50ce11297b91883f94b2f6220b74e34"
555-
integrity sha512-W+d0ysYTO6d4vue/0KMYrxaprh9wvmnPqh6qyHXavBWLrDcE7gI3cJ/EQVfwe9nrt2e0Pi7873P2I18VEDgRfA==
553+
version "0.10.1"
554+
resolved "https://registry.yarnpkg.com/@ffmpeg/ffmpeg/-/ffmpeg-0.10.1.tgz#3dacf3985de9c83a95fbf79fe709920cc009b00a"
555+
integrity sha512-ChQkH7Rh57hmVo1LhfQFibWX/xqneolJKSwItwZdKPcLZuKigtYAYDIvB55pDfP17VtR1R77SxgkB2/UApB+Og==
556556
dependencies:
557557
is-url "^1.2.4"
558558
node-fetch "^2.6.1"
@@ -3264,6 +3264,14 @@ ejs@^3.1.6:
32643264
dependencies:
32653265
jake "^10.6.1"
32663266

3267+
electron-better-web-request@^1.0.1:
3268+
version "1.0.1"
3269+
resolved "https://registry.yarnpkg.com/electron-better-web-request/-/electron-better-web-request-1.0.1.tgz#9c7ccf88499cc8b17f9bffd3f33a01fc1e70282a"
3270+
integrity sha512-euwLeL82k6fbVODfH5Uz9c4BN047/XyYKfsZcaFhdWfqx05JPu2J0xE7nciJ/1Bb0sTClU1FDLW5H2zQWBB5Gw==
3271+
dependencies:
3272+
url-match-patterns "^0.2.0"
3273+
uuid "^3.3.2"
3274+
32673275
electron-builder@^22.10.5:
32683276
version "22.10.5"
32693277
resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.10.5.tgz#03b156b93e6012609027c3aaa69201a3ad21e454"
@@ -6222,7 +6230,7 @@ lodash.zip@^4.2.0:
62226230
resolved "https://registry.yarnpkg.com/lodash.zip/-/lodash.zip-4.2.0.tgz#ec6662e4896408ed4ab6c542a3990b72cc080020"
62236231
integrity sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=
62246232

6225-
lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21:
6233+
lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.3.0:
62266234
version "4.17.21"
62276235
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
62286236
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -8859,6 +8867,13 @@ urix@^0.1.0:
88598867
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
88608868
integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
88618869

8870+
url-match-patterns@^0.2.0:
8871+
version "0.2.0"
8872+
resolved "https://registry.yarnpkg.com/url-match-patterns/-/url-match-patterns-0.2.0.tgz#a688f68b0aff990c6df3c99ec208a8d410f1cb8c"
8873+
integrity sha1-poj2iwr/mQxt88mewgio1BDxy4w=
8874+
dependencies:
8875+
lodash "^4.3.0"
8876+
88628877
url-parse-lax@^3.0.0:
88638878
version "3.0.0"
88648879
resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c"
@@ -9355,16 +9370,16 @@ yocto-queue@^0.1.0:
93559370
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
93569371
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
93579372

9358-
ytdl-core@^4.8.2:
9359-
version "4.8.2"
9360-
resolved "https://registry.yarnpkg.com/ytdl-core/-/ytdl-core-4.8.2.tgz#f034ad942c5d958f5987fc8ff0b0639664ae2fb7"
9361-
integrity sha512-O3n++YcgZawaXJwbPmnRDgfN6b4kU0DpNdkI9Na5yM3JAdfJmoq5UHc8v9Xjgjr1RilQUUh7mhDnRRPDtKr0Kg==
9373+
ytdl-core@^4.8.3:
9374+
version "4.8.3"
9375+
resolved "https://registry.yarnpkg.com/ytdl-core/-/ytdl-core-4.8.3.tgz#21570d1834db13dec7828cf87bbf4c83c0fe68d7"
9376+
integrity sha512-cWCBeX4FCgjcKmuVK384MT582RIAakpUSeMF/NPVmhO8cWiG+LeQLnBordvLolb0iXYzfUvalgmycYAE5Sy6Xw==
93629377
dependencies:
93639378
m3u8stream "^0.8.3"
93649379
miniget "^4.0.0"
93659380
sax "^1.1.3"
93669381

9367-
ytpl@^2.2.0:
9382+
ytpl@^2.2.1:
93689383
version "2.2.1"
93699384
resolved "https://registry.yarnpkg.com/ytpl/-/ytpl-2.2.1.tgz#e514eccdd46e02eeb0d16e08f8278489258ab31a"
93709385
integrity sha512-sxty58s4JTNCDkiaiTkcaXfWCOW5sfHOPwDQtWIkoU4C+Kht2qat8yaLVbWZIclUSZo+naANyaI7LGjhhrErGA==

0 commit comments

Comments
 (0)