SHOW:
|
|
- or go back to the newest paste.
| 1 | // ==UserScript== | |
| 2 | // @name 1chan-youtube-player | |
| 3 | // @namespace 1chan | |
| 4 | // @require http://code.jquery.com/jquery-2.1.1.min.js | |
| 5 | // @match http://1chan.ru/* | |
| 6 | // @match http://*.1chan.ru/* | |
| 7 | // @include http://1chan.ru/* | |
| 8 | // @include https://1chan.ru/* | |
| 9 | // @include http://*.1chan.ru/* | |
| 10 | // @include https://*.1chan.ru/* | |
| 11 | // @match http://1chan.inach.org/* | |
| 12 | // @include http://1chan.inach.org/* | |
| 13 | // @include https://1chan.inach.org/* | |
| 14 | // @version 1.1 | |
| 15 | // ==/UserScript== | |
| 16 | ||
| 17 | // Для ссылок в комментариях | |
| 18 | jQuery('p > a[href*=youtu]').each(function(){
| |
| 19 | var thisPostID = jQuery(this).parent('p')
| |
| 20 | .parent('div')
| |
| 21 | .parent('div')
| |
| 22 | .attr('id')
| |
| 23 | - | .match(/(\d+)/); // ID данного поста |
| 23 | + | |
| 24 | var videoID = jQuery(this).attr('href')
| |
| 25 | - | .match(/(v=)?(%3D)?(\/)?(%2F)?([_\-\d\w+]{11})/); // ID видео
|
| 25 | + | |
| 26 | - | var videoSRC = 'https://www.youtube.com/v/' + videoID[5]; // ссылка на видео |
| 26 | + | |
| 27 | - | var imageSRCbig = 'https://i.ytimg.com/vi/' + videoID[5] + '/0.jpg'; // ссылка на большую превьюшку |
| 27 | + | |
| 28 | - | var imageSRCmini = 'https://i.ytimg.com/vi/' + videoID[5] + '/default.jpg'; // ссылка на маленькую превьюшку |
| 28 | + | |
| 29 | - | var videoBlockID = 'video' + thisPostID[0] + videoID[5]; // ID для блока с видео |
| 29 | + | |
| 30 | - | var imageBlockID = 'image' + thisPostID[0] + videoID[5]; // ID для блока с превьюшкой |
| 30 | + | |
| 31 | ||
| 32 | var videoHTML = jQuery('<embed/>')
| |
| 33 | .attr({ 'type' : 'application/x-shockwave-flash',
| |
| 34 | 'width' : '480', | |
| 35 | 'height' : '360', | |
| 36 | 'src' : videoSRC, | |
| 37 | - | 'wmode' : 'transparent' }); // видео <embed/> |
| 37 | + | |
| 38 | ||
| 39 | var closeButton = jQuery('<button/>')
| |
| 40 | .click(function () {
| |
| 41 | jQuery('#'+videoBlockID).slideUp(1000);
| |
| 42 | jQuery('#'+imageBlockID).slideDown(1000);
| |
| 43 | }) | |
| 44 | - | .text('X'); // клавиша закрытия
|
| 44 | + | .text('X');
|
| 45 | ||
| 46 | var imageHTMLbig = jQuery('<img/>')
| |
| 47 | .attr({ 'src' : imageSRCbig })
| |
| 48 | .css({ 'width' : '480',
| |
| 49 | - | 'height' : '360' }); // большая превьюшка |
| 49 | + | |
| 50 | ||
| 51 | var imageHTMLmini = jQuery('<img/>')
| |
| 52 | - | .attr({ 'src' : imageSRCmini }); // маленькая превьюшка
|
| 52 | + | |
| 53 | ||
| 54 | jQuery('<div/>')
| |
| 55 | .attr({ 'id' : videoBlockID })
| |
| 56 | .css({ 'display': 'none' })
| |
| 57 | .append(videoHTML) | |
| 58 | .append(closeButton) | |
| 59 | - | .insertAfter(this); // скрытый блок с видео |
| 59 | + | |
| 60 | ||
| 61 | jQuery('<div/>')
| |
| 62 | .attr({ 'id' : imageBlockID })
| |
| 63 | - | .append(imageHTMLmini) // можно заменить на imageHTMLbig |
| 63 | + | |
| 64 | .click(function () {
| |
| 65 | jQuery(this).slideUp(1000); | |
| 66 | jQuery('#'+videoBlockID).slideDown(1000);
| |
| 67 | }) | |
| 68 | - | .insertAfter(this); // видимый блок с превьюшкой |
| 68 | + | |
| 69 | ||
| 70 | }); | |
| 71 | ||
| 72 | // Для ссылок в заголовке | |
| 73 | jQuery('div.b-blog-entry_b-header > a[href*=youtu]').each(function(){
| |
| 74 | var thisPostID = jQuery(this).parent('div')
| |
| 75 | .parent('div')
| |
| 76 | .attr('id')
| |
| 77 | .match(/(\d+)/); | |
| 78 | var videoID = jQuery(this).attr('href')
| |
| 79 | .match(/(v=)?(%3D)?(\/)?(%2F)?([_\-\d\w+]{11})/);
| |
| 80 | var videoSRC = 'https://www.youtube.com/v/' + videoID[5]; | |
| 81 | var imageSRCbig = 'https://i.ytimg.com/vi/' + videoID[5] + '/0.jpg'; | |
| 82 | var imageSRCmini = 'https://i.ytimg.com/vi/' + videoID[5] + '/default.jpg'; | |
| 83 | var videoBlockID = 'video' + thisPostID[0] + videoID[5]; | |
| 84 | var imageBlockID = 'image' + thisPostID[0] + videoID[5]; | |
| 85 | var videoHTML = jQuery('<embed/>')
| |
| 86 | .attr({ 'type' : 'application/x-shockwave-flash',
| |
| 87 | 'width' : '480', | |
| 88 | 'height' : '360', | |
| 89 | 'src' : videoSRC, | |
| 90 | 'wmode' : 'transparent' }); | |
| 91 | var imageHTMLbig = jQuery('<img/>')
| |
| 92 | .attr({ 'src' : imageSRCbig })
| |
| 93 | .css({ 'width' : '480',
| |
| 94 | 'height' : '360' }); | |
| 95 | var imageHTMLmini = jQuery('<img/>')
| |
| 96 | .attr({ 'src' : imageSRCmini });
| |
| 97 | jQuery('<div/>')
| |
| 98 | .attr({ 'id' : videoBlockID })
| |
| 99 | .css({ 'display': 'none' })
| |
| 100 | .append(videoHTML) | |
| 101 | .insertAfter(this); | |
| 102 | jQuery('<div/>')
| |
| 103 | .attr({ 'id' : imageBlockID })
| |
| 104 | .append(imageHTMLmini) | |
| 105 | .click(function () {
| |
| 106 | jQuery(this).slideUp(1000); | |
| 107 | jQuery('#'+videoBlockID).slideDown(1000);
| |
| 108 | }) | |
| 109 | .insertAfter(this); | |
| 110 | }); |