diff --git a/EnglishFilter/sections/specific.txt b/EnglishFilter/sections/specific.txt index 351a6239d68..882d30a458e 100644 --- a/EnglishFilter/sections/specific.txt +++ b/EnglishFilter/sections/specific.txt @@ -171,13 +171,28 @@ youtube.com###related > ytd-watch-next-secondary-results-renderer > #items > ytd youtube.com###watch7-branded-banner youtube.com##ytd-promoted-sparkles-web-renderer youtube.com##ytd-search-pyv-renderer -! Youtube whitescreen fix -youtube-nocookie.com,youtube.com#%#//scriptlet("json-prune", "adPlacements playerAds") +! +! START: Youtube whitescreen fix +! +! TODO: replace the JS rule with a json-prune scriptlet +! TODO: check that set-constant for ytInitialPlayerResponse.adPlacements is really necessary +! +! This one handles an XHR request for YT player data +! smart JSON override: https://gist.github.com/ameshkov/0c5148f243ffe9d8e40fd9ee11f142f4 +! smartJSONParseOverride('adPlacements', [], /.*/); +! smartJSONParseOverride('playerAds', [], /.*/); +youtube-nocookie.com,youtube.com#%#(function(){var overrideObject=function(obj,propertyName,overrideValue){var overriden=false;for(var key in obj)if(obj.hasOwnProperty(key)&&key===propertyName){obj[key]=overrideValue;overriden=true}else if(obj.hasOwnProperty(key)&&typeof obj[key]==="object")if(overrideObject(obj[key],propertyName,overrideValue))overriden=true;return overriden};var smartJSONParseOverride=function(propertyName,overrideValue,reStack){var realParse=JSON.parse;JSON.parse=function(text,reviver){var obj=realParse(text,reviver);if(!obj)return obj;var stackTrace=(new Error).stack;if(reStack.test(stackTrace))if(overrideObject(obj,propertyName,overrideValue));return obj}};smartJSONParseOverride("adPlacements",[],/.*/);smartJSONParseOverride("playerAds",[],/.*/)})(); +! This one might be needed when the page is loaded for the first time +youtube-nocookie.com,youtube.com#%#//scriptlet('set-constant', 'ytInitialPlayerResponse.adPlacements', 'undefined') +youtube-nocookie.com,youtube.com#%#//scriptlet('set-constant', 'playerResponse.adPlacements', 'undefined') ! This one may be unnecessary: ||youtube.com/get_video_info?*=adunit&$important ! https://github.com/AdguardTeam/AdguardFilters/issues/51453 !+ NOT_OPTIMIZED ||youtube.com/get_video_info?$~third-party,badfilter +! +! END: Youtube whitescreen fix +! ! Fixing embedded video player ! https://github.com/easylist/easylist/issues/5112 ! https://github.com/easylist/easylist/commit/3ed65e66e22963dc08a659dce6baa344ff158664 diff --git a/ExperimentalFilter/sections/English/common_js.txt b/ExperimentalFilter/sections/English/common_js.txt index 8ff5eec0087..5e58cb25998 100644 --- a/ExperimentalFilter/sections/English/common_js.txt +++ b/ExperimentalFilter/sections/English/common_js.txt @@ -9,19 +9,14 @@ ! YouTube ads (for old and new ads) ! youtube.com - white screen with skip button -! This one works okay. -! smart JSON override: https://gist.github.com/ameshkov/0c5148f243ffe9d8e40fd9ee11f142f4 -! smartJSONParseOverride('adPlacements', [], /base.js:[0-9]+/); -! smartJSONParseOverride('playerAds', [], /base.js:[0-9]+/); -! youtube.com#%#(function(){var overrideObject=function(obj,propertyName,overrideValue){var overriden=false;for(var key in obj){if(obj.hasOwnProperty(key)&&key===propertyName){obj[key]=overrideValue;overriden=true}if(obj.hasOwnProperty(key)&&typeof obj[key]==="object")if(overrideObject(obj[key]))overriden=true}return overriden};var smartJSONParseOverride=function(propertyName,overrideValue,reStack){var realParse=JSON.parse;JSON.parse=function(text,reviver){var obj=realParse(text,reviver);if(!obj)return obj;var stackTrace=(new Error).stack;if(reStack.test(stackTrace))if(overrideObject(obj,propertyName,overrideValue));return obj}};smartJSONParseOverride("adPlacements",[],/base.js/);smartJSONParseOverride("playerAds",[],/base.js/)})(); - ! I am not sure why we need this, commented out ! !#if (!adguard_app_ios && !adguard_ext_android_cb) ! @@||youtube.com/get_video_info ! !#endif ! YT fix using json-prune, prune only 1 level -youtube.com#%#//scriptlet("json-prune", "adPlacements playerAds") +! Commented out - not needed anymore +! youtube.com#%#//scriptlet("json-prune", "adPlacements playerAds") ! These two rules seem to be working okay. ! Commented out for now in order to test the smart override function