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

Commit 6a15f2b

Browse files
authored
Merge pull request #14 from amanagarwal-sopho/master
Fixed issue with Manganelo plugin
2 parents 8119dec + ed0a2c9 commit 6a15f2b

File tree

1 file changed

+119
-118
lines changed

1 file changed

+119
-118
lines changed

plugins/manganelo/index.js

Lines changed: 119 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -2,136 +2,137 @@ 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+
try {
42+
var url = mango.attribute(linkNode, "href");
43+
44+
// Extract yyy(.yy) from: https://readmanganato.com/manga-xxxxx/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 + "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

7070
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-
});
71+
var mangaIDMatch = /(.*?)chapter((\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

114114
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-
});
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
133134
function 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

Comments
 (0)