forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Наш форум (http://forum.boolean.name/forumdisplay.php?f=24)
-   -   Youtube2Thumbnail userscript. Лаги задолбали. (http://forum.boolean.name/showthread.php?t=19507)

Randomize 03.11.2014 19:36

Youtube2Thumbnail userscript. Лаги задолбали.
 
Вложений: 4
На булке развелось тем с ютубчиком и они знатно кладут мне лису. Мне это дело порядком надоело и я даже сообщал об этой херне. Я так и не был услышан (азаза меняй браузер, ос, комп, прими ислам) так что запилил наколеночное расширение.

Чо делает:
Заменяет все айфреймы на кликабельные пикчи-ссылки и дописывает url ролика внизу.

Как ставить на лису:
1) Поставить greacemonkey
https://addons.mozilla.org/ru/firefo.../greasemonkey/

2) Создать скрипт
Вложение 21112Вложение 21113
Спастить туда это:
PHP код:

$(function () {
  $(
'.youtube-player').each(function () {
    var 
src = $(this).attr('src');
    var 
matches = /\/([\w\d\-_]+)$/.exec(src);
    
    if (
matches !== null && matches[1]){
      var 
code matches[1];
      var 
html '';
      
html += '<div style="text-align: center; background: rgba(0,0,0,0.1); padding: 5px; margin: 4px 2px; border-radius: 4px; display: inline-block">';
      
html += '<a title="play" style="text-decoration: none" target="_blank" href="http://www.youtube.com/watch?v=' code '">';
      
html += '<img src="http://img.youtube.com/vi/' code '/mqdefault.jpg" />';
      
html += '<br />'
      
html += 'http://www.youtube.com/watch?v=' code;
      
html += '</a>';
      
html += '</div>';
      $(
html).insertAfter(this);
      
console.log(matches);
    }

    $(
this).remove();
  }); 

Должно выйти так:
Вложение 21114

3) Готово
Вложение 21115

impersonalis 03.11.2014 19:41

Ответ: Youtube2Thumbnail userscript. Лаги задолбали.
 
Сложно интегрировать такое решение в форум?

Randomize 03.11.2014 19:42

Ответ: Youtube2Thumbnail userscript. Лаги задолбали.
 
Цитата:

Сообщение от impersonalis (Сообщение 288913)
Сложно интегрировать такое решение в форум?

КАК НЕХРЕН. СУМКА, ПРЯМ ИЗ АДМИНКИ
И даже нормально сделать можно. Без js преобработчика.

ABTOMAT 03.11.2014 22:24

Ответ: Youtube2Thumbnail userscript. Лаги задолбали.
 
Так, господа, спасибо за обеспокоенность, но при всём уважении, inline-javascript и css это жопашничество.
Сейчас сяду сделать как положано.

Nerd 03.11.2014 22:59

Ответ: Youtube2Thumbnail userscript. Лаги задолбали.
 
Немного допилил скрипт:


Код:

var ytp_width = 360, //размер плеера
    ytp_height = 223;

$(function () {
  $('.youtube-player').each(function () {
      var src = $(this).attr('src');
      var matches = /\/([\w\d\-_]+)$/.exec(src);
    if (matches !== null && matches[1]){
    var code = matches[1];
      var node = this;
      $.getJSON('http://gdata.youtube.com/feeds/api/videos/'+code+'?v=2&alt=jsonc',function(data,status,xhr){
            var dur = String_toHHMMSS(data.data.duration);
            var title = data.data.title+'  ('+dur+')';
            var link = 'http://www.youtube.com/watch?v='+code;
            var html = '<div> \
                        <div class="ytp"> \
                        <div class="ytp-title-bg"> \
                        <div class="ytp-title">'+title+'</div> \
                        </div> \
                        <img id="ytp-img-'+code+'" class="ytp-img" src="http://img.youtube.com/vi/'+code+'/mqdefault.jpg"></img> \
                        </div> \
                        <a href="'+link+'" class="ytp-link" target="_blank">'+link+'</a> \
                        </div>';
          $(html).insertAfter(node);
          $(node).remove();
                  $("#ytp-img-"+code).click(function(){
                    console.log('aye');
                    var flash = '<iframe title="YouTube video player" class="youtube-player" \
                      type="text/html" width="'+ytp_width+'" height="'+ytp_height+'" \
                      src="http://www.youtube.com/embed/'+code+'?autoplay=1"\
                      frameborder="0" allowFullScreen></iframe>';
                    var base = $(this).parent().parent();
                    $(flash).insertBefore(base);
                    base.remove();
                  });
      });
    }
  }); 
});

    function String_toHHMMSS(t){
        var sec_num = parseInt(t, 10);
        var hours  = Math.floor(sec_num / 3600);
        var minutes = Math.floor((sec_num - (hours * 3600)) / 60);
        var seconds = sec_num - (hours * 3600) - (minutes * 60);
        var time = ''
        if (hours  < 10) {hours  = "0"+hours;}
            if(hours!='00') time+=hours+':';
        if (minutes < 10) {minutes = "0"+minutes;}
            if(minutes!='00') time+=minutes+':';
        if (seconds < 10) {seconds = "0"+seconds;}
            time+=seconds;
        return time;
    }

$("head").append('<style type="text/css"> \
                .ytp{ border: 1px dashed #F7BD6A; width:  '+ytp_width+'px; height: '+ytp_height+'px; cursor: pointer; background: #000; } \
                .ytp-img{ width:  '+ytp_width+'px; height: '+(ytp_height-23)+'px; } \
                .ytp-title{ color: #FFFFFF; margin-left: 10px; font-size: 0.95em; text-shadow: 4px 4px 2px #000000; cursor: text; } \
                .ytp-title-bg{ background: #323232; opacity: 0.8; min-height: 20px; cursor: default; } \
                .ytp-link{ background: url(\'https://youtube.com/favicon.ico\') no-repeat scroll left center transparent; color: #F60; \
                font-size: 0.8em; padding-left: 20px; margin-left: 5px; margin-top: 1px; border-bottom: 1px dotted #F60;}</style>');
//mmmaximum zhopa4ni4estvo, uwahahahah


Блин, опоздал :-D

ABTOMAT 04.11.2014 00:10

Ответ: Youtube2Thumbnail userscript. Лаги задолбали.
 
Всё, встроено.

Arton 04.11.2014 01:38

Ответ: Youtube2Thumbnail userscript. Лаги задолбали.
 
Цитата:

Сообщение от ABTOMAT (Сообщение 288929)
Всё, встроено.

Спасибо, стало получше.
Эм.. я забыл выключить Случайниковый скрипт.
Спасибо, теперь почти идеально, по крайней мере Лиса не зависает на несколько секунд.

Nex 04.11.2014 08:04

Ответ: Youtube2Thumbnail userscript. Лаги задолбали.
 
А что за не допиленный чатик? Ему быть?

Mr_F_ 04.11.2014 12:24

Ответ: Youtube2Thumbnail userscript. Лаги задолбали.
 
Нужны названия видео на джипегах, иначе непонятно на что жмёшь, особенно в теме про музыку какой смысл на рандомные картинки жать?

Randomize 04.11.2014 23:32

Ответ: Youtube2Thumbnail userscript. Лаги задолбали.
 
Прошу.
1) Кликабельность картинки (Обернуть в <a> с title а-ля "смотреть на youtube")
2) Ссылку под картинкой можно убрать
3) Оверлей на картинке мол это ютуб

* пока писал стало ниактуально. АВТЕ, почёт тебе, хорошо работаешь.

ABTOMAT 05.11.2014 00:03

Ответ: Youtube2Thumbnail userscript. Лаги задолбали.
 
Цитата:

Сообщение от Mr_F_ (Сообщение 288946)
Нужны названия видео на джипегах, иначе непонятно на что жмёшь, особенно в теме про музыку какой смысл на рандомные картинки жать?

Вот тут кстати сильно ли это целесообразно?
1. По клику появляется обычный youtube-плеер со всем, что надо.
2. Можно получать нужные данные через AJAX и выводить их сразу. Но тогда получится мильён AJAX-запросов при загрузке темы с ютубом. То есть боролись за производительность — получили шило на мыло.

moka 05.11.2014 02:49

Ответ: Youtube2Thumbnail userscript. Лаги задолбали.
 
Цитата:

Сообщение от ABTOMAT (Сообщение 288971)
Вот тут кстати сильно ли это целесообразно?
1. По клику появляется обычный youtube-плеер со всем, что надо.
2. Можно получать нужные данные через AJAX и выводить их сразу. Но тогда получится мильён AJAX-запросов при загрузке темы с ютубом. То есть боролись за производительность — получили шило на мыло.

Мильён ajax'ов лучше чем мильен iframe'ов с еще мильеном файлов загруженных внутри.

KCEPOKC 16.11.2014 19:40

Ответ: Youtube2Thumbnail userscript. Лаги задолбали.
 
:super:
Форум жив!

Зашел на булку после недельного отъезда.
Понял для себя, как приятно видеть, как что-то улучшается без твоего ведома.

Nerd 18.10.2015 16:52

Ответ: Youtube2Thumbnail userscript. Лаги задолбали.
 
Ещё было бы неплохо ограничить размер изображений в цитатах.

Код:

var quote_img_preview_height = 250;

$(function () {
  $("img[src='images/chestnut/misc/citation.gif']").each(function(){
    $(this).parent().next().find("img").each(function(){
      if($(this).height()>quote_img_preview_height)
        $(this).css('cursor','pointer').click(function(){
          $(this).attr('height') ? $(this).removeAttr('height') : $(this).attr('height',quote_img_preview_height)
        }).trigger("click");
    });
  });
});

//для работы с тегом offtop внутри quote, однако, прийдётся лезть в поведение onclick у offtop, а оно на форуме реализованно крайне костыльно



Часовой пояс GMT +4, время: 10:13.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot