aboutsummaryrefslogtreecommitdiffstats
path: root/nicovideo_comment.js
blob: 4157649e1496693cc8667543399a384316dc0df2 (plain)
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
/**
 * ==VimperatorPlugin==
 * @name           nicovideo_comment.js
 * @description    This plugin allows you to fill in the comment form for NICO NICO DOUGA.
 * @description-ja ニコニコ動画のコメント欄を入力
 * @minVersion     0.6pre
 * @author         otsune
 * @version        0.2
 * ==/VimperatorPlugin==
 *
 * Usage:
 * :nico {String}             -> Fill comment form
 * :nico! {String}            -> Fill mail form
 */
(function(){

liberator.commands.addUserCommand(['nico'],'Fill comment form in nicovideo',
    function(arg, special){
        var flvp = window.content.document.getElementById('flvplayer'); 
        var form = special ? 'MailInput.text' : 'ChatInput.text' ;
        flvp.wrappedJSObject.SetVariable(form, arg.toString() );
    },{
        bang: true,
        completer: function(filter, special){
            var templates = [];
            var commands = [
                'ue',
                'shita',
                'big',
                'medium',
                'small',
                'white',
                'red',
                'pink',
                'orange',
                'yellow',
                'green',
                'cyan',
                'blue',
                'purple',
                '184',
                'sage'
            ];
            var premiumcommands = [
                'invisible',
                'niconicowhite',
                'truered',
                'passionorange',
                'madyellow',
                'elementalgreen',
                'marineblue',
                'nobleviolet',
                'black'
            ];
            if (special){
                commands.forEach(function(command){
                    if (command[0].indexOf(filter.toLowerCase()) === 0){
                        templates.push(command);
                    }
                });
            }
            if (special && !(flvp.GetVariable('premiumNo')) ){
                premiumcommands.forEach(function(premiumcommand){
                    if (premiumcommand[0].indexOf(filter.toLowerCase()) === 0){
                        templates.push(premiumcommand);
                    }
                });
            }

            return [0, templates];
        }
    }
);

})();

// vim: set fdm=marker sw=4 ts=4 et:
39;id("cat-pass") | id("yjw_pinpoint_today") | id("yjw_pinpoint_tomorrow")' ); if (!parsed.length) return; var now = new Date(); var hours = now.getHours(); var start = Math.floor(hours / 3) + 1; var yahooToday = $U.getFirstNodeFromXPath('descendant::h3/span/text()', parsed[1]); yahooToday = yahooToday.textContent.replace(/.*\u6708(\d+)\u65E5.*/, '$1'); // 月($1)日 var source, cloneTable; if (yahooToday == now.getDate()) { source = parsed[1]; } else { source = parsed[2]; } var table = $U.getFirstNodeFromXPath('descendant::table', source); table.style.width = '95%'; table.style.color = '#222'; var cloneTable = table.cloneNode(false); this.cloneTable(cloneTable, table, start, start + 3, true); // concat tommorow if (start > 6) this.cloneTable(cloneTable, $U.getFirstNodeFromXPath('descendant::table', parsed[2]), 1, (3 - (8 - start)), false); var next = new Date(); next.setHours(now.getHours() + 1) next.setMinutes(0); next.setSeconds(0); this.interval = (next.getTime() - now.getTime()) / 1000; var df = window.content.document.createDocumentFragment(); df.appendChild(parsed[0]); df.appendChild(cloneTable); return df; }, cloneTable: function(source, table, start, end, withHead) { var rows = table.getElementsByTagName('tr'); for (let r = 0, len = rows.length; r < len; r++) { let row = withHead ? rows[r].cloneNode(false) : source.getElementsByTagName('tr')[r]; let cols = rows[r].getElementsByTagName('td'); if (withHead) source.appendChild(row); for (let c = 0, len2 = cols.length; c < len2; c++) { if ((withHead && c == 0) || (start <= c && c < end)) { row.appendChild(cols[c].cloneNode(true)); } } } return source; }, buildMessages: function(diff) { return new notifier.Message('Weather forecast by Yahoo!', $U.xmlSerialize(diff), url); } }); }); })(); // vim: set fdm=marker sw=4 ts=4 sts=0 et: