Bladru
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Код: // ==UserScript== // @include https://*.youtube.com/* // @include https://*.youtube-nocookie.com/* // @include https://*.youtubeeducation.com/* // @include https://*.googleapis.com/* // ==/UserScript== /* Opera only. Save as "YouTube_force_flash.js" (without .user). */ (function(){ function patch_scripts(UserJSEvent){ var script = UserJSEvent.element; if (!(script.src.match(/\/www-[^\/]*\/base\.js$/) || script.src.match(/\/www-[^\/]*\/www-embed-player\.js$/) || script.src.match(/\/www-[^\/]*\/www-pageframe\.js$/))) //not sure where is it used return; // console.debug(script.src); script.text = script.text.replace( '(a,b){if(!a.isDisposed()){if(!b){var c;if(!(c=!a.', '(a,b){if(!a.isDisposed()){if(!(b="flash")){var c;if(!(c=!a.' ); } window.opera.addEventListener('BeforeScript', patch_scripts); })(); | Сохранять как "YouTube_force_flash.js" (без .user). Паттерн можно было бы прописать регулярным выражением и сделать подлиннее, но уж очень не хотелось мне эскейпить всё это счастье. Одна из целевых функций: Код: Jh=function(a,b){if(!a.isDisposed()){if(!b){var c;if(!(c=!a.C.html5&&Hh(a))){if(!g.ja(a.C.disable.html5)){var d;c=!0;void 0!=a.C.args.deviceHasDisplay&&(c=a.C.args.deviceHasDisplay);if(2.2==Lh)d=!0;else{a:{var e=c;c=g.r("yt.player.utils.videoElement_");c||(c=g.xd("VIDEO"),g.p("yt.player.utils.videoElement_",c,void 0));try{if(c.canPlayType)for(var e=e?Qba:Rba,h=0;h<e.length;h++)if(c.canPlayType(e[h])){d=null;break a}d="fmt.noneavailable"}catch(k){d="html5.missingapi"}}d=!d}d&&(d=Mh(a)||a.C.assets.js); a.C.disable.html5=!d;d||(a.C.args.html5_unavailable="1")}c=!!a.C.disable.html5}b=c?Hh(a)?"flash":"unsupported":"html5"}("flash"==b?a.FR:a.GR).call(a)}}; |
|