@@ -2,136 +2,137 @@ var currentPage = 0;
22var digits = 0 ;
33var imgURLs ;
44
5- const SEARCH_URL = "https://manganelo.com/getstorysearchjson" ;
6- const MANGA_URL = "https://manganelo.com/manga/" ;
7- const CHAPTER_URL = "https://manganelo.com/chapter/" ;
5+ const SEARCH_URL = "https://readmanganato.com/getstorysearchjson" ;
6+ const MAIN_URL = "https://readmanganato.com/" ;
87
98function listChapters ( query ) {
10- var search = mango . post ( SEARCH_URL , "searchword=" + query , {
11- "content-type" : "application/x-www-form-urlencoded"
12- } ) . body ;
13-
14- if ( ! search ) {
15- mango . raise ( "An error occured when searching." ) ;
16- }
17-
18- var mangaID = JSON . parse ( search ) [ 0 ] . id_encode ;
19- var mangaURL = MANGA_URL + mangaID ;
20-
21- var html = mango . get ( mangaURL ) . body ;
22-
23- if ( ! html ) {
24- mango . raise ( "Failed to find manga." ) ;
25- }
26-
27- var mangaTitleNode = mango . css ( html , "div.story-info-right h1" ) [ 0 ] ;
28-
29- if ( ! mangaTitleNode ) {
30- mango . raise ( "Failed to get chapter title." ) ;
31- }
32-
33- var mangaTitle = mango . text ( mangaTitleNode ) ;
34-
35- var chapters = [ ] ;
36- mango . css ( html , "ul.row-content-chapter li" ) . forEach ( function ( element ) {
37- var linkNode = mango . css ( element , "a.chapter-name" ) [ 0 ] ;
38- var uploadNode = mango . css ( element , "span.chapter-time" ) [ 0 ] ;
39-
40- var mangaChapterNumber ;
41- try {
42- var url = mango . attribute ( linkNode , "href" ) ;
43-
44- // Extract yyy(.yy) from: https://manganelo.com/chapter/xxxxxxxx/chapter_yyy.yy
45- mangaChapterNumber = / c h a p t e r _ ( ( \d + .? ) * ) / . exec ( url ) [ 1 ] ;
46-
47- // Replace '.' with '_', since ids can't contain '.'
48- mangaChapterNumber = mangaChapterNumber . replace ( / \. / , "_" ) ;
49- } catch ( e ) {
50- mango . raise ( "Failed to get chapter number." ) ;
51- }
52-
53- var chapterID = mangaID + "ch" + mangaChapterNumber // Create ID as xxxxxxxxchyyy(_yy)
54- var chapterTitle = mango . text ( linkNode ) ;
55- var chapterUploadedTime = mango . attribute ( uploadNode , "title" ) ;
56-
57- var slimObj = { } ;
58- slimObj [ 'id' ] = chapterID ;
59- slimObj [ 'title' ] = chapterTitle ;
60- slimObj [ 'time-uploaded' ] = chapterUploadedTime ;
61- chapters . push ( slimObj ) ;
62- } ) ;
63-
64- return JSON . stringify ( {
65- chapters : chapters ,
66- title : mangaTitle
67- } ) ;
9+ var search = mango . post ( SEARCH_URL , "searchword=" + query , {
10+ "content-type" : "application/x-www-form-urlencoded"
11+ } ) . body ;
12+
13+ if ( ! search ) {
14+ mango . raise ( "An error occured when searching." ) ;
15+ }
16+
17+
18+ var mangaURL = JSON . parse ( search ) [ 0 ] . link_story ;
19+ var mangaID = / m a n g a - ( \w + ) / . exec ( mangaURL ) [ 1 ] ;
20+
21+ var html = mango . get ( mangaURL ) . body ;
22+
23+ if ( ! html ) {
24+ mango . raise ( "Failed to find manga." ) ;
25+ }
26+
27+ var mangaTitleNode = mango . css ( html , "div.story-info-right h1" ) [ 0 ] ;
28+
29+ if ( ! mangaTitleNode ) {
30+ mango . raise ( "Failed to get chapter title." ) ;
31+ }
32+
33+ var mangaTitle = mango . text ( mangaTitleNode ) ;
34+
35+ var chapters = [ ] ;
36+ mango . css ( html , "ul.row-content-chapter li" ) . forEach ( function ( element ) {
37+ var linkNode = mango . css ( element , "a.chapter-name" ) [ 0 ] ;
38+ var uploadNode = mango . css ( element , "span.chapter-time" ) [ 0 ] ;
39+
40+ var mangaChapterNumber ;
41+ try {
42+ var url = mango . attribute ( linkNode , "href" ) ;
43+
44+ // Extract yyy(.yy) from: https://readmanganato.com/manga-xxxxx/chapter-yyy(.yy)
45+ mangaChapterNumber = / c h a p t e r - ( ( \d + .? ) * ) / . exec ( url ) [ 1 ] ;
46+
47+ // Replace '.' with '_', since ids can't contain '.'
48+ mangaChapterNumber = mangaChapterNumber . replace ( / \. / , "_" ) ;
49+ } catch ( e ) {
50+ mango . raise ( "Failed to get chapter number." ) ;
51+ }
52+
53+ var chapterID = mangaID + "chapter" + mangaChapterNumber // Create ID as xxxxxxxxchapteryyy(_yy)
54+ var chapterTitle = mango . text ( linkNode ) ;
55+ var chapterUploadedTime = mango . attribute ( uploadNode , "title" ) ;
56+
57+ var slimObj = { } ;
58+ slimObj [ 'id' ] = chapterID ;
59+ slimObj [ 'title' ] = chapterTitle ;
60+ slimObj [ 'time-uploaded' ] = chapterUploadedTime ;
61+ chapters . push ( slimObj ) ;
62+ } ) ;
63+
64+ return JSON . stringify ( {
65+ chapters : chapters ,
66+ title : mangaTitle
67+ } ) ;
6868}
6969
7070function selectChapter ( id ) {
71- var mangaIDMatch = / ( .* ?) c h ( ( \d _ ? ) * ) $ / . exec ( id ) ; // Extract xxxxxxxx & yyy(_yy) from ID.
72- var mangaID = mangaIDMatch [ 1 ] ;
73- var mangaChapterNumber = mangaIDMatch [ 2 ] . replace ( / \_ / , "." ) ; // Convert '_' back to '.'
74-
75- // Create URL formatted like https://manganelo .com/chapter/ xxxxxxxx/chapter_yyy .yy
76- var mangaURL = CHAPTER_URL + mangaID + "/chapter_ " + mangaChapterNumber ;
77-
78- var html = mango . get ( mangaURL ) . body ;
79-
80- if ( ! html ) {
81- mango . raise ( "Failed to load chapter." ) ;
82- }
83-
84- var chapterTitleNode = mango . css ( html , "div.panel-breadcrumb a:last-child" ) [ 0 ] ;
85-
86- if ( ! chapterTitleNode ) {
87- mango . raise ( "Failed to get chapter title." )
88- }
89-
90- var chapterTitle = mango . text ( chapterTitleNode ) ;
91-
92- var imageNodes = mango . css ( html , "div.container-chapter-reader img" ) ;
93-
94- if ( ! imageNodes ) {
95- mango . raise ( "Failed to get images." )
96- }
97-
98- imgURLs = [ ] ;
99- imageNodes . forEach ( function ( element ) {
100- imgURLs . push (
101- mango . attribute ( element , "src" )
102- ) ;
103- } )
104-
105- currentPage = 0 ;
106- digits = Math . floor ( Math . log10 ( imgURLs . length ) ) + 1 ;
107-
108- return JSON . stringify ( {
109- title : chapterTitle ,
110- pages : imgURLs . length
111- } ) ;
71+ var mangaIDMatch = / ( .* ?) c h a p t e r ( ( \d _ ? ) * ) / . exec ( id ) ; // Extract xxxxxxxx & yyy(_yy) from ID.
72+ var mangaID = mangaIDMatch [ 1 ] ;
73+ var mangaChapterNumber = mangaIDMatch [ 2 ] . replace ( / \_ / , "." ) ; // Convert '_' back to '.'
74+
75+ // Create URL formatted like https://readmanganato .com/manga- xxxxxxxx/chapter-yyy .yy
76+ var mangaURL = MAIN_URL + "manga-" + mangaID + "/chapter- " + mangaChapterNumber ;
77+
78+ var html = mango . get ( mangaURL ) . body ;
79+
80+ if ( ! html ) {
81+ mango . raise ( "Failed to load chapter." ) ;
82+ }
83+
84+ var chapterTitleNode = mango . css ( html , "div.panel-breadcrumb a:last-child" ) [ 0 ] ;
85+
86+ if ( ! chapterTitleNode ) {
87+ mango . raise ( "Failed to get chapter title." )
88+ }
89+
90+ var chapterTitle = mango . text ( chapterTitleNode ) ;
91+
92+ var imageNodes = mango . css ( html , "div.container-chapter-reader img" ) ;
93+
94+ if ( ! imageNodes ) {
95+ mango . raise ( "Failed to get images." )
96+ }
97+
98+ imgURLs = [ ] ;
99+ imageNodes . forEach ( function ( element ) {
100+ imgURLs . push (
101+ mango . attribute ( element , "src" )
102+ ) ;
103+ } )
104+
105+ currentPage = 0 ;
106+ digits = Math . floor ( Math . log10 ( imgURLs . length ) ) + 1 ;
107+
108+ return JSON . stringify ( {
109+ title : chapterTitle ,
110+ pages : imgURLs . length
111+ } ) ;
112112}
113113
114114function nextPage ( ) {
115- if ( currentPage >= imgURLs . length ) {
116- return JSON . stringify ( { } ) ;
117- }
118-
119- var url = imgURLs [ currentPage ]
120- var filename = pad ( currentPage , digits ) + '.' + / \. ( \w + ) $ / . exec ( url ) [ 0 ] ;
121-
122- currentPage += 1 ;
123- return JSON . stringify ( {
124- url : url ,
125- filename : filename ,
126- headers : {
127- 'referer' : "https://manganelo.com/"
128- }
129- } ) ;
115+ if ( currentPage >= imgURLs . length ) {
116+ return JSON . stringify ( { } ) ;
117+ }
118+
119+ var url = imgURLs [ currentPage ]
120+ var filename = pad ( currentPage , digits ) + '.' + / \. ( \w + ) $ / . exec ( url ) [ 0 ] ;
121+
122+ currentPage += 1 ;
123+ return JSON . stringify ( {
124+ url : url ,
125+ filename : filename ,
126+ headers : {
127+ 'referer' : "https://manganelo.com/"
128+ }
129+ } ) ;
130130}
131131
132+
132133// https://stackoverflow.com/a/10073788
133134function pad ( n , width , z ) {
134135 z = z || '0' ;
135136 n = n + '' ;
136137 return n . length >= width ? n : new Array ( width - n . length + 1 ) . join ( z ) + n ;
137- }
138+ }
0 commit comments