diff --git a/EnglishFilter/sections/specific.txt b/EnglishFilter/sections/specific.txt index 87c3af009e9..ee5fef00ad7 100644 --- a/EnglishFilter/sections/specific.txt +++ b/EnglishFilter/sections/specific.txt @@ -174,22 +174,13 @@ youtube.com##ytd-search-pyv-renderer ! ! 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 is a temporary solution for firefox until the new extension release -!#if (adguard_ext_firefox) -||youtube.com/*/base.js$replace=/(playerResponse\.adPlacements|playerResponse\.playerAds)/_ad/ -||youtube.com/*/base.js$replace=/(playerAds|adPlacement[a-zA-Z]+)/_da/ -!#endif +! Keep multiple rules here to make it readable +youtube-nocookie.com,youtube.com#%#//scriptlet("json-prune", "[].playerResponse.adPlacements [].playerResponse.playerAds") +youtube-nocookie.com,youtube.com#%#//scriptlet("json-prune", "playerResponse.adPlacements playerResponse.playerAds") +youtube-nocookie.com,youtube.com#%#//scriptlet("json-prune", "adPlacements playerAds") ! This one may be unnecessary: ||youtube.com/get_video_info?*=adunit&$important ! https://github.com/AdguardTeam/AdguardFilters/issues/51453 diff --git a/ExperimentalFilter/sections/English/common_js.txt b/ExperimentalFilter/sections/English/common_js.txt index 5e58cb25998..c78b4d97999 100644 --- a/ExperimentalFilter/sections/English/common_js.txt +++ b/ExperimentalFilter/sections/English/common_js.txt @@ -14,11 +14,8 @@ ! @@||youtube.com/get_video_info ! !#endif -! YT fix using json-prune, prune only 1 level -! 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 -! ||youtube.com/*/base.js$replace=/(playerResponse\.adPlacements|playerResponse\.playerAds)/_ad/ -! ||youtube.com/*/base.js$replace=/(playerAds|adPlacement[a-zA-Z]+)/_da/ +! 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",[],/.*/)})(); \ No newline at end of file