@@ -2,136 +2,139 @@ 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+ var mangaChapterLink ;
42+ try {
43+ var url = mango . attribute ( linkNode , "href" ) ;
44+
45+ var mangaChapterLink = mango . attribute ( linkNode , "href" ) ;
46+ // Extract yyy(.yy) from: https://manganelo.com/chapter/xxxxxxxx/chapter_yyy.yy
47+ mangaChapterNumber = / c h a p t e r - ( ( \d + .? ) * ) / . exec ( url ) [ 1 ] ;
48+
49+ // Replace '.' with '_', since ids can't contain '.'
50+ mangaChapterNumber = mangaChapterNumber . replace ( / \. / , "_" ) ;
51+ } catch ( e ) {
52+ mango . raise ( "Failed to get chapter number." ) ;
53+ }
54+
55+ var chapterID = mangaID + "chapter" + mangaChapterNumber // Create ID as xxxxxxxxchyyy(_yy)
56+ var chapterTitle = mango . text ( linkNode ) ;
57+ var chapterUploadedTime = mango . attribute ( uploadNode , "title" ) ;
58+
59+ var slimObj = { } ;
60+ slimObj [ 'id' ] = chapterID ;
61+ slimObj [ 'title' ] = chapterTitle ;
62+ slimObj [ 'time-uploaded' ] = chapterUploadedTime ;
63+ chapters . push ( slimObj ) ;
64+ } ) ;
65+
66+ return JSON . stringify ( {
67+ chapters : chapters ,
68+ title : mangaTitle
69+ } ) ;
6870}
6971
7072function 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- } ) ;
73+ var mangaIDMatch = / ( .* ?) c h a p t e r ( ( \d _ ? ) * ) / . exec ( id ) ; // Extract xxxxxxxx & yyy(_yy) from ID.
74+ var mangaID = 'manga-' + mangaIDMatch [ 1 ] ;
75+ var mangaChapterNumber = 'chapter-' + mangaIDMatch [ 2 ] . replace ( / \_ / , "." ) ; // Convert '_' back to '.'
76+
77+ // Create URL formatted like https://manganelo.com/chapter/xxxxxxxx/chapter_yyy.yy
78+ var mangaURL = MAIN_URL + mangaID + "/" + mangaChapterNumber ;
79+
80+ var html = mango . get ( mangaURL ) . body ;
81+
82+ if ( ! html ) {
83+ mango . raise ( "Failed to load chapter." ) ;
84+ }
85+
86+ var chapterTitleNode = mango . css ( html , "div.panel-breadcrumb a:last-child" ) [ 0 ] ;
87+
88+ if ( ! chapterTitleNode ) {
89+ mango . raise ( "Failed to get chapter title." )
90+ }
91+
92+ var chapterTitle = mango . text ( chapterTitleNode ) ;
93+
94+ var imageNodes = mango . css ( html , "div.container-chapter-reader img" ) ;
95+
96+ if ( ! imageNodes ) {
97+ mango . raise ( "Failed to get images." )
98+ }
99+
100+ imgURLs = [ ] ;
101+ imageNodes . forEach ( function ( element ) {
102+ imgURLs . push (
103+ mango . attribute ( element , "src" )
104+ ) ;
105+ } )
106+
107+ currentPage = 0 ;
108+ digits = Math . floor ( Math . log10 ( imgURLs . length ) ) + 1 ;
109+
110+ return JSON . stringify ( {
111+ title : chapterTitle ,
112+ pages : imgURLs . length
113+ } ) ;
112114}
113115
114116function 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- } ) ;
117+ if ( currentPage >= imgURLs . length ) {
118+ return JSON . stringify ( { } ) ;
119+ }
120+
121+ var url = imgURLs [ currentPage ]
122+ var filename = pad ( currentPage , digits ) + '.' + / \. ( \w + ) $ / . exec ( url ) [ 0 ] ;
123+
124+ currentPage += 1 ;
125+ return JSON . stringify ( {
126+ url : url ,
127+ filename : filename ,
128+ headers : {
129+ 'referer' : "https://manganelo.com/"
130+ }
131+ } ) ;
130132}
131133
134+
132135// https://stackoverflow.com/a/10073788
133136function pad ( n , width , z ) {
134137 z = z || '0' ;
135138 n = n + '' ;
136139 return n . length >= width ? n : new Array ( width - n . length + 1 ) . join ( z ) + n ;
137- }
140+ }
0 commit comments