MadTheme: fix pagination and relax rate limiting to CDN hosts (#11163)

* MadTheme: fix pagination

* relax rate limiting

* disable alt CDNs
This commit is contained in:
Vetle Ledaal 2022-03-21 09:35:08 +00:00 committed by GitHub
parent 82a59cb6d5
commit 743bc0d382
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 760 additions and 38 deletions

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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()
}

View File

@ -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)
}

View File

@ -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),