Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Opera на движке Presto (часть 26)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97

Открыть новую тему     Написать ответ в эту тему

gyra

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предыдущие части | часть 25  «Oпepа Presto || другие версии, выше v12 (Blink) - здecь»Уcтaнoвка:
 - На переносной USB-накопитель [Stand-alone installation USB] РЕКОМЕНДУЕМ! ... Пример
 - Для всех пользователей [All users on this computer] ...
 - Для текущего пользователя [Current user] ...

Настройка:
  • Полное описание настроек (opera:config) | Советы | Назначения файлов
  • Обход сообщений сайтов "Ваш браузер устарел" (маскировка под другие браузеры)
  • Если на странице сайта вместо букв - "квадратики/иероглифы"
  • Известные проблемы и их решения | Проблемы версий 12.15-16-17
    Другие темы по Опере Presto:
  • Плагины/утилиты/расширения/кнопки/панели
  • Моды меню, русификация
  • Скины/Темы
  • Сборки | Opera AC
  • forum.timsky.ru — патчи, сборка и развитие утекших исходников Opera 12.15 [открытый форум]
  • MyOpera.net — информационный портал | Форум
  • OperaFan.net — информационный портал | Форум (остался только фрагментарный веб-архив)
  • Еще ресурсы | Голосования | Обсуждение содержимого этой шапки.

  • Всего записей: 7111 | Зарегистр. 18-02-2006 | Отправлено: 00:39 05-11-2017 | Исправлено: freeman440, 11:12 02-07-2018
    raddyst

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    WatsonRus
    Цитата:
    Не потому ли, что Гугл на пару с M$ сделали все, чтобы загнобить XP путем гнобления сертификатов и алгоритмов, и Престо 12.18 теперь едва ли не единственный браузер, нормально работающий с сертификатами на XP?  

    То что престо в основном пользуются на хр, ещё не говорит о том - что у оперы там заметная доля .

    Всего записей: 6672 | Зарегистр. 08-03-2010 | Отправлено: 17:31 06-11-2017
    gyra

    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    WatsonRus
    raddyst
    Не превращайте тему в флуд.

    Всего записей: 7111 | Зарегистр. 18-02-2006 | Отправлено: 18:08 06-11-2017
    Ilya_SpongeBob

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Пересел с Опера 9.29 на 12.18 т.к. https перестал работать на многис сайтах из-за быдло-вебдевелоперов. Как в 12.18 отключить автоподгонку картинок под окно? Т.е. когда я открываю в адресной строке прямую ссылку на картинку, она открывается ужатой под окно.

    Всего записей: 457 | Зарегистр. 16-02-2011 | Отправлено: 19:05 06-11-2017
    YaZritelVANOMASA

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Есть ли возможность заставить работать web skype в опере?

    Всего записей: 58 | Зарегистр. 23-08-2017 | Отправлено: 19:16 06-11-2017
    VladDr

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    adasiko, я нe нaшёл cвязи мeждy "oткpoвeниeм" и NT5.x.
     
    raddyst
    Цитата:
    команды по правке утёкших исходников оперы,

    Бoюcь чтo нeт тaкoй команды. A ecли и ecть, тo пpaвят oни явнo для ceбя.

    Всего записей: 1534 | Зарегистр. 05-06-2010 | Отправлено: 19:25 06-11-2017
    raddyst

    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    VladDr
    Цитата:
    Бoюcь чтo нeт тaкoй команды. A ecли и ecть, тo пpaвят oни явнo для ceбя.

    Знаю, но как раз почти год прошёл с момента, когда в пред. теме "простыни" писались - что как теперь с исходниками заживём...

    Всего записей: 6672 | Зарегистр. 08-03-2010 | Отправлено: 19:38 06-11-2017
    VladDr

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Пересел с Опера 9.29 на 12.18 т.к. https перестал работать на многис сайтах из-за быдло-вебдевелоперов.

    Это не так: шифpoвaниe нa элл. кpивыx, кoтopoe нe пoддepживaют v. дo 12.18, peaльнo тpeбyeт мeньшe pecypcoв и oт eгo иcпoльзoвaния выигpывaют кaк влaдeльцы cepвepoв, тaк и пoльзoвaтeли. Eщё дo выxoдa yпoмянyтoй 9-ки, в лиce этo yжe былo peaлизoвaнo и пoчeмy ~10 лeт нaзaд oпepцы пocчитaли чтo oнo нe нaдo, мнe нe пoнятнo..

    Всего записей: 1534 | Зарегистр. 05-06-2010 | Отправлено: 19:42 06-11-2017
    Alex_Qwerty

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ilya_SpongeBob

    Код:
    // ==UserScript==
    // @include *
    // ==/UserScript==
     
    if(document.contentType.indexOf('image/')==0 && document.contentType.indexOf('svg')==-1) {
        window.donotrun=true;
     
        window.addEventListener('load', function(){
            if (!document.title) document.title = window.location.pathname.match(/([^\/]*)\/*$/)[1];
            var img = document.querySelector('img');
            if (img.naturalWidth && img.naturalHeight) document.title += ' (' + img.naturalWidth + '\xd7' + img.naturalHeight + ')';
        },false);
    }
     

    Всего записей: 1614 | Зарегистр. 09-09-2006 | Отправлено: 19:52 06-11-2017
    billibons

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Alex_Qwerty
    А нельзя ли сделать так, чтобы не отключать функцию зума, но по умолчанию картинка была бы не уменьшенной, а увеличенной?

    Всего записей: 1094 | Зарегистр. 15-12-2005 | Отправлено: 20:48 06-11-2017
    Ilya_SpongeBob

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Alex_Qwerty , т.е. встроенной настройки нет...
     
    VladDr
    Цитата:
    Это не так: шифpoвaниe нa элл. кpивыx, кoтopoe нe пoддepживaют v. дo 12.18, peaльнo тpeбyeт мeньшe pecypcoв и oт eгo иcпoльзoвaния выигpывaют кaк влaдeльцы cepвepoв
    Так , а что мешало кроме эллиптических кривых включить на серверах шифронаборы , которые поддерживает Опера 9.27? И если у браузера есть шифронабор с ECDHE, сервер выбирает его, если нет -- сервер выбирает то , что дают. Так нет -- вебдевелопер хочет , чтоб я под него подстаивался.

    Всего записей: 457 | Зарегистр. 16-02-2011 | Отправлено: 20:55 06-11-2017 | Исправлено: Ilya_SpongeBob, 21:04 06-11-2017
    VladDr

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ilya_SpongeBob
    Цитата:
    а что мешало кроме эллиптических кривых включить на серверах шифронаборы , которые поддерживает Опера 9.27?

    Bидимo дeньги: бoльшинcтвo c тoлькo ECDSA c бecплaтным https oт CloudFlare.

    Всего записей: 1534 | Зарегистр. 05-06-2010 | Отправлено: 21:24 06-11-2017
    MERCURY127



    Gold Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    а что мешало
    так уязвимости же... формально это все - забота о ползателе, чтоб его банковскую транзакцию не смогли перехватить злобные марсиане.  
    на практике же, это целенаправленный перевод интернета под неявный контроль со стороны центров выдачи правильных сертификатов.
    вопрос еще актуален?

    Всего записей: 8374 | Зарегистр. 03-08-2008 | Отправлено: 21:29 06-11-2017 | Исправлено: MERCURY127, 21:30 06-11-2017
    dansn

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Youtube flash плеер с патчем кода дешифровки сигнатур - Файлы . Youtube flash player_Decipher patched_v1.zip - код дешифровки обновлен, для любых способов обхода crossdomain.xml. FlashProxy5.zip - код вынесен из плеера, можно задать в настройках. Код дешифровки отсюда . Тестировалось на winxp c flash18.

    Всего записей: 57 | Зарегистр. 06-02-2008 | Отправлено: 01:10 07-11-2017
    Rwd

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Fartman

    Цитата:
    А ещё не работает это видео: https://www.youtube.com/watch?v=8f2ZeHaAHvY  Использую FlashProxy4.zip

    С FlashProxy5 работает.

    Всего записей: 444 | Зарегистр. 11-11-2016 | Отправлено: 02:13 07-11-2017
    Alex_Qwerty

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Код:
     
    // ==UserScript==
    // @include *.youtube.com/*
    // @include *.youtube-nocookie.com/*
    // @include *.youtubeeducation.com/*
    // ==/UserScript==
    (function(opera){
     
        var ScriptName = 'youtube_fuck_html5.js';
        var Version = 13;
     
        var conf = {
              relatedVideos : false        // click title if not works
            , blockPlayerBase : true
            , videoQuality : 'auto'        // highres hd1440 hd1080 hd720 large medium small tiny auto
            , autoplay : 0                // 0, 1
            , autoplayYT : 1            // not in background; not in iframe
            , del43 : true                // remove format 43 (webm 640x360); can help switching to 720
            , noSubtitles: true            // they don't works
            , swf : 'https://s.ytimg.com/yts/swfbin/player-vfljf_kbO/watch_as3.swf'    // dead
            , delCookies: false
            , addCookies: ''
        }
     
    /*
    Need something against crossdomain.xml and watch_as3.swf
     
    Filters for Proxomitron:
     
    [Patterns]
    Name = "youtube dash manifest fix"
    Active = TRUE
    URL = "manifest.googlevideo.com(:443|)/api/manifest/dash/"
    Limit = 256
    Match = "(<SegmentList>)\1(<SegmentURL media="\2")\3"
    Replace = "\1<Initialization sourceURL="\2"/>\3"
     
     
     
    [HTTP headers]
    In = FALSE
    Out = TRUE
    Key = "URL: youtube crossdomain.xml"
    URL = "([^/]++.|)(youtube(-nocookie|education|).com|ytimg.com|googlevideo.com)(:443|)/crossdomain.xml$RDIR(http://local.ptron/crossdomain.xml)"
     
    In = FALSE
    Out = TRUE
    Key = "URL: youtube watch_as3.swf"
    URL = "s.ytimg.com(:443|)/yts/swfbin/player-*watch_as3.swf$RDIR(http://local.ptron/watch_as3.swf)"
     
    In = FALSE
    Out = TRUE
    Key = "Accept-encoding: youtube no gzip, enable filtering"
    URL = "manifest.googlevideo.com(:443|)/$FILTER(True)"
     
     
     
    crossdomain.xml (put in Proxomitron\html\):
     
    <?xml version="1.0"?>
    <cross-domain-policy>
      <allow-access-from domain="*" />
    </cross-domain-policy>
     
    */
     
        var sts;
     
        document.createElement("video").constructor.prototype.canPlayType = function(type){return ""};    // disable HTML5
     
        var showConf = true;
        function log(str){
            opera.postError(ScriptName +' v'+Version+(str?': '+str:'')+(showConf?'\nconf='+JSON.stringify(conf):''));
            showConf = false;
        }
     
        if (conf.delCookies) {
            var C, d, s, p, i, c, k = document.cookie;
            if (!k) { return}
            C = k.split('; ');
            for (d = '.' + location.host; d; d = ('' + d).substr(1).match(/\..*$/)) for (s = 0; s<2; ++s) for (p = '/' + location.pathname; p; p = p.substring(0, p.lastIndexOf('/'))) for (i in C) if ((c = C[i])) { document.cookie = c + '; domain=' + d.slice(s) + '; path=' + p.slice(1) + '/' + '; expires=' + new Date((new Date).getTime() - 1e11).toGMTString()    }
            for (d = '.' + location.host; d; d = ('' + d).substr(1).match(/\..*$/)) for (s = 0; s<2; ++s) for (p = '/' + location.pathname; p; p = p.substring(0, p.lastIndexOf('/'))) for (i in C) if ((c = C[i])) {    document.cookie = c + '; domain=' + d.slice(s) + '; path=' + p.slice(1) + '/' + '; expires=' + new Date((new Date).getTime() - 1e11).toGMTString()    }
        }
     
        if (conf.addCookies) {
            var C = conf.delCookies.split(';');
            var domain = (''+location.hostname).replace(/^www(\.[^.]+\.[^.]+)/,'$1');
            for (var i=0,c; c=C[i];i++){
                var tmp = c.match(/^([^=]+)=(.*)$/);
                if (tmp) {
                    var cname = tmp[1].trim(), cvalue = tmp[2].trim();
                    this.delCookie(cname);
                    this.delCookie(cname);
                    this.setCookie(cname, cvalue, 'Tue, 15-Jan-2030 03:14:07 GMT', '/');
                }
            }
        }
     
        //opera.postError(ScriptName);
        opera.addEventListener("BeforeScript",function(e){
            if (e.element.src.match(/\/yts\/jsbin\/player-.*?\/base.js/)) {
                sts = e.element.text.match(/[{,]sts:(\d+)[},]/);
                sts=sts&&sts[1];
                if (sts) {
                    log('player: '+e.element.src+'\nsts='+sts+'\nUA='+navigator.userAgent);
                    if (conf.blockPlayerBase) {
                        if (window.canBlockPlayerBase) {
                            var decf = e.element.text.match(/=function\(a\){(a=a.split\(""\)[^}]*?;return a.join\(""\))};/);
                            decf = decf && decf[1];
                            var deco = decf && decf.match(/([\w$_]+)\.[\w$_]+\(a,\d+\);/);
                            deco = deco && e.element.text.match(new RegExp('var '+deco[1]+'={[\\w$_]+:function\\(a[\\s\\S]*?};'))
                            deco = deco && deco[0];
                            if (decf && deco) {
                                decodeSignature = new Function('a', deco+decf);
                                e.preventDefault();
                                log('blocked player base.js: '+e.element.src);
                            } else {
                                log("error: can't get decoder from player base.js")
                            }
                        } else {
                            log('blockPlayerBase requires blockYoutubeScripts in youtube_fix.js');
                        }
                    } else {
                        e.element.text = e.element.text.replace('=function(a){a=a.split("")','=decodeSignature=function(a){a=a.split("")');
                    }
                }
            }
        },false);
     
        function xhr(url, method, post, xml, headers){
            var x = new XMLHttpRequest();
            x.open(method || 'GET', url, false);
            if (headers) for (var i=0; i<headers.length; i++) x.setRequestHeader(headers[i][0], headers[i][1]);
            x.send(post);
            return xml?x.responseXML:x.responseText;
        }
     
        function splitKV(str) {
            var o = {};
            var tmp;
            var re = /([\da-z_]+)=([^&]*)/gi;
            while ( (tmp = re.exec(str))!==null ) { o[tmp[1]] = decodeURIComponent(tmp[2].replace(/\+/g,' '));    }
            return o;
        }
     
        function concatKV(obj){
            var tmp = [];
            for (var n in obj) tmp.push(n+'='+encodeURIComponent(obj[n]).replace(/,/g,'%2C') );
            return tmp.join('&');
        }
     
        var onceFix = true;
        function fix(str){
            var tmp = str.split(',');
            for (var i=tmp.length-1; i>=0; i--) {
                var obj = splitKV(tmp[i]);
                if (conf.del43 && obj.itag==43) {
                    tmp.splice(i,1);    // del
                    log('removed format 43')
                } else if (obj.s) {
                    if (!window.decodeSignature) {
                        if (onceFix) onceFix = log('error: no decodeSignature()')
                        return str;
                    } else {
                        obj.url += '&signature='+decodeSignature(obj.s);
                        delete obj.s;
                        tmp[i] = concatKV(obj);
                    }
                }
            }
            return tmp.join(',');
        }
     
        function del(obj,arr){ for (var d in arr) delete obj[arr[d]]; }
        function set(obj,arr){ for (var d in arr) obj[d]=arr[d]; }
     
     
        if (location.pathname.indexOf('/embed/')==0 || location.pathname=='/watch' && window==window.top) document.addEventListener('DOMContentLoaded',function(){
            var errMsg = document.querySelector('#unavailable-message');
            var div;
            var selectors = ['div.html5-video-player', 'div#player-api', 'div#player'];
            for (var i=0,s; s=selectors[i]; i++) if (div = document.querySelector(s)) break;
            if (!div) {
                log('player div not found');
            } else {
                log('found div:'+(div.id?' id="'+div.id+'"':'') + (div.className?' class="'+div.className+'"':''));
                if (!sts) log('warning: sts from /player-./base.js not found! Check content blocker.');
                div.classList.remove('off-screen-target');
                div.innerHTML = '<br><br>'+ScriptName;
                var u = document.querySelector('div#player-unavailable');
                if (u) u.parentNode.removeChild(u);
                var id = (''+location).match(/\/embed\/([\da-z_-]{11})/i) || (''+location).match(/[&?]v=([\da-z_-]{11})/i);
                id = id&&id[1];
                if (!id) {
                    div.innerHTML += ' - no video id';
                    return log('no video id');
                }
                var bg = 'https://i.ytimg.com/vi/'+id+'/hqdefault.jpg';
                var info, infoLength;
                function gvi(data) {
                    var url = '/get_video_info?html5=1&asv=3&ps=default'+(sts?'&sts='+sts:'')+'&video_id='+id+(data||'');
                    info = xhr(url);
                    if (info.indexOf('status=')==-1) info = xhr(url);    // second try
                    infoLength = info.length;
                    info = splitKV(info);
                }
                gvi();
                if (info && info.errorcode=='150') gvi('&eurl=http://www.google.com/');
                if (info && info.errorcode=='150') {
                    var err = info.reason || errMsg && errMsg.innerHTML || 'ytplayer.config parsing error';
                    var page = location.pathname=='/watch' ? document.body.innerHTML : xhr('/watch?v='+id);
                    info = page.match(/ytplayer\.config = ({.*?});/);
                    if (info) info = JSON.parse(info[1]);
                    info = info && info.args;
                    if (!info) {
                        div.innerHTML = '<br><br>' + err;
                        return log(err);
                    }
                    info.status = info.status || info.video_id && 'ok' || 'ytplayer.config parsing error 2' ;
     
                }
    //alert(JSON.stringify(info,null,'\t'));
                if (info.status!='ok') {
                    div.innerHTML = '<br><br>'+info.reason;
                    return log('reason: '+info.reason);
                }
                log(JSON.stringify({cbr:info.cbr, cbrver:info.cbrver, cbrand:info.cbrand, infoLength:infoLength}));
                if (!conf.relatedVideos) delete info.rvs;
                del (info, ['ppv_remarketing_url','remarketing_url', 'allowed_ads', 'survey_smartpixel_url']);
                del(info, ['player_response']);    // for some videos
                if (conf.noSubtitles) {
                    del(info, ['ttsurl','caption_tracks','caption_audio_tracks', 'cc_asr', 'cc3_module', 'caption_translation_languages', 'cc_font']);
                    info.has_cc = 'False';
                } else {
                    var tmp = JSON.parse(info.player_response||'{}');
    //alert(JSON.stringify(tmp,null,'\t'));
                    if (tmp.captions) {
                        tmp = tmp.captions.playerCaptionsTracklistRenderer.captionTracks
                    }
     
                }
                if (conf.del43 && info.fmt_list) info.fmt_list = info.fmt_list.replace('43/640x360,','');
                if (conf.videoQuality) info.vq = conf.videoQuality;
                if (conf.autoplay!==undefined) info.autoplay=conf.autoplay;
                if (conf.autoplayYT!==undefined && !document.hidden && window==window.top) info.autoplay=conf.autoplayYT;
                if (info.url_encoded_fmt_stream_map) info.url_encoded_fmt_stream_map = fix(info.url_encoded_fmt_stream_map);
                if (info.adaptive_fmts) info.adaptive_fmts = fix(info.adaptive_fmts);
                if (info.dashmpd) info.dashmpd = info.dashmpd.replace(/\/s\/([\dA-F.]+)/,function(a,s){return '/signature/'+decodeSignature(s)});
                set(info, {no_stats:1, allow_embed:1, no_get_video_log:1, rmkt:0, rtl:0, ad3_module:0, ad_preroll:0, enable_cardio:0
                    , enable_cardio_before_playback:0, advideo:0, skl:1});
                info = concatKV(info);
                div.innerHTML = '<embed src="'+conf.swf+'" flashvars="'+info+'" style="background: url('+bg+') center no-repeat" type="application/x-shockwave-flash" width=100% height=100% allowfullscreen="true" allowscriptaccess="always" bgcolor="#000000">'
            } // !div
        },false);
     
    })(opera)
     

     
     
     

    Код:
     
    // ==UserScript==
    // @include *//youtube.com/*
    // @include *.youtube.com/*
    // @include *//youtube-nocookie.com/*
    // @include *.youtube-nocookie.com/*
    // @include *//youtubeeducation.com/*
    // @include *.youtubeeducation.com/*
     
    // @exclude http://tparser.org/*
    // ==/UserScript==
     
    if ( document.contentType=='text/html' || (''+location).match(/[/.]youtube(-nocookie|education|).com\/v\//) ) (function(opera){
     
        var ScriptName = 'youtube_fix.js';
        var Version = 10;
     
        var conf = {
              fixObjects : true        // object -> iframe
            , fixInsertedObjects : {
                  enabled: true        // may break sites; use whitelist or // @exclude *
                , blacklist : ['translate.yandex.ru']     // [] - works anywhere; ['tparser.org']
                , whitelist : []     // [] - works anywhere; ['3dnews.ru', 'livejournal.com']
            }
            , blockYoutubeScripts : true    // except player base.js
            , loadComments : true            // don't expect too much; with enabed blockYoutubeScripts
            , addLinksInEmbeds : false
            , loadThumbnails : true
        }
     
        var showConf = true;
        function log(str){
            opera.postError(ScriptName +' v'+Version+(str?': '+str:'')+(showConf?'\nconf='+JSON.stringify(conf):''));
            showConf = false;
        }
     
        function findHost(hosts, host){
            var flag = -1;
            while (flag==-1 && host) {
                flag = hosts.indexOf(host);
                host = host.replace(/^[^.]*\.?/,'');
            }
            return flag;
        }
        var youtubeHosts = ['youtube.com','youtube-nocookie.com','youtubeeducation.com'];
     
        function create(el, cn, ih){var tmp=document.createElement(el); if(cn)tmp.className=cn; tmp.innerHTML=ih||''; return tmp; }
     
        function xhr(url, method, post, xml, headers){
            var x = new XMLHttpRequest();
            x.open(method || 'GET', url, false);
            if (headers) for (var i=0; i<headers.length; i++) x.setRequestHeader(headers[i][0], headers[i][1]);
            x.send(post);
            return xml?x.responseXML:x.responseText;
        }
     
        var isYoutube = findHost(youtubeHosts, location.hostname)!=-1;
     
        var v = isYoutube && location.pathname.match(/^\/v\/([\da-z_-]{11})/i);
        if (v) {
            stop();
            log('redirecting to /embed/');
            location = '/embed/'+v[1];
        }
     
        if (conf.blockYoutubeScripts && isYoutube) {
            var once = true;
            window.canBlockPlayerBase = true;
            var needPlayerBase = true;
            var func = function(){};
            requestAnimationFrame = func;
            writeEmbed = func;
            writeLightweightEmbed = func;
            spf = {script:{path:func, declare:func}};
            ytcsi = {info: func, tick:func};
            yt = {config_:{}, pushConfigArray:func, setMsg:func}
     
            yt.setConfig = function(o,v){
                if (v) { yt.config_[o]=v } else {for (var k in o) yt.config_[k]=o[k]}
                if (needPlayerBase && o && o.PLAYER_CONFIG && o.PLAYER_CONFIG.assets && o.PLAYER_CONFIG.assets.js) {
                    var s = document.createElement('script');
                    s.src = o.PLAYER_CONFIG.assets.js;
                    document.body.appendChild(s);
                    log('inserted player base.js: '+s.src);
                    needPlayerBase = false;
                }
            }
     
            opera.addEventListener("BeforeExternalScript",function(e){
                if (e.element.src.match(/\/yts\/jsbin\/player-.*?\/base.js/)) {
                    needPlayerBase = false;
                } else {
                    e.preventDefault();
                    if (once) once = log('blocking youtube scripts...');
                }
            },false);
        }
     
        document.addEventListener('DOMContentLoaded',function(){
     
            var tmp = document.querySelectorAll('a[href*="youtube.com/edit?"]');
            for (var i=0,a; a=tmp[i]; i++) {
                var id = a.href.match(/[?&]video_id=([\da-z_-]{11})/i);
                if (id) a.href = 'https://www.youtube.com/watch?v='+id[1];
            }
     
            if (conf.fixObjects) {
     
                function fixObjects(embeds) {
                    for (var i=0,e,o; e=embeds[i]; i++){
                        o=e.parentNode.tagName.toLowerCase()=='object'? e.parentNode : e;
                        var vid = o.outerHTML.match(/youtube(?:education|-nocookie|)\.com\/v\/([\da-z_-]{11})/i);
                        if (vid=vid&&vid[1]) {
                            var iframe = document.createElement('iframe');
                            var width = o.width || o.style.width || '640px';
                            var height = o.height || o.style.height || '480px';
                            if (!/[a-zA-Z%]+$/.test(width)) width +='px';
                            if (!/[a-zA-Z%]+$/.test(height)) height +='px';
                            //iframe.style = "width: "+width+" !important ; height: "+height + ' !important';
                            iframe.style = "width: "+width+"; height: "+height;
                            if (o.className) iframe.className = o.className;
                            if (o.id) iframe.id = o.id;
                            iframe.src = 'https://www.youtube.com/embed/'+vid; // youtube-nocookie.com not always works
                            o.parentNode.insertBefore(iframe, o);
                            o.parentNode.removeChild(o);
                            log('replaced object in html: '+vid);
                        }
                    }
                }
                fixObjects(document.querySelectorAll('object'));
                fixObjects(document.querySelectorAll('embed'));
     
                var fixInsertedObjectsEnabled = (conf.fixInsertedObjects && conf.fixInsertedObjects.enabled) && !isYoutube
                    && (window != window.top ? document.body.innerHTML.length>0 : true) // scriptweeder iframe
                    && (!conf.fixInsertedObjects.whitelist || (!conf.fixInsertedObjects.whitelist.length || findHost(conf.fixInsertedObjects.whitelist, location.hostname)!=-1) )
                    && (!conf.fixInsertedObjects.blacklist || (!conf.fixInsertedObjects.blacklist.length || findHost(conf.fixInsertedObjects.blacklist, location.hostname)==-1) );
                if (fixInsertedObjectsEnabled) {
                    log('warning: fixInsertedObjects may break sites');
                    document.addEventListener('DOMNodeInserted', function(e){
                        if (e.target.innerHTML && /youtube(education|-nocookie|)\.com\/v\//.test(e.target.innerHTML)) {
                            log('DOMNodeInserted');
                            var tmp = e.target.outerHTML.replace(/<object[\s\S]*?youtube(?:education|-nocookie|)\.com\/v\/([\da-z_-]{11})[\s\S]*?<\/object>/ig, function(o,id){
                                var tmp = o.match(/^<object[\s\S]*?>/i)[0];
                                var width = tmp.match(/width\s*[:=]\s*(\d\w*)/);
                                width = width&&width[1] || '640px';
                                var height = tmp.match(/height\s*[:=]\s*(\d\w*)/);
                                height = height&&height[1] || '480px';
                                if (!/[a-zA-Z%]+$/.test(width)) width +='px';
                                if (!/[a-zA-Z%]+$/.test(height)) height +='px';
                                return '<iframe src="https://www.youtube.com/embed/'+id+'" style="width: '+width+' !important; height: '+height+' !important"></iframe>';
                            });
                            if (e.target.outerHTML!= tmp) e.target.outerHTML = tmp;
                        }
                    }, false);
                }
            }
     
            if (isYoutube && conf.loadThumbnails) {
                var pics = document.querySelectorAll('img[data-thumb]');
                for (var i=0; i<pics.length; i++) pics[i].src = pics[i].getAttribute('data-thumb');
            }
     
     
            if (conf.loadComments && conf.blockYoutubeScripts && isYoutube && location.pathname=='/watch' && window==window.top) {
                var tmp = document.querySelector('#watch-discussion');
                if (!tmp) {
                    log('no #watch-discussion');
                } else {
                    tmp.style.display='none';
                    var comments = create('div', 'crutch-comments-container');
                    comments.appendChild(create('div', 'crutch-comments-total', 'comments disabled ?'))
                    tmp.parentNode.insertBefore(comments, tmp);
                    var headers = [['Content-Type', 'application/x-www-form-urlencoded']];
                    var c = xhr('/comment_service_ajax?action_get_comments=1&pbj=1&ctoken='+window.yt.config_.COMMENTS_TOKEN, 'POST'
                        , 'session_token='+encodeURIComponent(window.yt.config_.XSRF_TOKEN), false, headers);
                    if (c.indexOf('{')!=-1) {
                        c = JSON.parse(c);
                        comments.innerHTML = c.content_html;
                        log('comments');
                    }
                }
            }
     
            if (conf.blockYoutubeScripts && isYoutube && location.pathname=='/watch' && window==window.top) {
                var s = document.createElement('style');
                s.appendChild(document.createTextNode('#watch-description + .yt-uix-expander-collapsed-body {display:none !important} .yt-uix-expander-collapsed #watch-description-text {max-height: 100% !important}'));
                document.body.appendChild(s);
            }
     
            var id = window.yt && yt.config_ && yt.config_.VIDEO_ID;
            if (conf.addLinksInEmbeds && !location.pathname.indexOf('/embed/') && id) {
                var pics = id && window.yt.config_.PLAYER_CONFIG.args || {};
                var img = pics.iurlmaxres || pics.iurlhq720 || pics.iurlsd || pics.iurl || 'http://i.ytimg.com/vi/'+id+'/hqdefault.jpg';
                var span = document.createElement('span');
                span.innerHTML = '&nbsp;<a href="http://www.youtube.com/watch?v='+id+'" target="_blank">link</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="'+img+'" target="_blank">img</a>';
                span.style='position:absolute; top:0; left:0; background:white';
                document.body.appendChild(span);
            }
     
            // load more videos
            if (conf.blockYoutubeScripts && isYoutube) {
                var more = document.querySelector('button[data-uix-load-more-href]');
                if (more) {
                    more.onclick = function(){
                        var next = this.getAttribute('data-uix-load-more-href');
                        var targetid = this.getAttribute('data-uix-load-more-target-id');
                        if (next) {
                            var tmp = xhr(next);
                            tmp = JSON.parse(tmp);
                            document.getElementById(targetid).insertAdjacentHTML('beforeend', tmp.content_html);
                            if (tmp.load_more_widget_html) {
                                next = tmp.load_more_widget_html.match(/data-uix-load-more-href="([^"]+)/);
                                if (next) this.setAttribute('data-uix-load-more-href', next[1]);
                            } else {
                                this.parentNode.removeChild(this);
                            }
                        }
                    }
                }
            }
     
     
        },false);
     
    })(opera)
     


    Всего записей: 1614 | Зарегистр. 09-09-2006 | Отправлено: 09:23 07-11-2017 | Исправлено: Alex_Qwerty, 15:57 18-09-2018
    freeman440

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Alex_Qwerty
    описание бы, что к чему и с чем
     
    Добавлено:
    Rwd
    Цитата:
    С FlashProxy5 работает.
    У меня не работает

    Всего записей: 2186 | Зарегистр. 17-09-2008 | Отправлено: 10:53 07-11-2017
    kianID



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    freeman440: (10:53 07-11-2017)
    Цитата:
    У меня не работает

    Аналогично. Не пашет именно этот видос.
     
     Rwd: (02:13 07-11-2017)
    Цитата:
    С FlashProxy5 работает.

    О, а сборочку куда-нибудь закиньте в которой всё работает, бум разбираться.

    Всего записей: 205 | Зарегистр. 04-01-2012 | Отправлено: 11:17 07-11-2017
    Rwd

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    freeman440
    kianID
    На тот момент работало. Была ещё мысль сделать скрин, но какой от него толк:  на картинке - работает, а так - нет?

    Всего записей: 444 | Зарегистр. 11-11-2016 | Отправлено: 11:56 07-11-2017
    kianID



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Rwd: (11:56 07-11-2017)
    То есть, сейчас уже всё, не работает и у Вас?

    Всего записей: 205 | Зарегистр. 04-01-2012 | Отправлено: 11:59 07-11-2017
    Rwd

    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    kianID
    Да. Сам каких-то изменений за это время, разумеется, не делал.
     
    Добавлено:
    Даже О не закрывал

    Всего записей: 444 | Зарегистр. 11-11-2016 | Отправлено: 12:02 07-11-2017
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97

    Компьютерный форум Ru.Board » Компьютеры » Программы » Opera на движке Presto (часть 26)

    Имя:
    Пароль:
    Сообщение

    Для вставки имени, кликните на нем.

    Опции сообщенияДобавить свою подпись
    Подписаться на получение ответов по e-mail
    Добавить тему в личные закладки
    Разрешить смайлики?
    Запретить коды


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.Board
    © Ru.Board 2000-2018

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru