Skip to content
This repository was archived by the owner on Mar 23, 2025. It is now read-only.

Commit e25ab25

Browse files
Update index.js
Fixed issue with manganelo plugin
1 parent 8119dec commit e25ab25

File tree

1 file changed

+121
-118
lines changed

1 file changed

+121
-118
lines changed

plugins/manganelo/index.js

Lines changed: 121 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -2,136 +2,139 @@ var currentPage = 0;
22
var digits = 0;
33
var 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

98
function 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 = /chapter_((\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 = /manga-(\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 = /chapter-((\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

7072
function selectChapter(id) {
71-
var mangaIDMatch = /(.*?)ch((\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 = /(.*?)chapter((\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

114116
function 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
133136
function 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

Comments
 (0)