From ffca80f5ddded1e263424262b8490635a8ea3b64 Mon Sep 17 00:00:00 2001 From: MikeZeDev Date: Sat, 4 May 2024 15:38:40 +0000 Subject: [PATCH] Fix ManhwaClub => Become ManhwaHentai (#7019) * Fix ManhwaClub => Become ManhwaHentai Fixes https://github.com/manga-download/hakuneko/issues/6863 Fixes https://github.com/manga-download/hakuneko/issues/6115 * Add files via upload --- src/web/img/connectors/manhwaclub | Bin 1529 -> 5466 bytes src/web/mjs/connectors/ManhwaClub.mjs | 76 +++++++++++--------------- 2 files changed, 33 insertions(+), 43 deletions(-) diff --git a/src/web/img/connectors/manhwaclub b/src/web/img/connectors/manhwaclub index 2c57ccb0c489d0f9cb5e9099e5840e4f1ae3c9c6..69a008aaa16d699f389fb893724c36b32afb760f 100644 GIT binary patch literal 5466 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 QUjP6A07*qoM6N<$f?LRP*#H0l literal 1529 zcmVja>99uv8`KAm~w23XJj0D}dfIJ|JFr39w}C0`NAl6nF)w7Eg4L z4m5}`Kp$Ydj7xw?H{?tRm}1#sT|6}%@QL9azyrWY;XMgF0xWl;kqy8Lz+B+qjR5Wt z;gsaW49gCiKshi__>KdYWjqb&4%{g`01ogYFi~{4zz1mGu0MzU3)1GS>0pTw`y zUcNSf15CmM-M134!9y`;Gyb$w2H!!Dp*N^Tjj z*s{asCpiT~fALIx9R`Y66~@gjEuX`+y}9w%OvHP5|0G^8+GWBg!M<(kxXA zh#L8}dYV`k9+C1H_L|U@~8k}e(=DB!~*mseo zMkgA%cC+M?1hk~2bEQ?E0dOG1#z;i&6-nEe2sj~@;C`SthaT_iX z+qa$giDPuBoKNa}Ep3N)cL)cDk0CU+f@`0DK>Awd9pfu1CU5Q{Vtcn?_A4bY!tUT# zu^6#~-w>}l)&W`vRsltNUOt6OSJ0($0d7M*?MDxz=jD@Exd2~5A;D4O@ee5LjJ~Hu zXj}za;QEcNg>ngvtH9T-1plC+1csNRk||U?j@iGI!lf%QdRd)35C8~`pMrnzNSZdh zPTP_F;JUPa{Uv&C9&U5f-;QzWqC?Yruc6}Y_)CY-ZPi-*1IkEUsODCs~tu38S_?MHcsF*IZ=Alw4{DX#}X&R}^b)7r_x{jWcORD|?DwX<& zb*0?^pgXxU=VfB<^MPSt_Aez-eFBuq08q&Ui8Iv%huipyOK=i8rD&7W$nF*7e z%9mdRrk`|srokr9p5p4-)u==qd_D>uT~5x#X~gzyL&e+014_}heA?}q+q?|Ju z)u|*Z5y$A!8%#fXK_RLw2I;gX1VG~SNt!mkLDvP3({06?OehS4_M?Z;3=@@z6C694 z;ONYgv31Wjnm=4e^C$0;|L_wOzqk%GNH<-jdGmVQ#s*X}V>~oz8eQit0!_zlx 0 ? mangaList.push(...mangas) : run = false; - } - return mangaList; - } - async _getMangasFromPage(page) { - const uri = new URL(this.apiURL + '?page=' + page, this.url); - const request = new Request(uri, this.requestOptions); - const data = await this.fetchJSON(request); - return data.data.map(element => { - return { - id: element.slug, - title: element.title.trim() - }; - }); + this.url = 'https://manhwahentai.to'; + this.queryMangas = 'div.post_title a'; + this.queryTitleForURI = 'div.post-summary div.post-title'; } + async _getChapters(manga) { - const uri = new URL(this.apiURL + '/' + manga.id+'/chapters', this.url); - const request = new Request(uri, this.requestOptions); - const data = await this.fetchJSON(request); - return data.map(element => { + const request = new Request(new URL(manga.id, this.url)); + const script = ` + new Promise((resolve) => { + setTimeout(() => { + resolve(manga.manga_id); + }, 1500); + }); + `; + const mangaid = await Engine.Request.fetchUI(request, script); + const url = new URL(`/wp-admin/admin-ajax.php?action=get-all-chapters-list&post_id=${mangaid}&chapters_per_page=9999&offset=0`, this.url); + const { data } = await this.fetchJSON(new Request(url)); + const dom = new DOMParser().parseFromString(data, 'text/html'); + const links = [...dom.querySelectorAll('li a')]; + return links.map(chapter => { return { - id: element.slug, - title: element.name.trim(), + id: `${mangaid.slug}${chapter.pathname.split('/').pop()}`, + title: chapter.querySelector('p.truncate').textContent.trim() }; }); } + async _getPages(chapter) { - const uri = new URL(this.apiURL + '/' + chapter.manga.id+'/'+ chapter.id+'/images', this.url); - const request = new Request(uri, this.requestOptions); - const data = await this.fetchJSON(request); - return data.images.map(element => element.source_url); + const request = new Request(new URL(chapter.id, this.url)); + const script = ` + new Promise((resolve) => { + setTimeout(() => { + resolve(chapter_preloaded_images.map(image => image.src.replace('http://', 'https://'))); + }, 1500); + }); + `; + return Engine.Request.fetchUI(request, script); } }