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:
parent
34e005c8b2
commit
b4e56cb8d7
@ -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"
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
}
|
}
|
||||||
|
@ -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())
|
||||||
|
|
||||||
|
@ -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"),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user