diff --git a/web/src/engine/websites/GuFengMH8.ts b/web/src/engine/websites/GuFengMH8.ts index af0790171f..3f8b48f829 100644 --- a/web/src/engine/websites/GuFengMH8.ts +++ b/web/src/engine/websites/GuFengMH8.ts @@ -12,7 +12,7 @@ import * as SinMH from './decorators/SinMH'; export default class extends DecoratableMangaScraper { public constructor() { - super('gufengmh8', `古风漫画网 (GuFengMH8)`, 'https://www.gufengmh9.com', Tags.Language.Chinese, Tags.Media.Manga, Tags.Media.Manhua, Tags.Media.Manhwa, Tags.Source.Aggregator); + super('gufengmh8', `古风漫画网 (GuFengMH8)`, 'https://www.gufengmh.com', Tags.Language.Chinese, Tags.Media.Manga, Tags.Media.Manhua, Tags.Media.Manhwa, Tags.Source.Aggregator); } public override get Icon() { diff --git a/web/src/engine/websites/GuFengMH8_e2e.ts b/web/src/engine/websites/GuFengMH8_e2e.ts index 62dc51b2a8..5d6b6de933 100644 --- a/web/src/engine/websites/GuFengMH8_e2e.ts +++ b/web/src/engine/websites/GuFengMH8_e2e.ts @@ -6,7 +6,7 @@ const config = { title: '古风漫画网 (GuFengMH8)' }, container: { - url: 'https://www.gufengmh9.com/manhua/moshifanren/', + url: 'https://www.gufengmh.com/manhua/moshifanren/', id: '/manhua/moshifanren/', title: '末世凡人' }, diff --git a/web/src/engine/websites/KlikManga.ts b/web/src/engine/websites/KlikManga.ts index 77ac7b92d4..4d24ebd64a 100755 --- a/web/src/engine/websites/KlikManga.ts +++ b/web/src/engine/websites/KlikManga.ts @@ -12,7 +12,7 @@ import * as Common from './decorators/Common'; export default class extends DecoratableMangaScraper { public constructor() { - super('klikmanga', 'KlikManga', 'https://klikmanga.id', Tags.Media.Manga, Tags.Media.Manhwa, Tags.Media.Manhua, Tags.Language.Indonesian); + super('klikmanga', 'KlikManga', 'https://klikmanga.com', Tags.Media.Manga, Tags.Media.Manhwa, Tags.Media.Manhua, Tags.Language.Indonesian); } public override get Icon() { diff --git a/web/src/engine/websites/KlikManga_e2e.ts b/web/src/engine/websites/KlikManga_e2e.ts index 33e3ca42f7..25c4b845ff 100755 --- a/web/src/engine/websites/KlikManga_e2e.ts +++ b/web/src/engine/websites/KlikManga_e2e.ts @@ -6,7 +6,7 @@ const config = { title: 'KlikManga' }, container: { - url: 'https://klikmanga.id/manga/yuusha-yamemasu/', + url: 'https://klikmanga.com/manga/yuusha-yamemasu/', id: JSON.stringify({ post: '1851', slug: '/manga/yuusha-yamemasu/' }), title: 'Yuusha, Yamemasu' }, diff --git a/web/src/engine/websites/KolNovel.ts b/web/src/engine/websites/KolNovel.ts index ea242f8bbd..dcd479f06f 100644 --- a/web/src/engine/websites/KolNovel.ts +++ b/web/src/engine/websites/KolNovel.ts @@ -14,7 +14,7 @@ import * as Common from './decorators/Common'; export default class extends DecoratableMangaScraper { public constructor() { - super('kolnovel', 'Kol Novel (ملوك الروايات)', 'https://kolnovel.online', Tags.Media.Manga, Tags.Media.Manhwa, Tags.Media.Manhua, Tags.Media.Novel, Tags.Language.Arabic, Tags.Source.Aggregator); + super('kolnovel', 'Kol Novel (ملوك الروايات)', 'https://kolnovel.com', Tags.Media.Manga, Tags.Media.Manhwa, Tags.Media.Manhua, Tags.Media.Novel, Tags.Language.Arabic, Tags.Source.Aggregator); } public override get Icon() { diff --git a/web/src/engine/websites/KolNovel_e2e.ts b/web/src/engine/websites/KolNovel_e2e.ts index 475ef8c59e..5ccf56ec32 100644 --- a/web/src/engine/websites/KolNovel_e2e.ts +++ b/web/src/engine/websites/KolNovel_e2e.ts @@ -6,7 +6,7 @@ const config: Config = { title: 'Kol Novel (ملوك الروايات)' }/*, container: { - url: 'https://kolnovel.online/manga/.../', + url: 'https://kolnovel.com/manga/.../', id: '/manga/.../', title: 'Manga ?' }, diff --git a/web/src/engine/websites/MangaSwat.ts b/web/src/engine/websites/MangaSwat.ts index 136aad9ba0..a675330153 100644 --- a/web/src/engine/websites/MangaSwat.ts +++ b/web/src/engine/websites/MangaSwat.ts @@ -12,7 +12,7 @@ import * as Common from './decorators/Common'; export default class extends DecoratableMangaScraper { public constructor() { - super('mangaswat', 'MangaSwat', 'https://healteer.com', Tags.Media.Manhwa, Tags.Media.Manhua, Tags.Language.Arabic, Tags.Source.Aggregator); + super('mangaswat', 'MangaSwat', 'https://swatscans.com', Tags.Media.Manhwa, Tags.Media.Manhua, Tags.Language.Arabic, Tags.Source.Aggregator); } public override get Icon() { diff --git a/web/src/engine/websites/MangaSwat_e2e.ts b/web/src/engine/websites/MangaSwat_e2e.ts index dbbe1c9d62..4836195350 100644 --- a/web/src/engine/websites/MangaSwat_e2e.ts +++ b/web/src/engine/websites/MangaSwat_e2e.ts @@ -6,7 +6,7 @@ const config: Config = { title: 'MangaSwat' }, /* CloudFlare container: { - url: 'https://healteer.com/manga/emperor-and-the-female-knight', + url: 'https://swatscans.com/manga/emperor-and-the-female-knight', id: '/manga/emperor-and-the-female-knight', title: 'Emperor And The Female Knight' }, diff --git a/web/src/engine/websites/Mangaz.ts b/web/src/engine/websites/Mangaz.ts deleted file mode 100644 index 3ab21a7598..0000000000 --- a/web/src/engine/websites/Mangaz.ts +++ /dev/null @@ -1,98 +0,0 @@ -import { Tags } from '../Tags'; -import icon from './Mangaz.webp'; -import { Chapter, DecoratableMangaScraper, Manga, Page, type MangaPlugin } from '../providers/MangaPlugin'; -import { FetchCSS, FetchWindowScript } from '../platform/FetchProvider'; -import * as Common from './decorators/Common'; -import { type Priority } from './../taskpool/TaskPool'; -import DeScramble from '../transformers/ImageDescrambler'; - -type ImagePath = { - img: string, - scrambleData: ScrambleData -} - -type ScrambleData = { - h: number, - w: number, - crops: { - h: number, - w: number, - x: number, - x2: number, - y: number, - y2: number - }[] -} - -@Common.MangaCSS(/^{origin}\/series\/detail\/\d+$/, 'li.title') -export default class extends DecoratableMangaScraper { - - public constructor() { - super('mangaz', `Manga Library Z (マンガ図書館Z)`, 'https://www.mangaz.com', Tags.Language.Japanese, Tags.Source.Official, Tags.Media.Manga); - } - - public override get Icon() { - return icon; - } - - public override async FetchMangas(provider: MangaPlugin): Promise { - const mangaList: Manga[] = []; - for (let page = 0, run = true; run; page++) { - const mangas = await this.GetMangasFromPage(page, provider); - mangas.length > 0 ? mangaList.push(...mangas) : run = false; - } - return mangaList; - } - - private async GetMangasFromPage(page: number, provider: MangaPlugin): Promise { - const request = new Request(new URL(`/title/addpage_renewal?query=&page=${page}`, this.URI), { - method: 'GET', - headers: { - 'X-Requested-With': 'XMLHttpRequest' - } - }); - const data = await FetchCSS(request, 'h4 > a'); - return data.map(element => new Manga(this, provider, element.pathname, element.text.trim())); - } - - public override async FetchChapters(manga: Manga): Promise { - const request = new Request(new URL(manga.Identifier, this.URI)); - const data = await FetchCSS(request, 'body'); - if(data[0].querySelector('li.item')) { - return [ ...data[0].querySelectorAll('li.item') ] - .map(ele => new Chapter(this, manga, ele.querySelector('button').dataset['url'].replace('navi', 'virgo/view'), ele.querySelector('span.title').textContent.trim())); - } else { - return [ new Chapter(this, manga, data[0].querySelector('button').dataset['url'].replace('navi', 'virgo/view'), manga.Title) ]; - } - } - - public override async FetchPages(chapter: Chapter): Promise { - const script = ` - new Promise(resolve => { - const jNamespace = JCOMI.namespace("JCOMI.document"); - const jDocument = jNamespace.getDoc(); - const enc = jDocument.Location.enc ? 'enc' : 'anne'; - const imgs = jNamespace.getOrders().map(ele => { - const img = jNamespace.getLocationDirAnne(enc) + ele.name + "?" + jDocument.verkey; - return { img, scrambleData : ele.scramble }; - }); - resolve(imgs); - }); - `; - const request = new Request(new URL(chapter.Identifier, this.URI)); - const data = await FetchWindowScript(request, script, 2500); - return data.map(image => new Page(this, chapter, new URL(image.img, this.URI), image.scrambleData)); - } - - public override async FetchImage(page: Page, priority: Priority, signal: AbortSignal): Promise { - const blob = await Common.FetchImageAjax.call(this, page, priority, signal); - const scrambleData = page.Parameters; - return DeScramble(blob, async (image, ctx) => { - ctx.canvas.width = scrambleData.w; - ctx.canvas.height = scrambleData.h; - for (let crop of scrambleData.crops) { - ctx.drawImage(image, crop.x2, crop.y2, crop.w, crop.h, crop.x, crop.y, crop.w, crop.h); - } - }); - } -} \ No newline at end of file diff --git a/web/src/engine/websites/Mangaz.webp b/web/src/engine/websites/Mangaz.webp deleted file mode 100644 index de5d0fe569..0000000000 Binary files a/web/src/engine/websites/Mangaz.webp and /dev/null differ diff --git a/web/src/engine/websites/Mangaz_e2e.ts b/web/src/engine/websites/Mangaz_e2e.ts deleted file mode 100644 index 1c7466ce47..0000000000 --- a/web/src/engine/websites/Mangaz_e2e.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { TestFixture, type Config } from '../../../test/WebsitesFixture'; - -const config: Config = { - plugin: { - id: 'mangaz', - title: 'Manga Library Z (マンガ図書館Z)' - }, - container: { - url: 'https://www.mangaz.com/series/detail/207781', - id: '/series/detail/207781', - title: '海底軍艦' - }, - child: { - id: 'https://vw.mangaz.com/virgo/view/207781/i:0', - title: '1' - }, - entry: { - index: 7, - size: 704_362, - type: 'image/png' - } -}; - -new TestFixture(config).AssertWebsite(); \ No newline at end of file diff --git a/web/src/engine/websites/Mi2mangaES.ts b/web/src/engine/websites/Mi2mangaES.ts index fb865d7c83..22558b4a2c 100644 --- a/web/src/engine/websites/Mi2mangaES.ts +++ b/web/src/engine/websites/Mi2mangaES.ts @@ -12,7 +12,7 @@ import * as Common from './decorators/Common'; export default class extends DecoratableMangaScraper { public constructor() { - super('mi2mangaes', 'Mi2mangaES', 'https://es.mi2manga.com', Tags.Media.Manhwa, Tags.Language.Spanish, Tags.Source.Aggregator); + super('mi2mangaes', 'Mi2mangaES', 'https://mi2manga.lat', Tags.Media.Manhwa, Tags.Language.Spanish, Tags.Source.Aggregator); } public override get Icon() { diff --git a/web/src/engine/websites/Mi2mangaES_e2e.ts b/web/src/engine/websites/Mi2mangaES_e2e.ts index 75f46c7913..50f687186e 100644 --- a/web/src/engine/websites/Mi2mangaES_e2e.ts +++ b/web/src/engine/websites/Mi2mangaES_e2e.ts @@ -6,8 +6,8 @@ const config = { title: 'Mi2mangaES' }, container: { - url: 'https://es.mi2manga.com/manga/la-tirana-quiere-vivir-honestamente/', - id: JSON.stringify({ slug: '/manga/la-tirana-quiere-vivir-honestamente/' }), + url: 'https://mi2manga.lat/manga/la-tirana-quiere-vivir-honestamente/', + id: JSON.stringify({ post: "2101", slug: '/manga/la-tirana-quiere-vivir-honestamente/' }), title: 'La Tirana Quiere Vivir Honestamente' }, child: { diff --git a/web/src/engine/websites/SeiManga.ts b/web/src/engine/websites/SeiManga.ts index 9962c24a4b..1b46e036b7 100644 --- a/web/src/engine/websites/SeiManga.ts +++ b/web/src/engine/websites/SeiManga.ts @@ -11,7 +11,7 @@ import * as Grouple from './decorators/Grouple'; @Grouple.ImageAjaxWithMirrors() export default class extends DecoratableMangaScraper { public constructor() { - super('seimanga', `SeiManga`, 'https://seimanga.me', Tags.Language.Russian, Tags.Media.Manga, Tags.Media.Manhua, Tags.Media.Manhwa, Tags.Source.Aggregator); + super('seimanga', `SeiManga`, 'https://1.seimanga.me', Tags.Language.Russian, Tags.Media.Manga, Tags.Media.Manhua, Tags.Media.Manhwa, Tags.Source.Aggregator); } public override get Icon() { diff --git a/web/src/engine/websites/SeiManga_e2e.ts b/web/src/engine/websites/SeiManga_e2e.ts index 3bee3f882b..41b493430a 100644 --- a/web/src/engine/websites/SeiManga_e2e.ts +++ b/web/src/engine/websites/SeiManga_e2e.ts @@ -6,7 +6,7 @@ const config: Config = { title: 'SeiManga' }, container: { - url: 'https://seimanga.me/sword_art_online__progressiv___skerco_glubokoi_nochi/', + url: 'https://1.seimanga.me/sword_art_online__progressiv___skerco_glubokoi_nochi/', id: '/sword_art_online__progressiv___skerco_glubokoi_nochi/', title: 'Sword Art Online: Прогрессив - Скерцо глубокой ночи', }, diff --git a/web/src/engine/websites/WordHero.ts b/web/src/engine/websites/WordHero.ts deleted file mode 100644 index 9d328d5474..0000000000 --- a/web/src/engine/websites/WordHero.ts +++ /dev/null @@ -1,38 +0,0 @@ -// Auto-Generated export from HakuNeko Legacy -import { Tags } from '../Tags'; -import icon from './WordHero.webp'; -import { DecoratableMangaScraper } from '../providers/MangaPlugin'; -import * as MangaStream from './decorators/WordPressMangaStream'; -import * as Common from './decorators/Common'; - -@MangaStream.MangaCSS(/^https?:\/\/wordhero\.my\.id\/manga\/[^/]+\/$/) -@MangaStream.MangasSinglePageCSS() -@MangaStream.ChaptersSinglePageCSS() -@MangaStream.PagesSinglePageCSS() -@Common.ImageAjax() -export default class extends DecoratableMangaScraper { - - public constructor() { - super('wordhero', 'WordHero', 'https://www.wordhero.my.id', Tags.Media.Manhwa, Tags.Media.Manhua, Tags.Language.English, Tags.Rating.Erotica); - } - - public override get Icon() { - return icon; - } -} - -// Original Source -/* -class WordHero extends WordPressMangastream { - - constructor() { - super(); - super.id = 'wordhero'; - super.label = 'WordHero'; - this.tags = [ 'webtoon', 'hentai', 'english' ]; - this.url = 'https://wordhero.my.id'; - this.path = '/manga/list-mode/'; - } - -} -*/ \ No newline at end of file diff --git a/web/src/engine/websites/WordHero.webp b/web/src/engine/websites/WordHero.webp deleted file mode 100644 index f57c49a943..0000000000 Binary files a/web/src/engine/websites/WordHero.webp and /dev/null differ diff --git a/web/src/engine/websites/WordHero_e2e.ts b/web/src/engine/websites/WordHero_e2e.ts deleted file mode 100644 index 5fdc9a6fcb..0000000000 --- a/web/src/engine/websites/WordHero_e2e.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { TestFixture, type Config } from '../../../test/WebsitesFixture'; - -const config: Config = { - plugin: { - id: 'wordhero', - title: 'WordHero' - }/*, - container: { - url: 'https://www.wordhero.my.id/manga/.../', - id: '/manga/.../', - title: 'Manga ?' - }, - child: { - id: '/manga/.../.../', - title: 'Chapter ?' - }, - entry: { - index: 0, - size: -1, - type: 'image/jpeg' - }*/ -}; - -new TestFixture(config).AssertWebsite(); \ No newline at end of file diff --git a/web/src/engine/websites/WorldManhwas.ts b/web/src/engine/websites/WorldManhwas.ts deleted file mode 100644 index b314766f18..0000000000 --- a/web/src/engine/websites/WorldManhwas.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Tags } from '../Tags'; -import icon from './WorldManhwas.webp'; -import { DecoratableMangaScraper } from '../providers/MangaPlugin'; -import * as Madara from './decorators/WordPressMadara'; -import * as Common from './decorators/Common'; - -@Madara.MangaCSS(/^{origin}\/komik\/[^/]+\/$/, 'meta[property="og:title"]:not([content*="WorldManhwas"])') -@Madara.MangasMultiPageAJAX() -@Madara.ChaptersSinglePageAJAXv2() -@Madara.PagesSinglePageCSS() -@Common.ImageAjax() -export default class extends DecoratableMangaScraper { - - public constructor() { - super('worldmanhwas', 'WorldManhwas', 'https://worldmanhwas.zone', Tags.Media.Manhwa, Tags.Language.Portuguese, Tags.Source.Aggregator, Tags.Rating.Pornographic); - } - - public override get Icon() { - return icon; - } -} \ No newline at end of file diff --git a/web/src/engine/websites/WorldManhwas.webp b/web/src/engine/websites/WorldManhwas.webp deleted file mode 100644 index fc44e40813..0000000000 Binary files a/web/src/engine/websites/WorldManhwas.webp and /dev/null differ diff --git a/web/src/engine/websites/WorldManhwas_e2e.ts b/web/src/engine/websites/WorldManhwas_e2e.ts deleted file mode 100644 index cf264761fb..0000000000 --- a/web/src/engine/websites/WorldManhwas_e2e.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { TestFixture } from '../../../test/WebsitesFixture'; - -const config = { - plugin: { - id: 'worldmanhwas', - title: 'WorldManhwas' - }, - container: { - url: 'https://worldmanhwas.zone/komik/young-maid/', - id: JSON.stringify({ post: '2115', slug: '/komik/young-maid/' }), - title: 'Young Maid' - }, - child: { - id: '/komik/young-maid/chapter-50/', - title: 'Chapter 50' - }, - entry: { - index: 1, - size: 766_435, - type: 'image/jpeg' - } -}; - -new TestFixture(config).AssertWebsite(); \ No newline at end of file diff --git a/web/src/engine/websites/XManhwa.ts b/web/src/engine/websites/XManhwa.ts index bd721560fc..385e4ca171 100644 --- a/web/src/engine/websites/XManhwa.ts +++ b/web/src/engine/websites/XManhwa.ts @@ -12,7 +12,7 @@ import * as Common from './decorators/Common'; export default class extends DecoratableMangaScraper { public constructor() { - super('xmanhwa', 'XManhwa', 'https://www.xmanhwa.me', Tags.Media.Manhwa, Tags.Media.Manhua, Tags.Language.English, Tags.Rating.Pornographic); + super('xmanhwa', 'XManhwa', 'https://www.manhwaden.com', Tags.Media.Manhwa, Tags.Media.Manhua, Tags.Language.English, Tags.Rating.Pornographic); } public override get Icon() { diff --git a/web/src/engine/websites/XManhwa_e2e.ts b/web/src/engine/websites/XManhwa_e2e.ts index 6bdf5ae118..7090a5b481 100644 --- a/web/src/engine/websites/XManhwa_e2e.ts +++ b/web/src/engine/websites/XManhwa_e2e.ts @@ -6,17 +6,17 @@ const config = { title: 'XManhwa' }, container: { - url: 'https://www.xmanhwa.me/manga/cold-hot/', - id: JSON.stringify({ post: '25936', slug: '/manga/cold-hot/' }), - title: 'Cold? Hot!' + url: 'https://www.manhwaden.com/manga/someone-stop-her/', + id: JSON.stringify({ post: '28394', slug: '/manga/someone-stop-her/' }), + title: 'Someone Stop Her!' }, child: { - id: '/manga/cold-hot/chapter-1/', + id: '/manga/someone-stop-her/chapter-1/', title: 'Chapter 1' }, entry: { index: 0, - size: 193_651, + size: 52_837, type: 'image/jpeg' } }; diff --git a/web/src/engine/websites/_index.ts b/web/src/engine/websites/_index.ts index 07aba17b4b..2f559c26bd 100755 --- a/web/src/engine/websites/_index.ts +++ b/web/src/engine/websites/_index.ts @@ -397,7 +397,6 @@ export { default as MangaWorldAdult } from './MangaWorldAdult'; export { default as MangaWOW } from './MangaWOW'; export { default as MangaWT } from './MangaWT'; export { default as Mangayaro } from './Mangayaro'; -export { default as Mangaz } from './Mangaz'; export { default as Mangazure } from './Mangazure'; export { default as ManHastro } from './ManHastro'; export { default as ManHatic } from './ManHatic'; @@ -700,8 +699,6 @@ export { default as WestManga } from './WestManga'; export { default as WinterScan } from './WinterScan'; export { default as Wnacg } from './Wnacg'; export { default as WonderlandWebtoons } from './WonderlandWebtoons'; -export { default as WordHero } from './WordHero'; -export { default as WorldManhwas } from './WorldManhwas'; export { default as XCaliBRScans } from './XCaliBRScans'; export { default as xianman123 } from './xianman123'; export { default as XlecX } from './XlecX';