MangaHub: fix images not loading (#12792)

* MangaHub: fix images not loading

* make CDN configurable in subclass

* move rate limiting to super class
This commit is contained in:
Vetle Ledaal 2022-07-30 12:37:46 +00:00 committed by GitHub
parent 34e005c8b2
commit b4e56cb8d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 18 additions and 76 deletions

View File

@ -1,17 +1,11 @@
package eu.kanade.tachiyomi.extension.en.mangafoxfun
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import okhttp3.OkHttpClient
class MangaFoxFun : MangaHub(
"MangaFox.fun",
"https://mangafox.fun",
"en"
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimitHost(cdnHost, 1, 2)
.build()
override val serverId = "mf01"
}

View File

@ -1,17 +1,11 @@
package eu.kanade.tachiyomi.extension.en.mangahereonl
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import okhttp3.OkHttpClient
class MangaHereOnl : MangaHub(
"MangaHere.onl",
"https://mangahere.onl",
"en"
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimitHost(cdnHost, 1, 2)
.build()
override val serverId = "mh01"
}

View File

@ -1,17 +1,11 @@
package eu.kanade.tachiyomi.extension.en.mangahubio
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import okhttp3.OkHttpClient
class MangaHubIo : MangaHub(
"MangaHub",
"https://mangahub.io",
"en"
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimitHost(cdnHost, 1, 2)
.build()
override val serverId = "m01"
}

View File

@ -1,17 +1,11 @@
package eu.kanade.tachiyomi.extension.en.mangakakalotfun
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import okhttp3.OkHttpClient
class MangakakalotFun : MangaHub(
"Mangakakalot.fun",
"https://mangakakalot.fun",
"en"
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimitHost(cdnHost, 1, 2)
.build()
override val serverId = "mn01"
}

View File

@ -1,17 +1,11 @@
package eu.kanade.tachiyomi.extension.en.manganel
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import okhttp3.OkHttpClient
class MangaNel : MangaHub(
"MangaNel",
"https://manganel.me",
"en"
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimitHost(cdnHost, 1, 2)
.build()
override val serverId = "mn05"
}

View File

@ -1,17 +1,11 @@
package eu.kanade.tachiyomi.extension.en.mangaonlinefun
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import okhttp3.OkHttpClient
class MangaOnlineFun : MangaHub(
"MangaOnline.fun",
"https://mangaonline.fun",
"en"
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimitHost(cdnHost, 1, 2)
.build()
override val serverId = "m02"
}

View File

@ -1,17 +1,11 @@
package eu.kanade.tachiyomi.extension.en.mangapandaonl
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import okhttp3.OkHttpClient
class MangaPandaOnl : MangaHub(
"MangaPanda.onl",
"https://mangapanda.onl",
"en"
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimitHost(cdnHost, 1, 2)
.build()
override val serverId = "mr02"
}

View File

@ -1,17 +1,11 @@
package eu.kanade.tachiyomi.extension.en.mangareadersite
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import okhttp3.OkHttpClient
class MangaReaderSite : MangaHub(
"MangaReader.site",
"https://mangareader.site",
"en"
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimitHost(cdnHost, 1, 2)
.build()
override val serverId = "mr01"
}

View File

@ -1,17 +1,11 @@
package eu.kanade.tachiyomi.extension.en.mangatoday
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import okhttp3.OkHttpClient
class MangaToday : MangaHub(
"MangaToday",
"https://mangatoday.fun",
"en"
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimitHost(cdnHost, 1, 2)
.build()
override val serverId = "m03"
}

View File

@ -1,17 +1,11 @@
package eu.kanade.tachiyomi.extension.en.mangatownhub
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import okhttp3.OkHttpClient
class MangaTownHub : MangaHub(
"MangaTown (unoriginal)",
"https://manga.town",
"en"
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimitHost(cdnHost, 1, 2)
.build()
override val serverId = "mt01"
}

View File

@ -1,17 +1,11 @@
package eu.kanade.tachiyomi.extension.en.onemangaco
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import okhttp3.OkHttpClient
class OneMangaCo : MangaHub(
"1Manga.co",
"https://1manga.co",
"en"
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimitHost(cdnHost, 1, 2)
.build()
override val serverId = "mn03"
}

View File

@ -1,17 +1,11 @@
package eu.kanade.tachiyomi.extension.en.onemangainfo
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import okhttp3.OkHttpClient
class OneMangaInfo : MangaHub(
"OneManga.info",
"https://onemanga.info",
"en"
) {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimitHost(cdnHost, 1, 2)
.build()
override val serverId = "mn02"
}

View File

@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.multisrc.mangahub
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.network.interceptor.rateLimitHost
import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.MangasPage
@ -16,7 +17,9 @@ import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.jsonPrimitive
import okhttp3.Headers
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.Response
@ -41,7 +44,18 @@ abstract class MangaHub(
protected abstract val serverId: String
protected open val cdnHost = " https://img.mghubcdn.com/".toHttpUrl()
protected open val cdnImgUrl = "https://img.mghubcdn.com"
protected open val cdnApiUrl = "https://api.mghubcdn.com"
override val client: OkHttpClient by lazy {
super.client.newBuilder()
.rateLimitHost(cdnImgUrl.toHttpUrl(), 1, 2)
.build()
}
override fun headersBuilder(): Headers.Builder = super.headersBuilder()
.add("Origin", baseUrl)
.add("Referer", "$baseUrl/")
// Popular
override fun popularMangaRequest(page: Int): Request =
@ -234,11 +248,11 @@ abstract class MangaHub(
null
)
return POST("https://api.mghubcdn.com/graphql", jsonHeaders, body)
return POST("$cdnApiUrl/graphql", jsonHeaders, body)
}
override fun pageListParse(response: Response): List<Page> {
val cdn = "https://img.mghubcdn.com/file/imghub"
val cdn = "$cdnImgUrl/file/imghub"
val chapterObject = json
.decodeFromString<GraphQLDataDto<ChapterDto>>(response.body!!.string())

View File

@ -9,7 +9,7 @@ class MangaHubGenerator : ThemeSourceGenerator {
override val themeClass = "MangaHub"
override val baseVersionCode: Int = 3
override val baseVersionCode: Int = 4
override val sources = listOf(
SingleLang("1Manga.co", "https://1manga.co", "en", isNsfw = true, className = "OneMangaCo"),