1+ "use strict" ;
2+
3+ parserFactory . register ( "uukanshu.cc" , ( ) => new UukanshuParser ( ) ) ;
4+
5+ class UukanshuParser extends Parser {
6+ constructor ( ) {
7+ super ( ) ;
8+ }
9+
10+ /**
11+ * @override
12+ * @param { Document } dom
13+ */
14+ async getChapterUrls ( dom ) {
15+ /** @type { NodeListOf<HTMLAnchorElement> } */
16+ const anchors = dom . querySelectorAll ( "#list-chapterAll div a" ) ;
17+
18+ return Array . from ( anchors , anchor => util . hyperLinkToChapter ( anchor ) ) ;
19+ }
20+
21+ /**
22+ * @override
23+ * @param { Document } dom
24+ */
25+ findContent ( dom ) {
26+ return dom . querySelector ( "div.readcotent" ) ; // [sic]
27+ }
28+
29+ /**
30+ * @override
31+ * @param { Document } dom
32+ */
33+ findChapterTitle ( dom ) {
34+ return dom . querySelector ( "h1.pt10" ) ;
35+ }
36+
37+ /**
38+ * @override
39+ * @param { Document } dom
40+ */
41+ extractTitleImpl ( dom ) {
42+ /** @type { HTMLMetaElement | null } */
43+ const meta = dom . querySelector ( "meta[property='og:title" ) ;
44+
45+ return meta ?. content ;
46+ }
47+
48+ /**
49+ * @override
50+ * @param { Document } dom
51+ */
52+ extractDescription ( dom ) {
53+ /** @type { HTMLMetaElement | null } */
54+ const meta = dom . querySelector ( "meta[property='og:description" ) ;
55+
56+ return meta ?. content ?. replace ( / < s p a n .* ?> / , "" ) ;
57+ }
58+
59+ /**
60+ * @override
61+ * @param { Document } dom
62+ */
63+ extractSubject ( dom ) {
64+ /** @type { HTMLMetaElement | null } */
65+ const meta = dom . querySelector ( "meta[property='og:novel:category" ) ;
66+
67+ return meta ?. content ;
68+ }
69+
70+ /**
71+ * @override
72+ * @param { Document } dom
73+ */
74+ extractAuthor ( dom ) {
75+ /** @type { HTMLMetaElement | null } */
76+ const meta = dom . querySelector ( "meta[property='og:novel:author" ) ;
77+
78+ return meta ?. content ;
79+ }
80+
81+ /**
82+ * @override
83+ */
84+ extractLanguage ( ) {
85+ return "zh" ;
86+ }
87+
88+ /**
89+ * @override
90+ * @param { Document } dom
91+ */
92+ findCoverImageUrl ( dom ) {
93+ /** @type { HTMLMetaElement | null } */
94+ const meta = dom . querySelector ( "meta[property='og:image']" ) ;
95+
96+ return meta ?. content ;
97+ }
98+ }
0 commit comments