Skip to content

Commit

Permalink
Deploying to gh-pages from @ fce8a4c 🚀
Browse files Browse the repository at this point in the history
  • Loading branch information
Seyden committed Jul 28, 2024
1 parent 313d31a commit 383d10e
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 23 deletions.
43 changes: 32 additions & 11 deletions 0.8/AsuraScans/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3918,7 +3918,7 @@ const simpleUrl = require('simple-url');
const ASURASCANS_DOMAIN = 'https://asuracomic.net';
const ASURASCANS_API_DOMAIN = 'https://gg.asuracomic.net';
exports.AsuraScansInfo = {
version: '4.1.1',
version: '4.1.2',
name: 'AsuraScans',
description: 'Extension that pulls manga from AsuraScans',
author: 'Seyden',
Expand Down Expand Up @@ -4078,6 +4078,8 @@ class AsuraScans {
enabled: false
}
};
// Ugly workaround to fasten up migrations and updates, paperback doesnt support any other way for not double requesting
this.mangaDataRequests = {};
}
async getSourceMenu() {
return App.createDUISection({
Expand All @@ -4094,6 +4096,26 @@ class AsuraScans {
const url = settingsUrl ? settingsUrl : this.baseUrl;
return url.replace(/\/*$/, '');
}
async getMangaRequest(mangaId) {
let request = this.mangaDataRequests[mangaId];
if (request && request.expires > Date.now()) {
return request.data;
}
for (const key in this.mangaDataRequests) {
let tempRequest = this.mangaDataRequests[key];
if (tempRequest.expires < Date.now()) {
delete this.mangaDataRequests[key];
}
}
this.mangaDataRequests[mangaId] = {
expires: Date.now() + 5000,
data: new Promise(async (resolve) => {
const result = await this.getMangaData(mangaId);
resolve(result);
})
};
return this.mangaDataRequests[mangaId].data;
}
async getMangaSlug(mangaId) {
return await this.stateManager.retrieve(`${mangaId}:slug`);
}
Expand All @@ -4111,11 +4133,11 @@ class AsuraScans {
return await this.loadRequestData(url);
}
async getMangaDetails(mangaId) {
const data = await this.getMangaData(mangaId);
const data = await this.getMangaRequest(mangaId);
return this.parser.parseMangaDetails(data, mangaId, this);
}
async getChapters(mangaId) {
const data = await this.getMangaData(mangaId);
const data = await this.getMangaRequest(mangaId);
const chapters = await this.parser.parseChapterList(data, mangaId, this);
if (!Array.isArray(chapters) || chapters.length == 0) {
throw new Error(`Couldn't find any chapters for mangaId ${mangaId}, throwing an error to prevent loosing reading progress`);
Expand All @@ -4138,8 +4160,8 @@ class AsuraScans {
async getChapterDetails(mangaId, chapterId) {
const chapterLink = await this.getChapterSlug(mangaId, chapterId);
const url = await this.getBaseUrl();
const $ = await this.loadCheerioData(`${url}/${chapterLink}/`);
return this.parser.parseChapterDetails($, mangaId, chapterId);
const data = await this.loadRequestData(`${url}/${chapterLink}/`);
return this.parser.parseChapterDetails(data, mangaId, chapterId);
}
async getSearchTags() {
const data = await this.loadRequestData(`${ASURASCANS_API_DOMAIN}/api/series/filters`);
Expand All @@ -4165,7 +4187,7 @@ class AsuraScans {
const request = await this.constructSearchRequest(page, query);
const response = await this.requestManager.schedule(request, 1);
this.checkResponseErrors(response);
const $ = this.cheerio.load(response.data);
const $ = this.cheerio.load(response.data, { _useHtmlParser2: true });
const results = await this.parser.parseSearchResults($, this);
const chapterTag = query?.includedTags.find((x) => x.id.startsWith('chapters'));
const manga = [];
Expand Down Expand Up @@ -4272,7 +4294,7 @@ class AsuraScans {
return response.data;
}
async loadCheerioData(url, method = 'GET') {
return this.cheerio.load(await this.loadRequestData(url, method));
return this.cheerio.load(await this.loadRequestData(url, method), { _useHtmlParser2: true });
}
async getCloudflareBypassRequestAsync() {
const url = await this.getBaseUrl();
Expand Down Expand Up @@ -4388,7 +4410,7 @@ class AsuraScansParser {
if (obj == '') {
throw new Error(`Failed to parse comic object for manga ${mangaId}`); // If null, throw error, else parse data to json.
}
const $ = source.cheerio.load(data);
const $ = source.cheerio.load(data, { _useHtmlParser2: true });
const comicObj = JSON.parse(obj);
const titles = [];
titles.push(comicObj.comic.name.trim());
Expand Down Expand Up @@ -4481,8 +4503,7 @@ class AsuraScansParser {
return App.createChapter(chapter);
});
}
parseChapterDetails($, mangaId, chapterId) {
const data = $.html();
parseChapterDetails(data, mangaId, chapterId) {
const pages = new Set();
const matches = data.matchAll(/(https:\/\/gg\.asuracomic\.net\/storage\/comics\/[^"\\]+)/gi);
for (const match of Array.from(matches)) {
Expand Down Expand Up @@ -4532,7 +4553,7 @@ class AsuraScansParser {
return results;
}
for (const manga of mangas.toArray()) {
const slug = manga.attribs['href'] ?? '';
const slug = $(manga).attr('href') ?? '';
if (!slug) {
throw new Error(`Unable to parse slug (${slug})!`);
}
Expand Down
43 changes: 32 additions & 11 deletions 0.8/AsuraScans/source.js
Original file line number Diff line number Diff line change
Expand Up @@ -3918,7 +3918,7 @@ const simpleUrl = require('simple-url');
const ASURASCANS_DOMAIN = 'https://asuracomic.net';
const ASURASCANS_API_DOMAIN = 'https://gg.asuracomic.net';
exports.AsuraScansInfo = {
version: '4.1.1',
version: '4.1.2',
name: 'AsuraScans',
description: 'Extension that pulls manga from AsuraScans',
author: 'Seyden',
Expand Down Expand Up @@ -4078,6 +4078,8 @@ class AsuraScans {
enabled: false
}
};
// Ugly workaround to fasten up migrations and updates, paperback doesnt support any other way for not double requesting
this.mangaDataRequests = {};
}
async getSourceMenu() {
return App.createDUISection({
Expand All @@ -4094,6 +4096,26 @@ class AsuraScans {
const url = settingsUrl ? settingsUrl : this.baseUrl;
return url.replace(/\/*$/, '');
}
async getMangaRequest(mangaId) {
let request = this.mangaDataRequests[mangaId];
if (request && request.expires > Date.now()) {
return request.data;
}
for (const key in this.mangaDataRequests) {
let tempRequest = this.mangaDataRequests[key];
if (tempRequest.expires < Date.now()) {
delete this.mangaDataRequests[key];
}
}
this.mangaDataRequests[mangaId] = {
expires: Date.now() + 5000,
data: new Promise(async (resolve) => {
const result = await this.getMangaData(mangaId);
resolve(result);
})
};
return this.mangaDataRequests[mangaId].data;
}
async getMangaSlug(mangaId) {
return await this.stateManager.retrieve(`${mangaId}:slug`);
}
Expand All @@ -4111,11 +4133,11 @@ class AsuraScans {
return await this.loadRequestData(url);
}
async getMangaDetails(mangaId) {
const data = await this.getMangaData(mangaId);
const data = await this.getMangaRequest(mangaId);
return this.parser.parseMangaDetails(data, mangaId, this);
}
async getChapters(mangaId) {
const data = await this.getMangaData(mangaId);
const data = await this.getMangaRequest(mangaId);
const chapters = await this.parser.parseChapterList(data, mangaId, this);
if (!Array.isArray(chapters) || chapters.length == 0) {
throw new Error(`Couldn't find any chapters for mangaId ${mangaId}, throwing an error to prevent loosing reading progress`);
Expand All @@ -4138,8 +4160,8 @@ class AsuraScans {
async getChapterDetails(mangaId, chapterId) {
const chapterLink = await this.getChapterSlug(mangaId, chapterId);
const url = await this.getBaseUrl();
const $ = await this.loadCheerioData(`${url}/${chapterLink}/`);
return this.parser.parseChapterDetails($, mangaId, chapterId);
const data = await this.loadRequestData(`${url}/${chapterLink}/`);
return this.parser.parseChapterDetails(data, mangaId, chapterId);
}
async getSearchTags() {
const data = await this.loadRequestData(`${ASURASCANS_API_DOMAIN}/api/series/filters`);
Expand All @@ -4165,7 +4187,7 @@ class AsuraScans {
const request = await this.constructSearchRequest(page, query);
const response = await this.requestManager.schedule(request, 1);
this.checkResponseErrors(response);
const $ = this.cheerio.load(response.data);
const $ = this.cheerio.load(response.data, { _useHtmlParser2: true });
const results = await this.parser.parseSearchResults($, this);
const chapterTag = query?.includedTags.find((x) => x.id.startsWith('chapters'));
const manga = [];
Expand Down Expand Up @@ -4272,7 +4294,7 @@ class AsuraScans {
return response.data;
}
async loadCheerioData(url, method = 'GET') {
return this.cheerio.load(await this.loadRequestData(url, method));
return this.cheerio.load(await this.loadRequestData(url, method), { _useHtmlParser2: true });
}
async getCloudflareBypassRequestAsync() {
const url = await this.getBaseUrl();
Expand Down Expand Up @@ -4388,7 +4410,7 @@ class AsuraScansParser {
if (obj == '') {
throw new Error(`Failed to parse comic object for manga ${mangaId}`); // If null, throw error, else parse data to json.
}
const $ = source.cheerio.load(data);
const $ = source.cheerio.load(data, { _useHtmlParser2: true });
const comicObj = JSON.parse(obj);
const titles = [];
titles.push(comicObj.comic.name.trim());
Expand Down Expand Up @@ -4481,8 +4503,7 @@ class AsuraScansParser {
return App.createChapter(chapter);
});
}
parseChapterDetails($, mangaId, chapterId) {
const data = $.html();
parseChapterDetails(data, mangaId, chapterId) {
const pages = new Set();
const matches = data.matchAll(/(https:\/\/gg\.asuracomic\.net\/storage\/comics\/[^"\\]+)/gi);
for (const match of Array.from(matches)) {
Expand Down Expand Up @@ -4532,7 +4553,7 @@ class AsuraScansParser {
return results;
}
for (const manga of mangas.toArray()) {
const slug = manga.attribs['href'] ?? '';
const slug = $(manga).attr('href') ?? '';
if (!slug) {
throw new Error(`Unable to parse slug (${slug})!`);
}
Expand Down
2 changes: 1 addition & 1 deletion 0.8/versioning.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"buildTime":"2024-07-26T23:39:30.409Z","sources":[{"id":"AsuraScans","name":"AsuraScans","author":"Seyden","desc":"Extension that pulls manga from AsuraScans","website":"https://github.com/Seyden","contentRating":"MATURE","version":"4.1.1","icon":"icon.png","tags":[],"websiteBaseURL":"https://asuracomic.net","intents":53},{"id":"BatoTo","name":"BatoTo","author":"niclimcy","desc":"Extension that pulls manga from bato.to","website":"https://github.com/niclimcy","contentRating":"MATURE","version":"3.1.2","icon":"icon.png","tags":[{"text":"Multi Language","type":"default"}],"websiteBaseURL":"https://bato.to","intents":53},{"id":"Hentai2Read","name":"Hentai2Read","author":"EmZedH","desc":"Extension that pulls manga from hentai2read.com","website":"https://github.com/EmZedH","contentRating":"ADULT","version":"1.0.1","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://hentai2read.com","intents":5},{"id":"MangaDex","name":"MangaDex","author":"Nar1n & Netsky","desc":"Extension that pulls manga from MangaDex","website":"https://github.com/nar1n","contentRating":"EVERYONE","version":"3.0.5","icon":"icon.png","tags":[],"websiteBaseURL":"https://mangadex.org","intents":37},{"id":"MangaPlus","name":"MangaPlus","author":"Rinto-kun","desc":"Extension that pulls manga from Manga+ by Shueisha","website":"https://github.com/Rinto-kun","contentRating":"EVERYONE","version":"2.0.3","icon":"icon.png","tags":[],"websiteBaseURL":"https://mangaplus.shueisha.co.jp","intents":53},{"id":"NHentai","name":"nhentai","author":"NotMarek & Netsky","desc":"Extension which pulls content from nHentai.","website":"https://github.com/TheNetsky","contentRating":"ADULT","version":"4.0.7","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://nhentai.net","intents":53}],"builtWith":{"toolchain":"0.8.0-alpha.47","types":"0.8.0-alpha.47"}}
{"buildTime":"2024-07-28T03:46:49.698Z","sources":[{"id":"AsuraScans","name":"AsuraScans","author":"Seyden","desc":"Extension that pulls manga from AsuraScans","website":"https://github.com/Seyden","contentRating":"MATURE","version":"4.1.2","icon":"icon.png","tags":[],"websiteBaseURL":"https://asuracomic.net","intents":53},{"id":"BatoTo","name":"BatoTo","author":"niclimcy","desc":"Extension that pulls manga from bato.to","website":"https://github.com/niclimcy","contentRating":"MATURE","version":"3.1.2","icon":"icon.png","tags":[{"text":"Multi Language","type":"default"}],"websiteBaseURL":"https://bato.to","intents":53},{"id":"Hentai2Read","name":"Hentai2Read","author":"EmZedH","desc":"Extension that pulls manga from hentai2read.com","website":"https://github.com/EmZedH","contentRating":"ADULT","version":"1.0.1","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://hentai2read.com","intents":5},{"id":"MangaDex","name":"MangaDex","author":"Nar1n & Netsky","desc":"Extension that pulls manga from MangaDex","website":"https://github.com/nar1n","contentRating":"EVERYONE","version":"3.0.5","icon":"icon.png","tags":[],"websiteBaseURL":"https://mangadex.org","intents":37},{"id":"MangaPlus","name":"MangaPlus","author":"Rinto-kun","desc":"Extension that pulls manga from Manga+ by Shueisha","website":"https://github.com/Rinto-kun","contentRating":"EVERYONE","version":"2.0.3","icon":"icon.png","tags":[],"websiteBaseURL":"https://mangaplus.shueisha.co.jp","intents":53},{"id":"NHentai","name":"nhentai","author":"NotMarek & Netsky","desc":"Extension which pulls content from nHentai.","website":"https://github.com/TheNetsky","contentRating":"ADULT","version":"4.0.7","icon":"icon.png","tags":[{"text":"18+","type":"warning"}],"websiteBaseURL":"https://nhentai.net","intents":53}],"builtWith":{"toolchain":"0.8.0-alpha.47","types":"0.8.0-alpha.47"}}

0 comments on commit 383d10e

Please sign in to comment.