From 24b0d31ab550548c618164cc5f5fe5177f7af7e5 Mon Sep 17 00:00:00 2001 From: shirt-dev Date: Sat, 11 Mar 2023 18:14:18 -0500 Subject: [PATCH 1/9] Fix bitrate selection --- cadmium-playercore-shim.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cadmium-playercore-shim.js b/cadmium-playercore-shim.js index 70f2166..9dbf41b 100644 --- a/cadmium-playercore-shim.js +++ b/cadmium-playercore-shim.js @@ -169,11 +169,11 @@ do_patch( "preferredTextLocale: globalOptions.preferredTextLocale" ); -if(globalOptions.useDDPlus) { +if(globalOptions.useDDPlus && MediaSource.isTypeSupported('audio/mp4; codecs="ec-3"')) { do_patch( "Select highest audio bitrate 1", - /(indexOf\(z\))(\?[^?]+)/, - "$1)" + /(indexOf\(.\))(\?[^?]+)(\?[0-9]:)/, + "$1)$3" ); do_patch( From e577af28494b72dae87fe1bdfe0c95b7a8949e0c Mon Sep 17 00:00:00 2001 From: shirt-dev Date: Sat, 11 Mar 2023 18:17:20 -0500 Subject: [PATCH 2/9] Bump version --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index bff78bf..3bf5b6b 100644 --- a/manifest.json +++ b/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 2, "name": "Netflix International", "description": "Displays all available Netflix audio and subtitle tracks.", - "version": "2.0.18", + "version": "2.0.19", "author": "shirt", "browser_action": { "default_icon": "img/icon128.png", From cfe541e0e3943c274c78d7384cb1f920d34a0c64 Mon Sep 17 00:00:00 2001 From: shirt Date: Tue, 14 Mar 2023 08:44:53 -0400 Subject: [PATCH 3/9] Replace icon to appease Google --- img/icon128.png | Bin 953 -> 4188 bytes img/icon48.png | Bin 482 -> 2115 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/img/icon128.png b/img/icon128.png index ba0355ecefea5a796480fd90aad384178664a229..32c7b6465d2ac01ad0881878982cd9e09bcb86f8 100644 GIT binary patch literal 4188 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 BW;g%< delta 943 zcmV;g15o_jAh`#S7=Hu<0000n5PbLm001yhOjJbx004&o2WJBZ>jn@+0tQ_J2xkKb z;Rg|G0|}!B4yXkVu?7#u2N2N*5#xRm+{YL^QB z+XjSg)g-zSB$K#wk;YUZZmMb33I%Itp#A}=&bZJ{?!9l4=A5^j;*a;JMj*X1qF z5I{}d;%fr%1rY2KKx0Dy-x#1Px4;}h#t;+%o7Aqvwy>k0?sg_fa;Vj2C$t1AK{7V z6d16b0t2>FV4xA`Va~ln0W-`n;G1E_fx7M#959`tfTeK&(bxOnlYM2|u z5#&21Y=0Ag>Xa`8pgQGi6$jKX|6u^tDZ~+Ur?d$`4f7fSs7~1?fFUuA4-AO`0J^Ee zJU*a1rA+{;+Sdr+xx9q!>Uh940lZxh!0#%)gWfrLi^L9k`6wj@?jNyN$V1SOHiUZ!F(_0|;aT`%VD?cbHLN(cU5oIGut5P7EmE zbP5VMoq_^R34N^j@e`%#*(gdkjN{Rxe4#vL|EXM=()66!!CxNAU&n+S RnLhvk002ovPDHLkV1mnSkMRHi diff --git a/img/icon48.png b/img/icon48.png index d98796605d6caf2a5a19b59f71fe1b1f8fff80c7..6705cdb8e12f9c063116bb53b8865c123a2f9b7a 100644 GIT binary patch literal 2115 zcmeHI`8yL19Nv&?C1;LkqNYTVTbW|)Ky71EYS`DY8ntqKNp5PaF-z8DQIxMzN;#Kk zY>sk-ZwR4lb2LKcSbX(Qe1GbBKJVv!-sk=8ecsRWNk<=pZ&B1y1ONbAkO&xdgUxK7p$J$JsF7+%&YGhn!Bn3!2Oa$=zC=K>mg^DVEY9M@XPf1`e&+5(Vv8=x|jBx zzG%`uY?t?1PALs4wNz}p>+mMlqZjfm*<~lo;kB+ivHNFxiqP*H_Pu;^`xfV+p@W81 zU>CvSjGOYdSKgXa2DDhd=ilMiu6y}?Z|na0_Cr-nVe%0z?J>)`>Kdc*bmDQJ`;f;a znT|I996*qQ*oP9VJ1U;jt2XXPCI<;S>J^=z=Dq6d8L7VR6l$hc6(^fgnO$LuH^22# zhR;6CPkjx8DHzg=buM(95r~Of4esfisvzCyWfWn$M$p;Zn}ef$;*T>UHL+*`bG3GK zW_dWabNSAy9h2@)rCc#VL9#M)TlPd9eq|AOsFmuT{wz26dPT`Ni@}J!J6-HSA}nFuidFm>-C=W#_*q zEzSSN(Gz6Jg?Kka+fhqhgX>3>tUl?RmMzW##}Kr>hCFD)UIx5NczU84uHUhL1QTz? zxcb#3=Zo9t3zu`@O0@fFp(?H6+i1#hB(?5bQF(}>$CS^Z$LzHj-5I(n-ZoQn!dwgg zY2TAsN@}2CL~ulu9isZf9oJ$R#siDU8+Z1D-X=a{E{idXYx(h@Y3UR#TNQ-uMb(ro zQ9k%i?R%I71yTv|*Bi=C4?cK!UsK0b)8xD4C0w15LDQlzA<*{K76_1cxVr$_X2WIm z^D{GzblB;&v3$sqbJJkBlg-}5`DY6{CC;u2AdwUSg3EvL)8t`)$*k-UyAz<0({*ie5TEMpHg8~4xblUSS&u7y9m);_yIPl6Sd+T| zu45H(4s4w~Z}^r$Yz)*0O-kuC{*aOB`y;@}1hkozNJJtYgNt^bMwl)Y<5aPm(e2ot z_(|s^B$I%fas!)R3Aq9hwPL`T=qxK0Q($FJ%2W%%mTLeVwXeZch`1jQ3~+V5n^e3n zW+xpuF*e6w|7f)JCGwsOpt(28yW6{M$<+98R6;C?YJXhrg_u@b9x~ZuPxa{}#NLq6 zn}bbAWSs?%fh!#+8%7#shw9mK`;+j7M0X7?s68YmW?jS;JBH2`2&1FIQf`-2)8xx< z$pmtrE@6zN95-bo{uP+0nS?8qSB^7&8WloMsV7PQT4^l)`DkEiP)Wo*{0rH086SL~%nVgQ4VU@mmL|AbWDm^1o0ASYBysehPVjAzV6Kw7 zeW?)fn$DzqaDF9a%_dF_?`nSYhU7|jq&=j8GcwM01=OIl$G2)$I8+UTW74vKMrr*CFfOI(qd*bAu F{2!g?jx+!O delta 468 zcmV;_0W1E)5aI)n7=Hu<0001`EabER001yhOjJbx004#n2U-ILX#xrJ2or__3W@~_ z=Li#>1r62+6sH9au?7#l1`yH*66FaL^a&LLY|Z=t000YgQchCYg>-miT zE0X{K0ai&wK~y-)b&)$x!$1@OXA>l7z-w`V@Hs$)H~1O`}%00ijT2$%xj5n!AJe-be~z*Yn#0-VK+9Oy;> z0<78)7zfag7=OTH%+6RwFC&TmV{uD)r%O;0;dt+1=y4jY#8vD5r6=> z4S|^gCIM{Qu+`5dm;*j7&(t6RNF_AZpQ?ANfdGtwycZf@pLUVuTflxuIlY}*pob_U z8SAVXl+$ehawgSvnny7MOlSxNDoY!MeiS|2KdRowqD>|$OCQB#xvRD@quy1+__cLb z! Date: Fri, 17 Mar 2023 19:26:15 -0400 Subject: [PATCH 4/9] Fix max bitrate selection --- netflix_max_bitrate.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netflix_max_bitrate.js b/netflix_max_bitrate.js index 9ad496b..9707a43 100644 --- a/netflix_max_bitrate.js +++ b/netflix_max_bitrate.js @@ -6,7 +6,7 @@ let getElementByXPath = function (xpath) { }; let fn = function () { - const VIDEO_SELECT = getElementByXPath("//div[text()='Video Bitrate']"); + const VIDEO_SELECT = getElementByXPath("//div[text()='Video Bitrate']") || getElementByXPath("//div[text()='Video Bitrate / VMAF']"); const AUDIO_SELECT = getElementByXPath("//div[text()='Audio Bitrate']"); const BUTTON = getElementByXPath("//button[text()='Override']"); From 1ff293ccf3b222c0b01590c8ea962e3613ebd1c8 Mon Sep 17 00:00:00 2001 From: shirt-dev Date: Fri, 17 Mar 2023 19:27:26 -0400 Subject: [PATCH 5/9] Bump version --- manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manifest.json b/manifest.json index 3bf5b6b..03a43a2 100644 --- a/manifest.json +++ b/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 2, "name": "Netflix International", "description": "Displays all available Netflix audio and subtitle tracks.", - "version": "2.0.19", + "version": "2.0.20", "author": "shirt", "browser_action": { "default_icon": "img/icon128.png", From 79ca463a5a8cb2e86ac1bb6e8dfc6b0eaf93803a Mon Sep 17 00:00:00 2001 From: shirt <2660574+shirt-dev@users.noreply.github.com> Date: Sun, 5 Nov 2023 11:14:51 -0500 Subject: [PATCH 6/9] Fix max bitrate selector --- cadmium-playercore-shim.js | 2 +- manifest.json | 2 +- netflix_max_bitrate.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cadmium-playercore-shim.js b/cadmium-playercore-shim.js index 9dbf41b..9d6d35a 100644 --- a/cadmium-playercore-shim.js +++ b/cadmium-playercore-shim.js @@ -145,7 +145,7 @@ do_patch( ); do_patch( - "Re-enable Ctrl+Shift+Alt+S menu", + "Re-enable Ctrl+Shift+Alt+B menu", /this\...\....\s*&&\s*this\.toggle\(\);/, "this.toggle();" ); diff --git a/manifest.json b/manifest.json index 03a43a2..183255f 100644 --- a/manifest.json +++ b/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 2, "name": "Netflix International", "description": "Displays all available Netflix audio and subtitle tracks.", - "version": "2.0.20", + "version": "2.0.21", "author": "shirt", "browser_action": { "default_icon": "img/icon128.png", diff --git a/netflix_max_bitrate.js b/netflix_max_bitrate.js index 9707a43..654c4b7 100644 --- a/netflix_max_bitrate.js +++ b/netflix_max_bitrate.js @@ -26,7 +26,7 @@ let fn = function () { } window.dispatchEvent(new KeyboardEvent('keydown', { - keyCode: 83, + keyCode: 66, ctrlKey: true, altKey: true, shiftKey: true, From aacc5fc76fa95c05140773102574d09d443c8bdc Mon Sep 17 00:00:00 2001 From: shirt <2660574+shirt-dev@users.noreply.github.com> Date: Sun, 5 Nov 2023 11:44:01 -0500 Subject: [PATCH 7/9] Remove Dolby Digital Plus support Unfortunately Netflix keeps breaking Dolby Digital Plus and I don't have time to fix it. PRs welcome. --- cadmium-playercore-shim.js | 40 +++++--------------------------------- pages/options.html | 2 -- pages/options.js | 6 ------ 3 files changed, 5 insertions(+), 43 deletions(-) diff --git a/cadmium-playercore-shim.js b/cadmium-playercore-shim.js index 9d6d35a..a6e9fcc 100644 --- a/cadmium-playercore-shim.js +++ b/cadmium-playercore-shim.js @@ -100,27 +100,11 @@ function get_profile_list(original_profiles) { profiles = profiles.filter(val => !val.includes("av1-")); } - if (globalOptions.useDDPlus && MediaSource.isTypeSupported('audio/mp4; codecs="ec-3"')) { - // Dolby Digital - profiles = profiles.concat([ - "ddplus-2.0-dash", - ]); - - if (globalOptions.use6Channels) { - profiles = profiles.concat([ - "ddplus-5.1-dash", - "ddplus-5.1hq-dash", - "ddplus-atmos-dash", - ]); - } - } else { - // No Dolby Digital - if (globalOptions.use6Channels) { - profiles = profiles.concat([ - "heaac-5.1-dash", - ]); - } - } + if (globalOptions.use6Channels) { + profiles = profiles.concat([ + "heaac-5.1-dash", + ]); + } profiles = [...new Set(profiles)].sort(); return profiles; @@ -169,19 +153,5 @@ do_patch( "preferredTextLocale: globalOptions.preferredTextLocale" ); -if(globalOptions.useDDPlus && MediaSource.isTypeSupported('audio/mp4; codecs="ec-3"')) { - do_patch( - "Select highest audio bitrate 1", - /(indexOf\(.\))(\?[^?]+)(\?[0-9]:)/, - "$1)$3" - ); - - do_patch( - "Select highest audio bitrate 2", - /(var\sx;if\(this\.[^\)]+)/, - "$1 && !globalOptions.useDDPlus" - ); -} - // run our patched copy of playercore in a non-privileged context on the page window.Function(cadmium_src)(); diff --git a/pages/options.html b/pages/options.html index f51e58a..ca16bd9 100644 --- a/pages/options.html +++ b/pages/options.html @@ -24,8 +24,6 @@

- -

diff --git a/pages/options.js b/pages/options.js index 1992ee0..386a052 100644 --- a/pages/options.js +++ b/pages/options.js @@ -6,7 +6,6 @@ function save_options() { const disableVP9 = document.getElementById("disableVP9").checked; const disableAV1 = document.getElementById("disableAV1").checked; const disableHPL = document.getElementById("disableHPL").checked; - const useDDPlus = document.getElementById("useDDPlus").checked; const preferredLocale = document.getElementById("preferredLocale").value; const preferredTextLocale = document.getElementById("preferredTextLocale").value; @@ -17,7 +16,6 @@ function save_options() { disableVP9: disableVP9, disableAV1: disableAV1, disableHPL: disableHPL, - useDDPlus: useDDPlus, preferredLocale: preferredLocale, preferredTextLocale: preferredTextLocale, }, function() { @@ -36,7 +34,6 @@ function reset_options() { document.getElementById("disableVP9").checked = false; document.getElementById("disableAV1").checked = true; document.getElementById("disableHPL").checked = false; - document.getElementById("useDDPlus").checked = false; document.getElementById("preferredLocale").value = null; document.getElementById("preferredTextLocale").value = null; @@ -47,7 +44,6 @@ function reset_options() { disableVP9: false, disableAV1: true, disableHPL: false, - useDDPlus: false, preferredLocale: null, preferredTextLocale: null, }, function() { @@ -67,7 +63,6 @@ function restore_options() { disableVP9: false, disableAV1: true, disableHPL: false, - useDDPlus: false, preferredLocale: null, preferredTextLocale: null, }, function(items) { @@ -77,7 +72,6 @@ function restore_options() { document.getElementById("disableVP9").checked = items.disableVP9; document.getElementById("disableAV1").checked = items.disableAV1; document.getElementById("disableHPL").checked = items.disableHPL; - document.getElementById("useDDPlus").checked = items.useDDPlus; document.getElementById("preferredLocale").value = items.preferredLocale; document.getElementById("preferredTextLocale").value = items.preferredTextLocale; }); From 2d5268217e358d109007f3e1f0286f503647c5a7 Mon Sep 17 00:00:00 2001 From: shirt <2660574+shirt-dev@users.noreply.github.com> Date: Wed, 31 Jul 2024 19:06:19 -0400 Subject: [PATCH 8/9] Update playercore URLs --- background.js | 2 +- manifest.json | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/background.js b/background.js index d86bfad..68de4fa 100644 --- a/background.js +++ b/background.js @@ -40,7 +40,7 @@ chrome.webRequest.onBeforeRequest.addListener( }, { urls: [ "*://assets.nflxext.com/*/ffe/player/html/*", - "*://www.assets.nflxext.com/*/ffe/player/html/*" + "*://assets.nflxext.com/player/html/ffe/*" ], types: ["script"] }, ["blocking"] diff --git a/manifest.json b/manifest.json index 183255f..9bf12fa 100644 --- a/manifest.json +++ b/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 2, "name": "Netflix International", "description": "Displays all available Netflix audio and subtitle tracks.", - "version": "2.0.21", + "version": "2.0.22", "author": "shirt", "browser_action": { "default_icon": "img/icon128.png", @@ -19,8 +19,7 @@ }, "content_scripts": [{ "matches": [ - "*://assets.nflxext.com/*/ffe/player/html/*", - "*://www.assets.nflxext.com/*/ffe/player/html/*", + "*://assets.nflxext.com/*", "*://netflix.com/*", "*://www.netflix.com/*" ], @@ -45,8 +44,7 @@ "storage", "webRequest", "webRequestBlocking", - "*://assets.nflxext.com/*/ffe/player/html/*", - "*://www.assets.nflxext.com/*/ffe/player/html/*", + "*://assets.nflxext.com/*", "*://netflix.com/*", "*://www.netflix.com/*" ] From d0e76f73bf5a6607d2009204ce0b90b38bf16407 Mon Sep 17 00:00:00 2001 From: shirt <2660574+shirt-dev@users.noreply.github.com> Date: Sun, 4 Aug 2024 18:11:41 -0400 Subject: [PATCH 9/9] Update to manifest v3 --- background.js | 47 -------------------------------------- cadmium-playercore-shim.js | 2 +- manifest.json | 39 +++++++++++++++++++------------ rules.json | 26 +++++++++++++++++++++ 4 files changed, 52 insertions(+), 62 deletions(-) delete mode 100644 background.js create mode 100644 rules.json diff --git a/background.js b/background.js deleted file mode 100644 index 68de4fa..0000000 --- a/background.js +++ /dev/null @@ -1,47 +0,0 @@ -/* eslint-disable no-undef */ -// https://stackoverflow.com/a/45985333 -function getBrowser() { - if (typeof chrome !== "undefined") { - if (typeof browser !== "undefined") { - return "Firefox"; - } else { - return "Chrome"; - } - } else { - return "Edge"; - } -} - -chrome.webRequest.onBeforeRequest.addListener( - function (details) { - if (getBrowser() == "Chrome") { - return { redirectUrl: chrome.runtime.getURL("cadmium-playercore-shim.js") }; - } - - /* Work around funky CORS behaviour on Firefox */ - else if (getBrowser() == "Firefox") { - let filter = browser.webRequest.filterResponseData(details.requestId); - let encoder = new TextEncoder(); - filter.onstop = () => { - fetch(browser.runtime.getURL("cadmium-playercore-shim.js")). - then(response => response.text()). - then(text => { - filter.write(encoder.encode(text)); - filter.close(); - }); - }; - return {}; - } - - else { - console.error("Unsupported web browser."); - return {}; - } - }, { - urls: [ - "*://assets.nflxext.com/*/ffe/player/html/*", - "*://assets.nflxext.com/player/html/ffe/*" - ], - types: ["script"] - }, ["blocking"] -); diff --git a/cadmium-playercore-shim.js b/cadmium-playercore-shim.js index a6e9fcc..2cfef06 100644 --- a/cadmium-playercore-shim.js +++ b/cadmium-playercore-shim.js @@ -41,7 +41,7 @@ function do_patch(desc, needle, replacement) { the response before the body of this script finishes executing */ var request = new XMLHttpRequest(); var cadmium_url = document.getElementById("player-core-js").src; -request.open("GET", cadmium_url + "?no_filter", false); // synchronous +request.open("GET", cadmium_url, false); // synchronous request.send(); var cadmium_src = request.responseText; diff --git a/manifest.json b/manifest.json index 9bf12fa..ff4ef89 100644 --- a/manifest.json +++ b/manifest.json @@ -1,10 +1,10 @@ { - "manifest_version": 2, + "manifest_version": 3, "name": "Netflix International", "description": "Displays all available Netflix audio and subtitle tracks.", - "version": "2.0.22", + "version": "2.0.23", "author": "shirt", - "browser_action": { + "action": { "default_icon": "img/icon128.png", "default_popup": "pages/options.html" }, @@ -19,7 +19,6 @@ }, "content_scripts": [{ "matches": [ - "*://assets.nflxext.com/*", "*://netflix.com/*", "*://www.netflix.com/*" ], @@ -28,22 +27,34 @@ "js": ["content_script.js"], "run_at": "document_start" }], - "background": { - "scripts": ["background.js"] - }, "options_ui": { "page": "pages/options.html", "open_in_tab": true }, - "web_accessible_resources": [ - "cadmium-playercore-shim.js", - "netflix_max_bitrate.js", - "netflix.css" - ], + "web_accessible_resources": [{ + "resources": [ + "cadmium-playercore-shim.js", + "netflix_max_bitrate.js", + "netflix.css" + ], + "matches": [ + "*://assets.nflxext.com/*", + "*://netflix.com/*", + "*://www.netflix.com/*" + ] + }], + "declarative_net_request" : { + "rule_resources" : [{ + "id": "1", + "enabled": true, + "path": "rules.json" + }] + }, "permissions": [ "storage", - "webRequest", - "webRequestBlocking", + "declarativeNetRequestWithHostAccess" + ], + "host_permissions": [ "*://assets.nflxext.com/*", "*://netflix.com/*", "*://www.netflix.com/*" diff --git a/rules.json b/rules.json new file mode 100644 index 0000000..a948a65 --- /dev/null +++ b/rules.json @@ -0,0 +1,26 @@ +[ + { + "id": 1, + "priority": 1, + "action": { + "type": "redirect", + "redirect": { "extensionPath": "/cadmium-playercore-shim.js" } + }, + "condition": { + "urlFilter": "*://assets.nflxext.com/*/ffe/player/html/*", + "resourceTypes": ["script"] + } + }, + { + "id": 2, + "priority": 1, + "action": { + "type": "redirect", + "redirect": { "extensionPath": "/cadmium-playercore-shim.js" } + }, + "condition": { + "urlFilter": "*://assets.nflxext.com/player/html/ffe/*", + "resourceTypes": ["script"] + } + } +]