From 743bc0d38242655fe5a14efda82b2b01ecbed2eb Mon Sep 17 00:00:00 2001 From: Vetle Ledaal Date: Mon, 21 Mar 2022 09:35:08 +0000 Subject: [PATCH] MadTheme: fix pagination and relax rate limiting to CDN hosts (#11163) * MadTheme: fix pagination * relax rate limiting * disable alt CDNs --- .../madtheme/beehentai/src/BeeHentai.kt | 44 ++++++++++++++++++- .../madtheme/boxmanhwa/src/BoxManhwa.kt | 44 ++++++++++++++++++- .../madtheme/mangabuddy/src/MangaBuddy.kt | 44 ++++++++++++++++++- .../madtheme/mangacute/src/MangaCute.kt | 44 ++++++++++++++++++- .../madtheme/mangafab/src/MangaFab.kt | 44 ++++++++++++++++++- .../madtheme/mangaforest/src/MangaForest.kt | 44 ++++++++++++++++++- .../madtheme/mangamad/src/MangaMad.kt | 44 ++++++++++++++++++- .../madtheme/mangamax/src/MangaMax.kt | 44 ++++++++++++++++++- .../madtheme/mangasaga/src/MangaSaga.kt | 44 ++++++++++++++++++- .../madtheme/mangaspin/src/MangaSpin.kt | 44 ++++++++++++++++++- .../madtheme/mangaxyz/src/MangaXYZ.kt | 44 ++++++++++++++++++- .../madtheme/manhuanow/src/ManhuaNow.kt | 44 ++++++++++++++++++- .../madtheme/manhuasite/src/ManhuaSite.kt | 44 ++++++++++++++++++- .../madtheme/tooniclub/src/TooniClub.kt | 44 ++++++++++++++++++- .../madtheme/toonifab/src/TooniFab.kt | 44 ++++++++++++++++++- .../madtheme/toonilyme/src/ToonilyMe.kt | 44 ++++++++++++++++++- .../madtheme/toonitube/src/TooniTube.kt | 44 ++++++++++++++++++- .../madtheme/truemanga/src/TrueManga.kt | 44 ++++++++++++++++++- .../tachiyomi/multisrc/madtheme/MadTheme.kt | 4 +- .../multisrc/madtheme/MadThemeGenerator.kt | 2 +- 20 files changed, 760 insertions(+), 38 deletions(-) diff --git a/multisrc/overrides/madtheme/beehentai/src/BeeHentai.kt b/multisrc/overrides/madtheme/beehentai/src/BeeHentai.kt index 9dc9dbef9..04125eaf0 100644 --- a/multisrc/overrides/madtheme/beehentai/src/BeeHentai.kt +++ b/multisrc/overrides/madtheme/beehentai/src/BeeHentai.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.beehentai -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class BeeHentai : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/boxmanhwa/src/BoxManhwa.kt b/multisrc/overrides/madtheme/boxmanhwa/src/BoxManhwa.kt index f9940cbbc..7d9a1b8f0 100644 --- a/multisrc/overrides/madtheme/boxmanhwa/src/BoxManhwa.kt +++ b/multisrc/overrides/madtheme/boxmanhwa/src/BoxManhwa.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.boxmanhwa -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class BoxManhwa : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/mangabuddy/src/MangaBuddy.kt b/multisrc/overrides/madtheme/mangabuddy/src/MangaBuddy.kt index 28725f4bc..fd41650ab 100644 --- a/multisrc/overrides/madtheme/mangabuddy/src/MangaBuddy.kt +++ b/multisrc/overrides/madtheme/mangabuddy/src/MangaBuddy.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.mangabuddy -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class MangaBuddy : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/mangacute/src/MangaCute.kt b/multisrc/overrides/madtheme/mangacute/src/MangaCute.kt index c82a49723..0ed8b4e6f 100644 --- a/multisrc/overrides/madtheme/mangacute/src/MangaCute.kt +++ b/multisrc/overrides/madtheme/mangacute/src/MangaCute.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.mangacute -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class MangaCute : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/mangafab/src/MangaFab.kt b/multisrc/overrides/madtheme/mangafab/src/MangaFab.kt index 345682340..ccb355767 100644 --- a/multisrc/overrides/madtheme/mangafab/src/MangaFab.kt +++ b/multisrc/overrides/madtheme/mangafab/src/MangaFab.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.mangafab -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class MangaFab : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/mangaforest/src/MangaForest.kt b/multisrc/overrides/madtheme/mangaforest/src/MangaForest.kt index 0c07361ea..376543958 100644 --- a/multisrc/overrides/madtheme/mangaforest/src/MangaForest.kt +++ b/multisrc/overrides/madtheme/mangaforest/src/MangaForest.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.mangaforest -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class MangaForest : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/mangamad/src/MangaMad.kt b/multisrc/overrides/madtheme/mangamad/src/MangaMad.kt index 02c25eced..9558ee43e 100644 --- a/multisrc/overrides/madtheme/mangamad/src/MangaMad.kt +++ b/multisrc/overrides/madtheme/mangamad/src/MangaMad.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.mangamad -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class MangaMad : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/mangamax/src/MangaMax.kt b/multisrc/overrides/madtheme/mangamax/src/MangaMax.kt index 807da2c6b..aa8ee411a 100644 --- a/multisrc/overrides/madtheme/mangamax/src/MangaMax.kt +++ b/multisrc/overrides/madtheme/mangamax/src/MangaMax.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.mangamax -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class MangaMax : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/mangasaga/src/MangaSaga.kt b/multisrc/overrides/madtheme/mangasaga/src/MangaSaga.kt index 4bfa6cc1d..53321f934 100644 --- a/multisrc/overrides/madtheme/mangasaga/src/MangaSaga.kt +++ b/multisrc/overrides/madtheme/mangasaga/src/MangaSaga.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.mangasaga -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class MangaSaga : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/mangaspin/src/MangaSpin.kt b/multisrc/overrides/madtheme/mangaspin/src/MangaSpin.kt index 8565c2bef..9f3ef583c 100644 --- a/multisrc/overrides/madtheme/mangaspin/src/MangaSpin.kt +++ b/multisrc/overrides/madtheme/mangaspin/src/MangaSpin.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.mangaspin -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class MangaSpin : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/mangaxyz/src/MangaXYZ.kt b/multisrc/overrides/madtheme/mangaxyz/src/MangaXYZ.kt index 74e76d778..27f210f99 100644 --- a/multisrc/overrides/madtheme/mangaxyz/src/MangaXYZ.kt +++ b/multisrc/overrides/madtheme/mangaxyz/src/MangaXYZ.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.mangaxyz -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class MangaXYZ : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/manhuanow/src/ManhuaNow.kt b/multisrc/overrides/madtheme/manhuanow/src/ManhuaNow.kt index 2e12a1937..9cf6aafa9 100644 --- a/multisrc/overrides/madtheme/manhuanow/src/ManhuaNow.kt +++ b/multisrc/overrides/madtheme/manhuanow/src/ManhuaNow.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.manhuanow -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class ManhuaNow : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/manhuasite/src/ManhuaSite.kt b/multisrc/overrides/madtheme/manhuasite/src/ManhuaSite.kt index df467043b..72e23bb04 100644 --- a/multisrc/overrides/madtheme/manhuasite/src/ManhuaSite.kt +++ b/multisrc/overrides/madtheme/manhuasite/src/ManhuaSite.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.manhuasite -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class ManhuaSite : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/tooniclub/src/TooniClub.kt b/multisrc/overrides/madtheme/tooniclub/src/TooniClub.kt index 5db41f5da..250937c6a 100644 --- a/multisrc/overrides/madtheme/tooniclub/src/TooniClub.kt +++ b/multisrc/overrides/madtheme/tooniclub/src/TooniClub.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.tooniclub -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class TooniClub : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/toonifab/src/TooniFab.kt b/multisrc/overrides/madtheme/toonifab/src/TooniFab.kt index 93bbee213..92ed6515b 100644 --- a/multisrc/overrides/madtheme/toonifab/src/TooniFab.kt +++ b/multisrc/overrides/madtheme/toonifab/src/TooniFab.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.toonifab -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class TooniFab : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/toonilyme/src/ToonilyMe.kt b/multisrc/overrides/madtheme/toonilyme/src/ToonilyMe.kt index 1cc8d231c..7f28aac88 100644 --- a/multisrc/overrides/madtheme/toonilyme/src/ToonilyMe.kt +++ b/multisrc/overrides/madtheme/toonilyme/src/ToonilyMe.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.toonilyme -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class ToonilyMe : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/toonitube/src/TooniTube.kt b/multisrc/overrides/madtheme/toonitube/src/TooniTube.kt index 95060fa6d..209e7d30f 100644 --- a/multisrc/overrides/madtheme/toonitube/src/TooniTube.kt +++ b/multisrc/overrides/madtheme/toonitube/src/TooniTube.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.toonitube -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class TooniTube : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/overrides/madtheme/truemanga/src/TrueManga.kt b/multisrc/overrides/madtheme/truemanga/src/TrueManga.kt index f52f24d93..212a82af0 100644 --- a/multisrc/overrides/madtheme/truemanga/src/TrueManga.kt +++ b/multisrc/overrides/madtheme/truemanga/src/TrueManga.kt @@ -1,7 +1,8 @@ package eu.kanade.tachiyomi.extension.en.truemanga -import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor +import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor import eu.kanade.tachiyomi.multisrc.madtheme.MadTheme +import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.OkHttpClient import java.util.concurrent.TimeUnit @@ -11,6 +12,45 @@ class TrueManga : MadTheme( "en" ) { override val client: OkHttpClient = network.cloudflareClient.newBuilder() - .addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS)) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv1.xyz".toHttpUrl(), + 5, + 1, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv2.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv3.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv4.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) + .addInterceptor( + SpecificHostRateLimitInterceptor( + "https://s1.mbcdnv5.xyz".toHttpUrl(), + 1, + 2, + TimeUnit.SECONDS + ) + ) .build() } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madtheme/MadTheme.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madtheme/MadTheme.kt index 6153ad625..82f044d4e 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madtheme/MadTheme.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madtheme/MadTheme.kt @@ -74,6 +74,7 @@ abstract class MadTheme( override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { val url = "$baseUrl/search".toHttpUrl().newBuilder() .addQueryParameter("q", query) + .addQueryParameter("page", page.toString()) filters.forEach { filter -> when (filter) { @@ -192,7 +193,8 @@ abstract class MadTheme( } } - val allCDN = listOf(CDN_URL) + CDN_URL_ALT + // Disabling alt CDNs until fallback can be implemented + val allCDN = listOf(CDN_URL) // + CDN_URL_ALT return chImages.mapIndexed { index, img -> Page(index, "", allCDN.random() + CDN_PATH + img) } diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madtheme/MadThemeGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madtheme/MadThemeGenerator.kt index 67b922e4a..7a96138e2 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madtheme/MadThemeGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/madtheme/MadThemeGenerator.kt @@ -9,7 +9,7 @@ class MadThemeGenerator : ThemeSourceGenerator { override val themeClass = "MadTheme" - override val baseVersionCode: Int = 4 + override val baseVersionCode: Int = 5 override val sources = listOf( SingleLang("BeeHentai", "https://beehentai.com", "en", isNsfw = true),