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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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