View difference between Paste ID: gFzfPqUw and A7Cii1JE
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
});