diff --git a/multisrc/overrides/madara/adultwebtoon/src/AdultWebtoon.kt b/multisrc/overrides/madara/adultwebtoon/src/AdultWebtoon.kt index c0e0698f6..6723ba954 100644 --- a/multisrc/overrides/madara/adultwebtoon/src/AdultWebtoon.kt +++ b/multisrc/overrides/madara/adultwebtoon/src/AdultWebtoon.kt @@ -6,13 +6,11 @@ import okhttp3.CacheControl import okhttp3.Request class AdultWebtoon : Madara("Adult Webtoon", "https://adultwebtoon.com", "en") { - - override val useLoadMoreSearch = false override fun popularMangaRequest(page: Int): Request { val pageSuffix = if (page != 1) "page/$page/" else "" return GET( "$baseUrl/manga/$pageSuffix?m_orderby=trending", - formHeaders, + headers, CacheControl.FORCE_NETWORK, ) } @@ -20,7 +18,7 @@ class AdultWebtoon : Madara("Adult Webtoon", "https://adultwebtoon.com", "en") { val pageSuffix = if (page != 1) "page/$page/" else "" return GET( "$baseUrl/manga/$pageSuffix?m_orderby=latest", - formHeaders, + headers, CacheControl.FORCE_NETWORK, ) } diff --git a/multisrc/overrides/madara/aiyumanga/src/AiYuManga.kt b/multisrc/overrides/madara/aiyumanga/src/AiYuManga.kt index 5b63c1ef8..d25ff29fe 100644 --- a/multisrc/overrides/madara/aiyumanga/src/AiYuManga.kt +++ b/multisrc/overrides/madara/aiyumanga/src/AiYuManga.kt @@ -18,7 +18,6 @@ class AiYuManga : Madara( SimpleDateFormat("MM/dd/yyyy", Locale("es")), ) { override val useNewChapterEndpoint = true - override val useLoadMoreSearch = true override val chapterUrlSuffix = "" override val mangaDetailsSelectorStatus = "div.post-content_item:contains(Status) > div.summary-content" diff --git a/multisrc/overrides/madara/araznovel/src/ArazNovel.kt b/multisrc/overrides/madara/araznovel/src/ArazNovel.kt index 666733db5..a26379ba8 100644 --- a/multisrc/overrides/madara/araznovel/src/ArazNovel.kt +++ b/multisrc/overrides/madara/araznovel/src/ArazNovel.kt @@ -3,14 +3,11 @@ package eu.kanade.tachiyomi.extension.tr.araznovel import eu.kanade.tachiyomi.multisrc.madara.Madara import eu.kanade.tachiyomi.source.model.SChapter import eu.kanade.tachiyomi.util.asJsoup -import okhttp3.FormBody import okhttp3.Response import java.text.SimpleDateFormat import java.util.Locale class ArazNovel : Madara("ArazNovel", "https://www.araznovel.com", "tr", SimpleDateFormat("dd/MM/yyyy", Locale.getDefault())) { - override fun formBuilder(page: Int, popular: Boolean): FormBody.Builder = super.formBuilder(page, popular) - .add("vars[meta_query][0][0][value]", "manga") override fun chapterListParse(response: Response): List { val document = response.asJsoup() diff --git a/multisrc/overrides/madara/doujinhentai/src/DoujinHentai.kt b/multisrc/overrides/madara/doujinhentai/src/DoujinHentai.kt index 70a749d18..d27a608bf 100644 --- a/multisrc/overrides/madara/doujinhentai/src/DoujinHentai.kt +++ b/multisrc/overrides/madara/doujinhentai/src/DoujinHentai.kt @@ -18,7 +18,6 @@ class DoujinHentai : Madara( SimpleDateFormat("d MMM. yyyy", Locale.ENGLISH), ) { - override val useLoadMoreSearch = false override val fetchGenres = false override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/lista-manga-hentai?orderby=views&page=$page", headers) diff --git a/multisrc/overrides/madara/egymanga/src/EGYManga.kt b/multisrc/overrides/madara/egymanga/src/EGYManga.kt index 51450ca47..1a7f9cd67 100644 --- a/multisrc/overrides/madara/egymanga/src/EGYManga.kt +++ b/multisrc/overrides/madara/egymanga/src/EGYManga.kt @@ -14,7 +14,6 @@ class EGYManga : Madara( ) { // The website does not flag the content. - override val useLoadMoreSearch = false override val filterNonMangaItems = false override val pageListParseSelector = "div.separator" diff --git a/multisrc/overrides/madara/freemangatop/src/FreeMangaTop.kt b/multisrc/overrides/madara/freemangatop/src/FreeMangaTop.kt index ca6328f80..afd08f969 100644 --- a/multisrc/overrides/madara/freemangatop/src/FreeMangaTop.kt +++ b/multisrc/overrides/madara/freemangatop/src/FreeMangaTop.kt @@ -5,6 +5,5 @@ import eu.kanade.tachiyomi.multisrc.madara.Madara class FreeMangaTop : Madara("FreeMangaTop", "https://freemangatop.com", "en") { // The website does not flag the content. - override val useLoadMoreSearch = false override val filterNonMangaItems = false } diff --git a/multisrc/overrides/madara/hentaicube/src/HentaiCB.kt b/multisrc/overrides/madara/hentaicube/src/HentaiCB.kt index 354b1c745..3ef2ebd2c 100644 --- a/multisrc/overrides/madara/hentaicube/src/HentaiCB.kt +++ b/multisrc/overrides/madara/hentaicube/src/HentaiCB.kt @@ -1,32 +1,14 @@ package eu.kanade.tachiyomi.extension.vi.hentaicube import eu.kanade.tachiyomi.multisrc.madara.Madara -import eu.kanade.tachiyomi.network.GET import eu.kanade.tachiyomi.source.model.Page -import okhttp3.CacheControl -import okhttp3.Request import org.jsoup.nodes.Document import java.text.SimpleDateFormat import java.util.Locale class HentaiCB : Madara("Hentai CB", "https://hencb.top", "vi", SimpleDateFormat("dd/MM/yyyy", Locale("vi"))) { override val id: Long = 823638192569572166 - override val useLoadMoreSearch = false override fun pageListParse(document: Document): List { return super.pageListParse(document).distinctBy { it.imageUrl } } - override fun popularMangaRequest(page: Int): Request { - return GET( - "$baseUrl/manga/page/$page/?m_orderby=views", - formHeaders, - CacheControl.FORCE_NETWORK, - ) - } - override fun latestUpdatesRequest(page: Int): Request { - return GET( - "$baseUrl/manga/page/$page/?m_orderby=latest", - formHeaders, - CacheControl.FORCE_NETWORK, - ) - } } diff --git a/multisrc/overrides/madara/hentaimanga/src/HentaiManga.kt b/multisrc/overrides/madara/hentaimanga/src/HentaiManga.kt index bbdeaf1c2..822546bd2 100644 --- a/multisrc/overrides/madara/hentaimanga/src/HentaiManga.kt +++ b/multisrc/overrides/madara/hentaimanga/src/HentaiManga.kt @@ -12,6 +12,5 @@ class HentaiManga : Madara( ) { // The website does not flag the content. - override val useLoadMoreSearch = false override val filterNonMangaItems = false } diff --git a/multisrc/overrides/madara/hentaiwebtoon/src/HentaiWebtoon.kt b/multisrc/overrides/madara/hentaiwebtoon/src/HentaiWebtoon.kt index 64bcff034..7ce87023a 100644 --- a/multisrc/overrides/madara/hentaiwebtoon/src/HentaiWebtoon.kt +++ b/multisrc/overrides/madara/hentaiwebtoon/src/HentaiWebtoon.kt @@ -5,6 +5,5 @@ import eu.kanade.tachiyomi.multisrc.madara.Madara class HentaiWebtoon : Madara("HentaiWebtoon", "https://hentaiwebtoon.com", "en") { // The website does not flag the content. - override val useLoadMoreSearch = false override val filterNonMangaItems = false } diff --git a/multisrc/overrides/madara/inarimanga/src/InariManga.kt b/multisrc/overrides/madara/inarimanga/src/InariManga.kt index 6fa129906..3e88f1788 100644 --- a/multisrc/overrides/madara/inarimanga/src/InariManga.kt +++ b/multisrc/overrides/madara/inarimanga/src/InariManga.kt @@ -23,7 +23,6 @@ class InariManga : Madara( override val mangaDetailsSelectorStatus = "div.card-body tr:has(th:contains(Estatus)) > td" override val mangaDetailsSelectorGenre = "div.my-auto > div.inline-block > a" - override val useLoadMoreSearch = false override val useNewChapterEndpoint = true override fun chapterListSelector() = "tr.wp-manga-chapter" diff --git a/multisrc/overrides/madara/instamanhwa/src/InstaManhwa.kt b/multisrc/overrides/madara/instamanhwa/src/InstaManhwa.kt index 44c2303e6..a9986acc2 100644 --- a/multisrc/overrides/madara/instamanhwa/src/InstaManhwa.kt +++ b/multisrc/overrides/madara/instamanhwa/src/InstaManhwa.kt @@ -23,7 +23,6 @@ class InstaManhwa : Madara( ) { override val supportsLatest: Boolean = false - override val useLoadMoreSearch = false override val fetchGenres = false override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/latest?page=$page", headers) diff --git a/multisrc/overrides/madara/manga18fx/src/Manga18fx.kt b/multisrc/overrides/madara/manga18fx/src/Manga18fx.kt index 320ded7bf..43592535d 100644 --- a/multisrc/overrides/madara/manga18fx/src/Manga18fx.kt +++ b/multisrc/overrides/madara/manga18fx/src/Manga18fx.kt @@ -30,7 +30,6 @@ class Manga18fx : Madara( override val fetchGenres = false override val sendViewCount = false - override val useLoadMoreSearch = false override fun popularMangaRequest(page: Int) = GET(baseUrl, headers) diff --git a/multisrc/overrides/madara/mangagreat/src/MangaGreat.kt b/multisrc/overrides/madara/mangagreat/src/MangaGreat.kt index f954f43aa..6fddf8cf0 100644 --- a/multisrc/overrides/madara/mangagreat/src/MangaGreat.kt +++ b/multisrc/overrides/madara/mangagreat/src/MangaGreat.kt @@ -5,6 +5,5 @@ import eu.kanade.tachiyomi.multisrc.madara.Madara class MangaGreat : Madara("MangaGreat", "https://mangagreat.com", "en") { // The website does not flag the content. - override val useLoadMoreSearch = false override val filterNonMangaItems = false } diff --git a/multisrc/overrides/madara/manhuaes/src/ManhuaES.kt b/multisrc/overrides/madara/manhuaes/src/ManhuaES.kt index d9d68210f..7fae16a45 100644 --- a/multisrc/overrides/madara/manhuaes/src/ManhuaES.kt +++ b/multisrc/overrides/madara/manhuaes/src/ManhuaES.kt @@ -9,7 +9,6 @@ import okhttp3.Response class ManhuaES : Madara("Manhua ES", "https://manhuaes.com", "en") { // The website does not flag the content. - override val useLoadMoreSearch = false override val filterNonMangaItems = false override fun chapterListParse(response: Response): List { diff --git a/multisrc/overrides/madara/manhuafast/src/ManhuaFast.kt b/multisrc/overrides/madara/manhuafast/src/ManhuaFast.kt index a095c6694..3550ef28b 100644 --- a/multisrc/overrides/madara/manhuafast/src/ManhuaFast.kt +++ b/multisrc/overrides/madara/manhuafast/src/ManhuaFast.kt @@ -5,6 +5,5 @@ import eu.kanade.tachiyomi.multisrc.madara.Madara class ManhuaFast : Madara("ManhuaFast", "https://manhuafast.com", "en") { // The website does not flag the content. - override val useLoadMoreSearch = false override val filterNonMangaItems = false } diff --git a/multisrc/overrides/madara/manhuaplus/src/ManhuaPlus.kt b/multisrc/overrides/madara/manhuaplus/src/ManhuaPlus.kt index 1f612df65..308edff19 100644 --- a/multisrc/overrides/madara/manhuaplus/src/ManhuaPlus.kt +++ b/multisrc/overrides/madara/manhuaplus/src/ManhuaPlus.kt @@ -5,7 +5,6 @@ import eu.kanade.tachiyomi.multisrc.madara.Madara class ManhuaPlus : Madara("Manhua Plus", "https://manhuaplus.com", "en") { // The website does not flag the content. - override val useLoadMoreSearch = false override val filterNonMangaItems = false override val pageListParseSelector = ".read-container img" diff --git a/multisrc/overrides/madara/manhuaus/src/ManhuaUS.kt b/multisrc/overrides/madara/manhuaus/src/ManhuaUS.kt index 89460a511..c3ee20e31 100644 --- a/multisrc/overrides/madara/manhuaus/src/ManhuaUS.kt +++ b/multisrc/overrides/madara/manhuaus/src/ManhuaUS.kt @@ -7,6 +7,5 @@ class ManhuaUS : Madara("ManhuaUS", "https://manhuaus.com", "en") { override val useNewChapterEndpoint: Boolean = true // The website does not flag the content. - override val useLoadMoreSearch = false override val filterNonMangaItems = false } diff --git a/multisrc/overrides/madara/manhwa18cc/src/Manhwa18CcFactory.kt b/multisrc/overrides/madara/manhwa18cc/src/Manhwa18CcFactory.kt index 7d58ed2cf..795729c57 100644 --- a/multisrc/overrides/madara/manhwa18cc/src/Manhwa18CcFactory.kt +++ b/multisrc/overrides/madara/manhwa18cc/src/Manhwa18CcFactory.kt @@ -37,8 +37,6 @@ abstract class Manhwa18Cc( lang: String, ) : Madara(name, baseUrl, lang, SimpleDateFormat("dd MMM yyyy", Locale.US)) { - override val useLoadMoreSearch = false - override val fetchGenres = false override fun popularMangaSelector() = "div.manga-item" diff --git a/multisrc/overrides/madara/manhwa18org/src/Manhwa18Org.kt b/multisrc/overrides/madara/manhwa18org/src/Manhwa18Org.kt index d1ab7bc0b..b13e60092 100644 --- a/multisrc/overrides/madara/manhwa18org/src/Manhwa18Org.kt +++ b/multisrc/overrides/madara/manhwa18org/src/Manhwa18Org.kt @@ -5,6 +5,5 @@ import eu.kanade.tachiyomi.multisrc.madara.Madara class Manhwa18Org : Madara("Manhwa18.org", "https://manhwa18.org", "en") { // The website does not flag the content. - override val useLoadMoreSearch = false override val filterNonMangaItems = false } diff --git a/multisrc/overrides/madara/manhwa68/src/Manhwa68.kt b/multisrc/overrides/madara/manhwa68/src/Manhwa68.kt index c6e3622c9..8d19c6f1c 100644 --- a/multisrc/overrides/madara/manhwa68/src/Manhwa68.kt +++ b/multisrc/overrides/madara/manhwa68/src/Manhwa68.kt @@ -12,6 +12,5 @@ class Manhwa68 : Madara( ) { // The website does not flag the content. - override val useLoadMoreSearch = false override val filterNonMangaItems = false } diff --git a/multisrc/overrides/madara/manhwafull/src/Manhwafull.kt b/multisrc/overrides/madara/manhwafull/src/Manhwafull.kt index 44de226e8..77e804e4b 100644 --- a/multisrc/overrides/madara/manhwafull/src/Manhwafull.kt +++ b/multisrc/overrides/madara/manhwafull/src/Manhwafull.kt @@ -7,21 +7,19 @@ import okhttp3.Request class Manhwafull : Madara("Manhwafull", "https://manhwafull.com", "en") { - override val useLoadMoreSearch = false - override fun popularMangaNextPageSelector(): String? = "a.nextpostslink" override fun popularMangaRequest(page: Int): Request { return GET( "$baseUrl/manga-mwf/page/$page/?m_orderby=views", - formHeaders, + headers, CacheControl.FORCE_NETWORK, ) } override fun latestUpdatesRequest(page: Int): Request { return GET( "$baseUrl/manga-mwf/page/$page/?m_orderby=latest", - formHeaders, + headers, CacheControl.FORCE_NETWORK, ) } diff --git a/multisrc/overrides/madara/manhwalatino/src/ManhwaLatino.kt b/multisrc/overrides/madara/manhwalatino/src/ManhwaLatino.kt index 011b46a08..471e5afa0 100644 --- a/multisrc/overrides/madara/manhwalatino/src/ManhwaLatino.kt +++ b/multisrc/overrides/madara/manhwalatino/src/ManhwaLatino.kt @@ -21,8 +21,6 @@ class ManhwaLatino : Madara( override val supportsLatest = false - override val useLoadMoreSearch = false - override val useNewChapterEndpoint = true override val chapterUrlSelector = "a:eq(1)" diff --git a/multisrc/overrides/madara/manhwasmen/src/ManhwasMen.kt b/multisrc/overrides/madara/manhwasmen/src/ManhwasMen.kt index 51a5cb5f4..3a1f5b08a 100644 --- a/multisrc/overrides/madara/manhwasmen/src/ManhwasMen.kt +++ b/multisrc/overrides/madara/manhwasmen/src/ManhwasMen.kt @@ -16,7 +16,6 @@ class ManhwasMen : Madara("Manhwas Men", "https://manhwas.men", "en") { override val fetchGenres = false override val sendViewCount = false - override val useLoadMoreSearch = false // popular override fun popularMangaSelector() = "div.col-6" diff --git a/multisrc/overrides/madara/manhwatop/src/Manhwatop.kt b/multisrc/overrides/madara/manhwatop/src/Manhwatop.kt index 0176c1e9f..63167d2b4 100644 --- a/multisrc/overrides/madara/manhwatop/src/Manhwatop.kt +++ b/multisrc/overrides/madara/manhwatop/src/Manhwatop.kt @@ -5,6 +5,5 @@ import eu.kanade.tachiyomi.multisrc.madara.Madara class Manhwatop : Madara("Manhwatop", "https://manhwatop.com", "en") { // The website does not flag the content. - override val useLoadMoreSearch = false override val filterNonMangaItems = false } diff --git a/multisrc/overrides/madara/manytoonme/src/ManyToonMe.kt b/multisrc/overrides/madara/manytoonme/src/ManyToonMe.kt index 3065ab1e2..fb4c05fbe 100644 --- a/multisrc/overrides/madara/manytoonme/src/ManyToonMe.kt +++ b/multisrc/overrides/madara/manytoonme/src/ManyToonMe.kt @@ -7,6 +7,5 @@ class ManyToonMe : Madara("ManyToon.me", "https://manytoon.me", "en") { override val useNewChapterEndpoint: Boolean = true // The website does not flag the content. - override val useLoadMoreSearch = false override val filterNonMangaItems = false } diff --git a/multisrc/overrides/madara/nightcomic/src/NightComic.kt b/multisrc/overrides/madara/nightcomic/src/NightComic.kt deleted file mode 100644 index 14d219fb5..000000000 --- a/multisrc/overrides/madara/nightcomic/src/NightComic.kt +++ /dev/null @@ -1,11 +0,0 @@ -package eu.kanade.tachiyomi.extension.en.nightcomic - -import eu.kanade.tachiyomi.multisrc.madara.Madara -import okhttp3.Headers - -class NightComic : Madara("Night Comic", "https://www.nightcomic.com", "en") { - override val formHeaders: Headers = headersBuilder() - .add("Content-Type", "application/x-www-form-urlencoded") - .add("X-MOD-SBB-CTYPE", "xhr") - .build() -} diff --git a/multisrc/overrides/madara/pojokmanga/src/PojokManga.kt b/multisrc/overrides/madara/pojokmanga/src/PojokManga.kt index 5b710fd08..87d440a0c 100644 --- a/multisrc/overrides/madara/pojokmanga/src/PojokManga.kt +++ b/multisrc/overrides/madara/pojokmanga/src/PojokManga.kt @@ -11,8 +11,6 @@ import java.util.Locale class PojokManga : Madara("Pojok Manga", "https://pojokmanga.net", "id", SimpleDateFormat("MMM dd, yyyy", Locale.US)) { - override val useLoadMoreSearch = false - override val useNewChapterEndpoint = true override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { diff --git a/multisrc/overrides/madara/shieldmanga/src/ShieldManga.kt b/multisrc/overrides/madara/shieldmanga/src/ShieldManga.kt index 0412ca599..6aa6a9ef9 100644 --- a/multisrc/overrides/madara/shieldmanga/src/ShieldManga.kt +++ b/multisrc/overrides/madara/shieldmanga/src/ShieldManga.kt @@ -14,7 +14,6 @@ class ShieldManga : Madara("Shield Manga", "https://shieldmanga.io", "en") { .build() // The website does not flag the content. - override val useLoadMoreSearch = false override val filterNonMangaItems = false override fun chapterListSelector() = "li.wp-manga-hapter, .version-chap li" diff --git a/multisrc/overrides/madara/shoujohearts/src/ShoujoHearts.kt b/multisrc/overrides/madara/shoujohearts/src/ShoujoHearts.kt index 56005ad19..578d6d3a4 100644 --- a/multisrc/overrides/madara/shoujohearts/src/ShoujoHearts.kt +++ b/multisrc/overrides/madara/shoujohearts/src/ShoujoHearts.kt @@ -1,16 +1,10 @@ package eu.kanade.tachiyomi.extension.en.shoujohearts import eu.kanade.tachiyomi.multisrc.madara.Madara -import eu.kanade.tachiyomi.network.POST -import okhttp3.CacheControl -import okhttp3.Request class ShoujoHearts : Madara("ShoujoHearts", "https://shoujohearts.com", "en") { - override fun popularMangaRequest(page: Int): Request = - POST("$baseUrl/reader/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, true).build(), CacheControl.FORCE_NETWORK) - override fun latestUpdatesRequest(page: Int): Request = - POST("$baseUrl/reader/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, false).build(), CacheControl.FORCE_NETWORK) + override val mangaSubString = "reader/manga" override fun searchPage(page: Int): String = "reader/page/$page/" } diff --git a/multisrc/overrides/madara/toongod/src/ToonGod.kt b/multisrc/overrides/madara/toongod/src/ToonGod.kt index e6fd53b87..54a6d271f 100644 --- a/multisrc/overrides/madara/toongod/src/ToonGod.kt +++ b/multisrc/overrides/madara/toongod/src/ToonGod.kt @@ -11,7 +11,6 @@ class ToonGod : Madara("ToonGod", "https://www.toongod.com", "en", SimpleDateFor override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/webtoons/page/$page/?m_orderby=views", headers) override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/webtoons/page/$page/?m_orderby=latest", headers) override val mangaSubString = "webtoons" - override val useLoadMoreSearch = false override fun imageRequest(page: Page): Request { return GET(page.imageUrl!!, headers) } diff --git a/multisrc/overrides/madara/topmanhua/src/TopManhua.kt b/multisrc/overrides/madara/topmanhua/src/TopManhua.kt index a205a9c7c..c27d6e19c 100644 --- a/multisrc/overrides/madara/topmanhua/src/TopManhua.kt +++ b/multisrc/overrides/madara/topmanhua/src/TopManhua.kt @@ -9,6 +9,5 @@ class TopManhua : Madara("Top Manhua", "https://topmanhua.com", "en", SimpleDate override fun headersBuilder(): Headers.Builder = super.headersBuilder().add("Referer", baseUrl) // The website does not flag the content. - override val useLoadMoreSearch = false override val filterNonMangaItems = false } diff --git a/multisrc/overrides/madara/vermanhwas/src/VerManhwas.kt b/multisrc/overrides/madara/vermanhwas/src/VerManhwas.kt index 54fa27f7e..767616ad6 100644 --- a/multisrc/overrides/madara/vermanhwas/src/VerManhwas.kt +++ b/multisrc/overrides/madara/vermanhwas/src/VerManhwas.kt @@ -13,7 +13,6 @@ class VerManhwas : Madara( dateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("es")), ) { override val useNewChapterEndpoint = true - override val useLoadMoreSearch = false override fun genresRequest(): Request { return GET("$baseUrl/?s=&post_type=wp-manga", headers) diff --git a/multisrc/overrides/madara/yugenmangas/src/YugenMangas.kt b/multisrc/overrides/madara/yugenmangas/src/YugenMangas.kt index 7688b23a7..8d63d73da 100644 --- a/multisrc/overrides/madara/yugenmangas/src/YugenMangas.kt +++ b/multisrc/overrides/madara/yugenmangas/src/YugenMangas.kt @@ -26,11 +26,6 @@ class YugenMangas : Madara( .add("Origin", baseUrl) .add("Referer", "$baseUrl/") - override val formHeaders: Headers = headersBuilder() - .add("X-Requested-With", "XMLHttpRequest") - .set("Referer", "$baseUrl/todas-las-series/") - .build() - override val useNewChapterEndpoint: Boolean = true override fun chapterFromElement(element: Element): SChapter = SChapter.create().apply { diff --git a/multisrc/overrides/madara/zinmanga/src/Zinmanga.kt b/multisrc/overrides/madara/zinmanga/src/Zinmanga.kt index a06d7c185..bbb83f44e 100644 --- a/multisrc/overrides/madara/zinmanga/src/Zinmanga.kt +++ b/multisrc/overrides/madara/zinmanga/src/Zinmanga.kt @@ -5,6 +5,5 @@ import eu.kanade.tachiyomi.multisrc.madara.Madara class Zinmanga : Madara("Zinmanga", "https://zinmanga.com", "en") { // The website does not flag the content. - override val useLoadMoreSearch = false override val filterNonMangaItems = false } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/Madara.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/Madara.kt index 259297b15..6e88837cf 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/Madara.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madara/Madara.kt @@ -143,11 +143,21 @@ abstract class Madara( protected open val json: Json by injectLazy() /** - * If enabled, will remove non-manga items in search. + * If enabled, will attempt to remove non-manga items in popular and latest. + * The filter will not be used in search as the theme doesn't set the CSS class. * Can be disabled if the source incorrectly sets the entry types. */ protected open val filterNonMangaItems = true + /** + * The CSS selector used to filter manga items in popular and latest + * if `filterNonMangaItems` is set to `true`. Can be override if needed. + * If the flag is set to `false`, it will be empty by default. + */ + protected open val mangaEntrySelector: String by lazy { + if (filterNonMangaItems) ".manga" else "" + } + /** * Automatically fetched genres from the source to be used in the filters. */ @@ -179,7 +189,7 @@ abstract class Madara( } // exclude/filter bilibili manga from list - override fun popularMangaSelector() = "div.page-item-detail:not(:has(a[href*='bilibilicomics.com']))" + override fun popularMangaSelector() = "div.page-item-detail:not(:has(a[href*='bilibilicomics.com']))$mangaEntrySelector" open val popularMangaUrlSelector = "div.post-title a" @@ -200,38 +210,15 @@ abstract class Madara( return manga } - open fun formBuilder(page: Int, popular: Boolean) = FormBody.Builder().apply { - add("action", "madara_load_more") - add("page", (page - 1).toString()) - add("template", "madara-core/content/content-archive") - add("vars[orderby]", "meta_value_num") - add("vars[paged]", "1") - add("vars[posts_per_page]", "20") - add("vars[post_type]", "wp-manga") - add("vars[post_status]", "publish") - add("vars[meta_key]", if (popular) "_wp_manga_views" else "_latest_update") - add("vars[order]", "desc") - add("vars[sidebar]", if (popular) "full" else "right") - add("vars[manga_archives_item_layout]", "big_thumbnail") - - if (filterNonMangaItems) { - add("vars[meta_query][0][key]", "_wp_manga_chapter_type") - add("vars[meta_query][0][value]", "manga") - } - } - - open val formHeaders: Headers by lazy { headersBuilder().build() } - override fun popularMangaRequest(page: Int): Request { - return POST( - "$baseUrl/wp-admin/admin-ajax.php", - formHeaders, - formBuilder(page, true).build(), - CacheControl.FORCE_NETWORK, + return GET( + url = "$baseUrl/$mangaSubString/${searchPage(page)}?m_orderby=views", + headers = headers, + cache = CacheControl.FORCE_NETWORK, ) } - override fun popularMangaNextPageSelector(): String? = "body:not(:has(.no-posts))" + override fun popularMangaNextPageSelector(): String? = searchMangaNextPageSelector() // Latest Updates @@ -243,7 +230,11 @@ abstract class Madara( } override fun latestUpdatesRequest(page: Int): Request { - return POST("$baseUrl/wp-admin/admin-ajax.php", formHeaders, formBuilder(page, false).build(), CacheControl.FORCE_NETWORK) + return GET( + url = "$baseUrl/$mangaSubString/${searchPage(page)}?m_orderby=latest", + headers = headers, + cache = CacheControl.FORCE_NETWORK, + ) } override fun latestUpdatesNextPageSelector(): String? = popularMangaNextPageSelector() @@ -258,39 +249,15 @@ abstract class Madara( open val mangaSubString = "manga" - /** - * If enabled, the search will use the madara_load_more action instead of - * the normal page. This allows more control over the query and will permit - * the filtering of non-manga items such as novels or videos. - */ - open val useLoadMoreSearch = true - - open fun searchFormBuilder(page: Int, showOnlyManga: Boolean): FormBody.Builder = FormBody.Builder().apply { - add("action", "madara_load_more") - add("page", (page - 1).toString()) - add("template", "madara-core/content/content-search") - add("vars[paged]", "1") - add("vars[template]", "archive") - add("vars[sidebar]", "right") - add("vars[post_type]", "wp-manga") - add("vars[post_status]", "publish") - add("vars[manga_archives_item_layout]", "big_thumbnail") - add("vars[posts_per_page]", "20") - - if (filterNonMangaItems && showOnlyManga) { - add("vars[meta_query][0][key]", "_wp_manga_chapter_type") - add("vars[meta_query][0][value]", "manga") - } - } - override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable { - if (query.startsWith(URL_SEARCH_PREFIX) && !useLoadMoreSearch) { + if (query.startsWith(URL_SEARCH_PREFIX)) { val mangaUrl = "$baseUrl/$mangaSubString/${query.substringAfter(URL_SEARCH_PREFIX)}" return client.newCall(GET(mangaUrl, headers)) .asObservable().map { response -> MangasPage(listOf(mangaDetailsParse(response.asJsoup()).apply { url = "/$mangaSubString/${query.substringAfter(URL_SEARCH_PREFIX)}/" }), false) } } + return client.newCall(searchMangaRequest(page, query, filters)) .asObservable().doOnNext { response -> if (!response.isSuccessful) { @@ -311,10 +278,6 @@ abstract class Madara( protected open fun searchPage(page: Int): String = "page/$page/" override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { - if (useLoadMoreSearch) { - return searchLoadMoreRequest(page, query, filters) - } - val url = "$baseUrl/${searchPage(page)}".toHttpUrlOrNull()!!.newBuilder() url.addQueryParameter("s", query) url.addQueryParameter("post_type", "wp-manga") @@ -366,148 +329,6 @@ abstract class Madara( return GET(url.toString(), headers) } - protected open fun searchLoadMoreRequest(page: Int, query: String, filters: FilterList): Request { - val showOnlyManga = filters.filterIsInstance() - .firstOrNull()?.state ?: true - - val formBodyBuilder = searchFormBuilder(page, showOnlyManga).apply { - if (query.startsWith(URL_SEARCH_PREFIX)) { - add("vars[name]", query.removePrefix(URL_SEARCH_PREFIX)) - - return@apply - } - - add("vars[s]", query) - - var metaQueryIdx = if (filterNonMangaItems && showOnlyManga) 1 else 0 - var taxQueryIdx = 0 - val genres = filters.filterIsInstance().firstOrNull()?.state - ?.filter { it.state } - ?.map { it.id } - .orEmpty() - - filters.forEach { filter -> - when (filter) { - is AuthorFilter -> { - if (filter.state.isNotBlank()) { - add("vars[tax_query][$taxQueryIdx][taxonomy]", "wp-manga-author") - add("vars[tax_query][$taxQueryIdx][field]", "name") - add("vars[tax_query][$taxQueryIdx][terms]", filter.state) - - taxQueryIdx++ - } - } - is ArtistFilter -> { - if (filter.state.isNotBlank()) { - add("vars[tax_query][$taxQueryIdx][taxonomy]", "wp-manga-artist") - add("vars[tax_query][$taxQueryIdx][field]", "name") - add("vars[tax_query][$taxQueryIdx][terms]", filter.state) - - taxQueryIdx++ - } - } - is YearFilter -> { - if (filter.state.isNotBlank()) { - add("vars[tax_query][$taxQueryIdx][taxonomy]", "wp-manga-release") - add("vars[tax_query][$taxQueryIdx][field]", "name") - add("vars[tax_query][$taxQueryIdx][terms]", filter.state) - - taxQueryIdx++ - } - } - is StatusFilter -> { - val statuses = filter.state - .filter { it.state } - .map { it.id } - - if (statuses.isNotEmpty()) { - add("vars[meta_query][$metaQueryIdx][key]", "_wp_manga_status") - - statuses.forEachIndexed { i, slug -> - add("vars[meta_query][$metaQueryIdx][value][$i]", slug) - } - - metaQueryIdx++ - } - } - is OrderByFilter -> { - if (filter.state != 0) { - when (filter.toUriPart()) { - "latest" -> { - add("vars[orderby]", "meta_value_num") - add("vars[order]", "DESC") - add("vars[meta_key]", "_latest_update") - } - "alphabet" -> { - add("vars[orderby]", "post_title") - add("vars[order]", "ASC") - } - "rating" -> { - add("vars[orderby][query_average_reviews]", "DESC") - add("vars[orderby][query_total_reviews]", "DESC") - } - "trending" -> { - add("vars[orderby]", "meta_value_num") - add("vars[meta_key]", "_wp_manga_week_views_value") - add("vars[order]", "DESC") - } - "views" -> { - add("vars[orderby]", "meta_value_num") - add("vars[meta_key]", "_wp_manga_views") - add("vars[order]", "DESC") - } - else -> { - add("vars[orderby]", "date") - add("vars[order]", "DESC") - } - } - } - } - is AdultContentFilter -> { - if (filter.state != 0) { - add("vars[meta_query][$metaQueryIdx][key]", "manga_adult_content") - add( - "vars[meta_query][$metaQueryIdx][compare]", - if (filter.state == 1) "not exists" else "exists", - ) - - metaQueryIdx++ - } - } - is GenreConditionFilter -> { - if (filter.state == 1 && genres.isNotEmpty()) { - add("vars[tax_query][$taxQueryIdx][operation]", "AND") - } - } - is GenreList -> { - if (genres.isNotEmpty()) { - add("vars[tax_query][$taxQueryIdx][taxonomy]", "wp-manga-genre") - add("vars[tax_query][$taxQueryIdx][field]", "slug") - - genres.forEachIndexed { i, slug -> - add("vars[tax_query][$taxQueryIdx][terms][$i]", slug) - } - - taxQueryIdx++ - } - } - else -> {} - } - } - } - - val searchHeaders = headersBuilder() - .add("X-Requested-With", "XMLHttpRequest") - .build() - - return POST( - "$baseUrl/wp-admin/admin-ajax.php", - searchHeaders, - formBodyBuilder.build(), - CacheControl.FORCE_NETWORK, - ) - } - protected open val authorFilterTitle: String = when (lang) { "pt-BR" -> "Autor" else -> "Author" @@ -611,11 +432,6 @@ abstract class Madara( else -> "Press 'Reset' to attempt to show the genres" } - protected open val showOnlyMangaEntriesLabel: String = when (lang) { - "pt-BR" -> "Mostrar somente mangás" - else -> "Show only manga entries" - } - protected class AuthorFilter(title: String) : Filter.Text(title) protected class ArtistFilter(title: String) : Filter.Text(title) protected class YearFilter(title: String) : Filter.Text(title) @@ -638,8 +454,6 @@ abstract class Madara( protected class GenreList(title: String, genres: List) : Filter.Group(title, genres) class Genre(name: String, val id: String = name) : Filter.CheckBox(name) - protected class ShowOnlyMangaFilter(label: String) : Filter.CheckBox(label, true) - override fun getFilterList(): FilterList { val filters = mutableListOf( AuthorFilter(authorFilterTitle), @@ -647,17 +461,13 @@ abstract class Madara( YearFilter(yearFilterTitle), StatusFilter(statusFilterTitle, getStatusList()), OrderByFilter( - orderByFilterTitle, - orderByFilterOptions.zip(orderByFilterOptionsValues), - if (useLoadMoreSearch) 5 else 0, + title = orderByFilterTitle, + options = orderByFilterOptions.zip(orderByFilterOptionsValues), + state = 0, ), AdultContentFilter(adultContentFilterTitle, adultContentFilterOptions), ) - if (useLoadMoreSearch) { - filters.add(ShowOnlyMangaFilter(showOnlyMangaEntriesLabel)) - } - if (genresList.isNotEmpty()) { filters += listOf( Filter.Separator(), @@ -709,10 +519,7 @@ abstract class Madara( return manga } - override fun searchMangaNextPageSelector(): String? = when { - useLoadMoreSearch -> popularMangaNextPageSelector() - else -> "div.nav-previous, nav.navigation-ajax, a.nextpostslink" - } + override fun searchMangaNextPageSelector(): String? = "div.nav-previous, nav.navigation-ajax, a.nextpostslink" // Manga Details Parse