/
Sandra & Woo.user.js
90 lines (81 loc) · 3.33 KB
/
Sandra & Woo.user.js
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
// ==UserScript==
// @name Comic Adapter: Sandra & Woo
// @version 2021.05.20
// @description Extract Info for Comicslate
// @include http*://*sandraandwoo.com*
// @icon https://www.google.com/s2/favicons?domain=sandraandwoo.com
// @author Rainbow-Spike
// @grant GM_setClipboard
// @grant GM_registerMenuCommand
// @supportURL https://github.com/Comicslate/Userscripts/issues
// @updateURL https://github.com/Comicslate/Userscripts/raw/master/Comic%20Adapter/Sandra%20%26%20Woo.user.js
// @downloadURL https://github.com/Comicslate/Userscripts/raw/master/Comic%20Adapter/Sandra%20%26%20Woo.user.js
// ==/UserScript==
function action ( ) {
var nav = document . querySelector ( ".nav" ),
titler = document . querySelector ( ".post-comic h2" ),
entry_p = document . querySelectorAll ( ".entry > p" ),
entry_li = document . querySelectorAll ( ".entry > li" ),
trans = document . querySelector ( ".transcript" ),
trans_li = trans . querySelectorAll ( "li" ),
tag_div = document . querySelector ( ".tags" ),
tag_a = tag_div . querySelectorAll ( "a" ),
texter = '';
// ТИТУЛ
texter += titler . innerHTML
. replace ( /\[?(\d+)\]? (.*)/, "== Sandra and Woo $1 ==\n**$2**\n\n{cnav}\n{{$1.png}}\n" )
. replace ( /^\[(\d+)\]$/, "== Sandra and Woo $1 ==\n\n{cnav}\n{{$1.png}}\n" );
// ПАРАГРАФЫ ПРИМЕЧАНИЙ
if ( entry_p . length !== undefined ) {
for ( var i = 0; i < entry_p . length; i++ ) {
texter += "\n" + entry_p [ i ] . innerHTML
. replace ( /<a [^>]*href *= *"([^"]+)"[^>]*>([^<]+)<\/a>/g, "[[$1|$2]]" )
. replace ( /\[\[https?:\/\/([^.]+).wikipedia.[^\/]+\/wiki\/([^\|\]]+)/g, "[[$1w>$2" )
. replace ( /w>([^_\|\]]+)_([^\|\]]+)/g, "w>$1 $2" )
. replace ( /<em>([^<]+)<\/em>/g, "//$1//" )
. replace ( /<strong>([^<]+)<\/strong>/g, "**$1**" ) + "\\\\\n";
}
}
// СПИСКИ ПРИМЕЧАНИЙ
if ( entry_li . length !== undefined ) {
for ( var j = 0; j < entry_li . length; j++ ) {
texter += " * " + entry_li [ j ] . innerHTML
. replace ( /<a [^"]+ href="([^"]+)">([^<]+)<\/a>/g, "[[$1|$2]]" )
. replace ( /<em>([^<]+)<\/em>/g, "//$1//" )
. replace ( /<strong>([^<]+)<\/strong>/g, "**$1**" ) + "\n";
}
}
// ТРАНСКРИПТ
if ( trans !== null ) {
texter += "<!--\n";
if ( trans_li . length !== undefined ) {
for ( var k = 0; k < trans_li . length; k++ ) {
texter += " * " + trans_li[k].innerHTML
. replace ( /<strong>([^<]+)<\/strong>/g, "**$1**" ) + "\n";
}
}
texter += "-->";
}
// ТЕГИ
if ( tag_div !== null ) {
for ( var l = 0; l < tag_a . length; l++ ) {
tag_a [ l ] . innerHTML = tag_a [ l ] . innerHTML . replace ( / /g, "_" );
}
texter += tag_div . innerHTML
. replace ( /\t+/, "" )
. replace ( /, /g, " " )
. replace ( /└ Tags: (.*) \s+/, "{{tag>$1}}" )
. replace ( /<a [^>]*href *= *"[^"]+"[^>]*>([^<]+)<\/a>/g, "$1" );
}
texter = texter
. replace ( "\\\\\n *", "\n *" );
GM_setClipboard ( texter, "text" );
}
GM_registerMenuCommand ( "Start!", action );
// ПОДМЕНА A НА IMG
document . querySelector ( '#comic a' ) . href = document . querySelector ( '#comic a img' ) . src;
// ХОТКЕИ
var prev = document . querySelector ( '.nav-previous > a' ),
next = document . querySelector ( '.nav-next > a' );
if ( prev != null ) prev . accessKey = "z";
if ( next != null ) next . accessKey = "x";