Make rate limit more harsher in Brazilian sources (#8208)
* Make rate limit more harsher in Brazilian single sources. * Make rate limit more harsher in Brazilian multisrc sources.
This commit is contained in:
parent
233746b94d
commit
58e83d29cb
|
@ -18,7 +18,7 @@ class BaixarHentai : FoolSlide(
|
||||||
override val id: Long = 8908032188831949972
|
override val id: Long = 8908032188831949972
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun mangaDetailsParse(document: Document): SManga {
|
override fun mangaDetailsParse(document: Document): SManga {
|
||||||
|
|
|
@ -15,7 +15,7 @@ class ArgosScan : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
||||||
|
|
|
@ -15,7 +15,7 @@ class ArthurScan : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
||||||
|
|
|
@ -17,7 +17,7 @@ class BananaMecanica : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
// [...document.querySelectorAll('input[name="genre[]"]')]
|
// [...document.querySelectorAll('input[name="genre[]"]')]
|
||||||
|
|
|
@ -17,7 +17,7 @@ class BlManhwaClub : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
// [...document.querySelectorAll('div.genres li a')]
|
// [...document.querySelectorAll('div.genres li a')]
|
||||||
|
|
|
@ -17,7 +17,7 @@ class CafeComYaoi : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
// [...document.querySelectorAll('input[name="genre[]"]')]
|
// [...document.querySelectorAll('input[name="genre[]"]')]
|
||||||
|
|
|
@ -15,7 +15,7 @@ class CeriseScans : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
||||||
|
|
|
@ -15,7 +15,7 @@ class CervoScanlator : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
||||||
|
|
|
@ -21,7 +21,7 @@ class DarkYueRealm : Madara(
|
||||||
override val id: Long = 593455310609863709
|
override val id: Long = 593455310609863709
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun mangaDetailsRequest(manga: SManga): Request {
|
override fun mangaDetailsRequest(manga: SManga): Request {
|
||||||
|
|
|
@ -15,7 +15,7 @@ class DiskusScan : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override val altName: String = "Nome alternativo: "
|
override val altName: String = "Nome alternativo: "
|
||||||
|
|
|
@ -19,7 +19,7 @@ class DreamUnionScan : Madara(
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(::authWarningIntercept)
|
.addInterceptor(::authWarningIntercept)
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override val altName: String = "Nome alternativo: "
|
override val altName: String = "Nome alternativo: "
|
||||||
|
|
|
@ -17,7 +17,7 @@ class DropeScan : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/manga/page/$page/?m_orderby=views", headers)
|
override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/manga/page/$page/?m_orderby=views", headers)
|
||||||
|
|
|
@ -15,6 +15,6 @@ class FDMScan : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ class FenixScanlator : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
// [...document.querySelectorAll('input[name="genre[]"]')]
|
// [...document.querySelectorAll('input[name="genre[]"]')]
|
||||||
|
|
|
@ -19,7 +19,7 @@ class FudidoScanlator : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
||||||
|
|
|
@ -15,6 +15,6 @@ class FurioScans : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ class GeassHentai : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override val altName: String = "Nome alternativo: "
|
override val altName: String = "Nome alternativo: "
|
||||||
|
|
|
@ -17,7 +17,7 @@ class GloryScans : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
// [...document.querySelectorAll('input[name="genre[]"]')]
|
// [...document.querySelectorAll('input[name="genre[]"]')]
|
||||||
|
|
|
@ -17,7 +17,7 @@ class ImperioDosOtakus : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
||||||
|
|
|
@ -20,7 +20,7 @@ class LimaScans : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override val altName: String = "Nome alternativo: "
|
override val altName: String = "Nome alternativo: "
|
||||||
|
|
|
@ -15,6 +15,6 @@ class LittleMonsterScan : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ class MangaTeca : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
||||||
|
|
|
@ -15,6 +15,6 @@ class MarkScans : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ class ModeScanlator : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
||||||
|
|
|
@ -15,7 +15,7 @@ class MoonWitchInLove : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override val altName: String = "Nome alternativo: "
|
override val altName: String = "Nome alternativo: "
|
||||||
|
|
|
@ -15,7 +15,7 @@ class NekoBreakerScan : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override val altName: String = "Nome alternativo: "
|
override val altName: String = "Nome alternativo: "
|
||||||
|
|
|
@ -15,7 +15,7 @@ class OffScan : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
||||||
|
|
|
@ -15,6 +15,6 @@ class OrigamiOrpheans : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ class PrismaScans : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override val altName = "Nome alternativo: "
|
override val altName = "Nome alternativo: "
|
||||||
|
|
|
@ -15,6 +15,6 @@ class ProjetoScanlator : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,6 @@ class RandomScan : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ class RedRibbonScanlator : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override val altName: String = "Nome alternativo: "
|
override val altName: String = "Nome alternativo: "
|
||||||
|
|
|
@ -15,7 +15,7 @@ class Sinensis : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override val altName: String = "Nome alternativo: "
|
override val altName: String = "Nome alternativo: "
|
||||||
|
|
|
@ -17,7 +17,7 @@ class StageComics : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
||||||
|
|
|
@ -18,7 +18,7 @@ class SweetTimeScan : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
||||||
|
|
|
@ -15,6 +15,6 @@ class ThreeQueensScanlator : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ class TsundokuTraducoes : Madara(
|
||||||
override val id: Long = 3941383635597527601
|
override val id: Long = 3941383635597527601
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
||||||
|
|
|
@ -15,7 +15,7 @@ class VapoScan : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override val altName: String = "Nome alternativo: "
|
override val altName: String = "Nome alternativo: "
|
||||||
|
|
|
@ -15,7 +15,7 @@ class Visbellum : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override val altName: String = "Nome alternativo: "
|
override val altName: String = "Nome alternativo: "
|
||||||
|
|
|
@ -15,7 +15,7 @@ class WarQueenScan : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
||||||
|
|
|
@ -15,6 +15,6 @@ class WinterScan : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ class Wonderland : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override val popularMangaUrlSelector = "div.post-title a:not([target])"
|
override val popularMangaUrlSelector = "div.post-title a:not([target])"
|
||||||
|
|
|
@ -17,7 +17,7 @@ class YaoiFanClube : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override val popularMangaUrlSelector = "div.post-title a:not([target])"
|
override val popularMangaUrlSelector = "div.post-title a:not([target])"
|
||||||
|
|
|
@ -19,7 +19,7 @@ class YaoiToshokan : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
// Page has custom link to scan website.
|
// Page has custom link to scan website.
|
||||||
|
|
|
@ -15,7 +15,7 @@ class YuriVerso : Madara(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
override fun popularMangaSelector() = "div.page-item-detail.manga"
|
||||||
|
|
|
@ -18,7 +18,7 @@ class LeitorNet : MangasProject("Leitor.net", "https://leitor.net", "pt-BR") {
|
||||||
override val id: Long = 2225174659569980836
|
override val id: Long = 2225174659569980836
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(2, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -17,7 +17,7 @@ class MangaLivre : MangasProject("Mangá Livre", "https://mangalivre.net", "pt-B
|
||||||
override val id: Long = 4762777556012432014
|
override val id: Long = 4762777556012432014
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(2, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun popularMangaRequest(page: Int): Request {
|
override fun popularMangaRequest(page: Int): Request {
|
||||||
|
|
|
@ -9,7 +9,7 @@ import java.util.concurrent.TimeUnit
|
||||||
class Toonei : MangasProject("Toonei", "https://toonei.net", "pt-BR") {
|
class Toonei : MangasProject("Toonei", "https://toonei.net", "pt-BR") {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(2, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun getReaderToken(document: Document): String? {
|
override fun getReaderToken(document: Document): String? {
|
||||||
|
|
|
@ -13,7 +13,7 @@ import java.util.concurrent.TimeUnit
|
||||||
class AmaScans : MMRCMS("Ama Scans", "https://amascan.com", "pt-BR") {
|
class AmaScans : MMRCMS("Ama Scans", "https://amascan.com", "pt-BR") {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun imageRequest(page: Page): Request {
|
override fun imageRequest(page: Page): Request {
|
||||||
|
|
|
@ -9,6 +9,6 @@ class AnimaRegia : MMRCMS("AnimaRegia", "https://animaregia.net", "pt-BR") {
|
||||||
override val id: Long = 4378659695320121364
|
override val id: Long = 4378659695320121364
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ import java.util.concurrent.TimeUnit
|
||||||
class GekkouScans : MMRCMS("Gekkou Scans", "https://leitor.gekkouscans.com.br", "pt-BR") {
|
class GekkouScans : MMRCMS("Gekkou Scans", "https://leitor.gekkouscans.com.br", "pt-BR") {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun chapterListSelector() = "ul.domaintld > li.li"
|
override fun chapterListSelector() = "ul.domaintld > li.li"
|
||||||
|
|
|
@ -8,6 +8,6 @@ import java.util.concurrent.TimeUnit
|
||||||
class Remangas : MMRCMS("Remangas", "https://remangas.top", "pt-BR") {
|
class Remangas : MMRCMS("Remangas", "https://remangas.top", "pt-BR") {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ class GeassScanlator : WPMangaStream(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override val altName: String = "Nome alternativo: "
|
override val altName: String = "Nome alternativo: "
|
||||||
|
|
|
@ -17,7 +17,7 @@ class LemonJuiceScan : WPMangaStream(
|
||||||
) {
|
) {
|
||||||
|
|
||||||
override val client: OkHttpClient = super.client.newBuilder()
|
override val client: OkHttpClient = super.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
// [...document.querySelectorAll('ul.taxindex li a')]
|
// [...document.querySelectorAll('ul.taxindex li a')]
|
||||||
|
|
|
@ -23,7 +23,7 @@ class SilenceScan : WPMangaStream(
|
||||||
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
||||||
.connectTimeout(10, TimeUnit.SECONDS)
|
.connectTimeout(10, TimeUnit.SECONDS)
|
||||||
.readTimeout(30, TimeUnit.SECONDS)
|
.readTimeout(30, TimeUnit.SECONDS)
|
||||||
.addNetworkInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addNetworkInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
private val json: Json by injectLazy()
|
private val json: Json by injectLazy()
|
||||||
|
|
|
@ -32,7 +32,7 @@ class FoolSlideGenerator : ThemeSourceGenerator {
|
||||||
SingleLang("LupiTeam", "https://lupiteam.net", "it"),
|
SingleLang("LupiTeam", "https://lupiteam.net", "it"),
|
||||||
SingleLang("Zandy no Fansub", "https://zandynofansub.aishiteru.org", "en"),
|
SingleLang("Zandy no Fansub", "https://zandynofansub.aishiteru.org", "en"),
|
||||||
SingleLang("Kirishima Fansub", "https://www.kirishimafansub.net", "es"),
|
SingleLang("Kirishima Fansub", "https://www.kirishimafansub.net", "es"),
|
||||||
SingleLang("Baixar Hentai", "https://leitura.baixarhentai.net", "pt-BR", isNsfw = true, overrideVersionCode = 2),
|
SingleLang("Baixar Hentai", "https://leitura.baixarhentai.net", "pt-BR", isNsfw = true, overrideVersionCode = 3),
|
||||||
MultiLang("HNI-Scantrad", "https://hni-scantrad.com", listOf("fr", "en"), className = "HNIScantradFactory", pkgName = "hniscantrad", overrideVersionCode = 1),
|
MultiLang("HNI-Scantrad", "https://hni-scantrad.com", listOf("fr", "en"), className = "HNIScantradFactory", pkgName = "hniscantrad", overrideVersionCode = 1),
|
||||||
SingleLang("QuegnaReader", "http://pignaquegna.altervista.org", "it"),
|
SingleLang("QuegnaReader", "http://pignaquegna.altervista.org", "it"),
|
||||||
SingleLang("The Phoenix Scans", "https://www.phoenixscans.com", "it", className = "PhoenixScans"),
|
SingleLang("The Phoenix Scans", "https://www.phoenixscans.com", "it", className = "PhoenixScans"),
|
||||||
|
|
|
@ -36,26 +36,26 @@ class MadaraGenerator : ThemeSourceGenerator {
|
||||||
SingleLang("ApollComics", "https://apollcomics.xyz", "es", overrideVersionCode = 1),
|
SingleLang("ApollComics", "https://apollcomics.xyz", "es", overrideVersionCode = 1),
|
||||||
SingleLang("ArabMkr", "https://arabmkr.me", "ar"),
|
SingleLang("ArabMkr", "https://arabmkr.me", "ar"),
|
||||||
SingleLang("ArazNovel", "https://www.araznovel.com", "tr", overrideVersionCode = 1),
|
SingleLang("ArazNovel", "https://www.araznovel.com", "tr", overrideVersionCode = 1),
|
||||||
SingleLang("Argos Scan", "https://argosscan.com", "pt-BR", overrideVersionCode = 2),
|
SingleLang("Argos Scan", "https://argosscan.com", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("Arthur Scan", "https://arthurscan.xyz", "pt-BR", overrideVersionCode = 1),
|
SingleLang("Arthur Scan", "https://arthurscan.xyz", "pt-BR", overrideVersionCode = 2),
|
||||||
SingleLang("Asgard Team", "https://www.asgard1team.com", "ar", overrideVersionCode = 1),
|
SingleLang("Asgard Team", "https://www.asgard1team.com", "ar", overrideVersionCode = 1),
|
||||||
SingleLang("Astral Library", "https://www.astrallibrary.net", "en", overrideVersionCode = 2),
|
SingleLang("Astral Library", "https://www.astrallibrary.net", "en", overrideVersionCode = 2),
|
||||||
SingleLang("Atikrost", "https://atikrost.com", "tr", overrideVersionCode = 1),
|
SingleLang("Atikrost", "https://atikrost.com", "tr", overrideVersionCode = 1),
|
||||||
SingleLang("AZManhwa", "https://azmanhwa.net", "en"),
|
SingleLang("AZManhwa", "https://azmanhwa.net", "en"),
|
||||||
SingleLang("Azora", "https://azoramanga.com", "ar", overrideVersionCode = 2),
|
SingleLang("Azora", "https://azoramanga.com", "ar", overrideVersionCode = 2),
|
||||||
SingleLang("BL Manhwa Club", "https://blmanhwa.club", "pt-BR", isNsfw = true, className = "BlManhwaClub", overrideVersionCode = 1),
|
SingleLang("BL Manhwa Club", "https://blmanhwa.club", "pt-BR", isNsfw = true, className = "BlManhwaClub", overrideVersionCode = 2),
|
||||||
SingleLang("Block Manga", "https://blockmanga.com", "en"),
|
SingleLang("Block Manga", "https://blockmanga.com", "en"),
|
||||||
SingleLang("Bakaman", "https://bakaman.net", "th", overrideVersionCode = 1),
|
SingleLang("Bakaman", "https://bakaman.net", "th", overrideVersionCode = 1),
|
||||||
SingleLang("Banana Mecânica", "https://leitorbm.com", "pt-BR", isNsfw = true, pkgName = "bananamecanica", className = "BananaMecanica", overrideVersionCode = 1),
|
SingleLang("Banana Mecânica", "https://leitorbm.com", "pt-BR", isNsfw = true, pkgName = "bananamecanica", className = "BananaMecanica", overrideVersionCode = 2),
|
||||||
SingleLang("BestManga", "https://bestmanga.club", "ru", overrideVersionCode = 1),
|
SingleLang("BestManga", "https://bestmanga.club", "ru", overrideVersionCode = 1),
|
||||||
SingleLang("BestManhua", "https://bestmanhua.com", "en", overrideVersionCode = 2),
|
SingleLang("BestManhua", "https://bestmanhua.com", "en", overrideVersionCode = 2),
|
||||||
SingleLang("BlogManga", "https://blogmanga.net", "en"),
|
SingleLang("BlogManga", "https://blogmanga.net", "en"),
|
||||||
SingleLang("BoysLove", "https://boyslove.me", "en", overrideVersionCode = 2),
|
SingleLang("BoysLove", "https://boyslove.me", "en", overrideVersionCode = 2),
|
||||||
SingleLang("CAT-translator", "https://cat-translator.com", "th", className = "CatTranslator", overrideVersionCode = 1),
|
SingleLang("CAT-translator", "https://cat-translator.com", "th", className = "CatTranslator", overrideVersionCode = 1),
|
||||||
SingleLang("Café com Yaoi", "http://cafecomyaoi.com.br", "pt-BR", pkgName = "cafecomyaoi", className = "CafeComYaoi", isNsfw = true),
|
SingleLang("Café com Yaoi", "http://cafecomyaoi.com.br", "pt-BR", pkgName = "cafecomyaoi", className = "CafeComYaoi", isNsfw = true, overrideVersionCode = 1),
|
||||||
SingleLang("CatOnHeadTranslations", "https://catonhead.com", "en", overrideVersionCode = 1),
|
SingleLang("CatOnHeadTranslations", "https://catonhead.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Cerise Scans", "https://cerisescans.com", "pt-BR", overrideVersionCode = 1),
|
SingleLang("Cerise Scans", "https://cerisescans.com", "pt-BR", overrideVersionCode = 2),
|
||||||
SingleLang("Cervo Scanlator", "https://cervoscan.xyz", "pt-BR", overrideVersionCode = 2),
|
SingleLang("Cervo Scanlator", "https://cervoscan.xyz", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("Chibi Manga", "https://www.cmreader.info", "en", overrideVersionCode = 1),
|
SingleLang("Chibi Manga", "https://www.cmreader.info", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Clover Manga", "https://clover-manga.com", "tr", overrideVersionCode = 2),
|
SingleLang("Clover Manga", "https://clover-manga.com", "tr", overrideVersionCode = 2),
|
||||||
SingleLang("ComicKiba", "https://comickiba.com", "en", overrideVersionCode = 1),
|
SingleLang("ComicKiba", "https://comickiba.com", "en", overrideVersionCode = 1),
|
||||||
|
@ -64,28 +64,28 @@ class MadaraGenerator : ThemeSourceGenerator {
|
||||||
SingleLang("Comics Valley", "https://comicsvalley.com", "hi", isNsfw = true, overrideVersionCode = 1),
|
SingleLang("Comics Valley", "https://comicsvalley.com", "hi", isNsfw = true, overrideVersionCode = 1),
|
||||||
SingleLang("ComicsWorld", "https://comicsworld.in", "hi"),
|
SingleLang("ComicsWorld", "https://comicsworld.in", "hi"),
|
||||||
SingleLang("CopyPasteScan", "https://copypastescan.xyz", "es", overrideVersionCode = 1),
|
SingleLang("CopyPasteScan", "https://copypastescan.xyz", "es", overrideVersionCode = 1),
|
||||||
SingleLang("DarkYue Realm", "https://darkyuerealm.site/web", "pt-BR", pkgName = "darkyurealm", overrideVersionCode = 3),
|
SingleLang("DarkYue Realm", "https://darkyuerealm.site/web", "pt-BR", pkgName = "darkyurealm", overrideVersionCode = 4),
|
||||||
SingleLang("Decadence Scans", "https://reader.decadencescans.com", "en", overrideVersionCode = 1),
|
SingleLang("Decadence Scans", "https://reader.decadencescans.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("DiamondFansub", "https://diamondfansub.com", "tr", overrideVersionCode = 1),
|
SingleLang("DiamondFansub", "https://diamondfansub.com", "tr", overrideVersionCode = 1),
|
||||||
SingleLang("Disaster Scans", "https://disasterscans.com", "en", overrideVersionCode = 1),
|
SingleLang("Disaster Scans", "https://disasterscans.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Diskus Scan", "https://diskusscan.com", "pt-BR"),
|
SingleLang("Diskus Scan", "https://diskusscan.com", "pt-BR", overrideVersionCode = 1),
|
||||||
SingleLang("DoujinHentai", "https://doujinhentai.net", "es", isNsfw = true, overrideVersionCode = 1),
|
SingleLang("DoujinHentai", "https://doujinhentai.net", "es", isNsfw = true, overrideVersionCode = 1),
|
||||||
SingleLang("Dream Manga", "https://en.ruyamanga.com", "en", overrideVersionCode = 2),
|
SingleLang("Dream Manga", "https://en.ruyamanga.com", "en", overrideVersionCode = 2),
|
||||||
SingleLang("Drope Scan", "https://dropescan.com", "pt-BR", overrideVersionCode = 2),
|
SingleLang("Drope Scan", "https://dropescan.com", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("Dream Union Scan", "https://www.dreamunionscan.com", "pt-BR"),
|
SingleLang("Dream Union Scan", "https://www.dreamunionscan.com", "pt-BR", overrideVersionCode = 1),
|
||||||
SingleLang("Esomanga", "http://esomanga.com", "tr"),
|
SingleLang("Esomanga", "http://esomanga.com", "tr"),
|
||||||
SingleLang("Exo Scans", "https://exoscans.club", "en"),
|
SingleLang("Exo Scans", "https://exoscans.club", "en"),
|
||||||
SingleLang("FastManhwa", "https://fastmanhwa.com", "en", isNsfw = true),
|
SingleLang("FastManhwa", "https://fastmanhwa.com", "en", isNsfw = true),
|
||||||
SingleLang("FDM Scan", "https://fdmscan.com", "pt-BR", overrideVersionCode = 2),
|
SingleLang("FDM Scan", "https://fdmscan.com", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("Free Manga", "https://freemanga.me", "en", isNsfw = true, overrideVersionCode = 2),
|
SingleLang("Free Manga", "https://freemanga.me", "en", isNsfw = true, overrideVersionCode = 2),
|
||||||
SingleLang("FreeWebtoonCoins", "https://freewebtooncoins.com", "en", overrideVersionCode = 1),
|
SingleLang("FreeWebtoonCoins", "https://freewebtooncoins.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Fudido Scanlator", "https://fudidoscan.com", "pt-BR", isNsfw = true, overrideVersionCode = 1),
|
SingleLang("Fudido Scanlator", "https://fudidoscan.com", "pt-BR", isNsfw = true, overrideVersionCode = 2),
|
||||||
SingleLang("Fukushuu no Yuusha", "https://fny-scantrad.com", "fr", overrideVersionCode = 2),
|
SingleLang("Fukushuu no Yuusha", "https://fny-scantrad.com", "fr", overrideVersionCode = 2),
|
||||||
SingleLang("Furio Scans", "https://furioscans.com", "pt-BR", overrideVersionCode = 2),
|
SingleLang("Furio Scans", "https://furioscans.com", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("Fênix Scanlator", "https://fenixscanlator.xyz", "pt-BR", pkgName = "fenixscanlator", className = "FenixScanlator", overrideVersionCode = 1),
|
SingleLang("Fênix Scanlator", "https://fenixscanlator.xyz", "pt-BR", pkgName = "fenixscanlator", className = "FenixScanlator", overrideVersionCode = 2),
|
||||||
SingleLang("GalaxyDegenScans", "https://gdegenscans.xyz/", "en", overrideVersionCode = 1),
|
SingleLang("GalaxyDegenScans", "https://gdegenscans.xyz/", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Geass Hentai", "https://geasshentai.xyz", "pt-BR", isNsfw = true),
|
SingleLang("Geass Hentai", "https://geasshentai.xyz", "pt-BR", isNsfw = true, overrideVersionCode = 1),
|
||||||
SingleLang("Glory Scans", "https://gloryscan.com", "pt-BR", isNsfw = true, overrideVersionCode = 1),
|
SingleLang("Glory Scans", "https://gloryscan.com", "pt-BR", isNsfw = true, overrideVersionCode = 2),
|
||||||
SingleLang("Gogoscans", "https://www.gogoscans.com", "en"),
|
SingleLang("Gogoscans", "https://www.gogoscans.com", "en"),
|
||||||
SingleLang("Graze Scans", "https://grazescans.com/", "en", overrideVersionCode = 1),
|
SingleLang("Graze Scans", "https://grazescans.com/", "en", overrideVersionCode = 1),
|
||||||
SingleLang("GuncelManga", "https://guncelmanga.com", "tr", overrideVersionCode = 1),
|
SingleLang("GuncelManga", "https://guncelmanga.com", "tr", overrideVersionCode = 1),
|
||||||
|
@ -106,7 +106,7 @@ class MadaraGenerator : ThemeSourceGenerator {
|
||||||
SingleLang("Ichirin No Hana Yuri", "https://ichirinnohanayuri.com.br", "pt-BR", overrideVersionCode = 3),
|
SingleLang("Ichirin No Hana Yuri", "https://ichirinnohanayuri.com.br", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("Immortal Updates", "https://immortalupdates.com", "en", overrideVersionCode = 1),
|
SingleLang("Immortal Updates", "https://immortalupdates.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Imperfect Comics", "https://imperfectcomic.com", "en"),
|
SingleLang("Imperfect Comics", "https://imperfectcomic.com", "en"),
|
||||||
SingleLang("Império dos Otakus", "https://imperiodosotakus.tk", "pt-BR", className = "ImperioDosOtakus", overrideVersionCode = 1),
|
SingleLang("Império dos Otakus", "https://imperiodosotakus.tk", "pt-BR", className = "ImperioDosOtakus", overrideVersionCode = 2),
|
||||||
SingleLang("InfraFandub", "https://infrafandub.xyz", "es"),
|
SingleLang("InfraFandub", "https://infrafandub.xyz", "es"),
|
||||||
SingleLang("IsekaiScan.com", "https://isekaiscan.com", "en", className = "IsekaiScanCom", overrideVersionCode = 2),
|
SingleLang("IsekaiScan.com", "https://isekaiscan.com", "en", className = "IsekaiScanCom", overrideVersionCode = 2),
|
||||||
SingleLang("IsekaiScanManga (unoriginal)", "https://isekaiscanmanga.com", "en", className = "IsekaiScanManga", overrideVersionCode = 1),
|
SingleLang("IsekaiScanManga (unoriginal)", "https://isekaiscanmanga.com", "en", className = "IsekaiScanManga", overrideVersionCode = 1),
|
||||||
|
@ -123,8 +123,8 @@ class MadaraGenerator : ThemeSourceGenerator {
|
||||||
SingleLang("Levelerscans", "https://levelerscans.xyz", "en", overrideVersionCode = 1),
|
SingleLang("Levelerscans", "https://levelerscans.xyz", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Leviatan Scans X", "https://xxx.leviatanscans.com", "en", isNsfw = true),
|
SingleLang("Leviatan Scans X", "https://xxx.leviatanscans.com", "en", isNsfw = true),
|
||||||
SingleLang("Lily Manga", "https://lilymanga.com", "en"),
|
SingleLang("Lily Manga", "https://lilymanga.com", "en"),
|
||||||
SingleLang("Lima Scans", "http://limascans.xyz/v2", "pt-BR", isNsfw = true, overrideVersionCode = 1),
|
SingleLang("Lima Scans", "http://limascans.xyz/v2", "pt-BR", isNsfw = true, overrideVersionCode = 2),
|
||||||
SingleLang("Little Monster Scan", "https://littlemonsterscan.com.br", "pt-BR", overrideVersionCode = 2),
|
SingleLang("Little Monster Scan", "https://littlemonsterscan.com.br", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("Lolicon", "https://lolicon.mobi", "en", isNsfw = true, overrideVersionCode = 1),
|
SingleLang("Lolicon", "https://lolicon.mobi", "en", isNsfw = true, overrideVersionCode = 1),
|
||||||
SingleLang("LovableSubs", "https://lovablesubs.com", "tr", overrideVersionCode = 1),
|
SingleLang("LovableSubs", "https://lovablesubs.com", "tr", overrideVersionCode = 1),
|
||||||
SingleLang("MG Komik", "https://mgkomik.com", "id", overrideVersionCode = 2),
|
SingleLang("MG Komik", "https://mgkomik.com", "id", overrideVersionCode = 2),
|
||||||
|
@ -202,7 +202,7 @@ class MadaraGenerator : ThemeSourceGenerator {
|
||||||
SingleLang("MangaToRead", "https://mangatoread.com", "en"),
|
SingleLang("MangaToRead", "https://mangatoread.com", "en"),
|
||||||
SingleLang("MangaTK", "https://mangatk.com", "en"),
|
SingleLang("MangaTK", "https://mangatk.com", "en"),
|
||||||
SingleLang("MangaTX", "https://mangatx.com", "en", overrideVersionCode = 1),
|
SingleLang("MangaTX", "https://mangatx.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("MangaTeca", "https://www.mangateca.com", "pt-BR", overrideVersionCode = 2),
|
SingleLang("MangaTeca", "https://www.mangateca.com", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("MangaTuli", "https://mangatuli.com", "en", isNsfw = true, overrideVersionCode = 2),
|
SingleLang("MangaTuli", "https://mangatuli.com", "en", isNsfw = true, overrideVersionCode = 2),
|
||||||
SingleLang("MangaUS", "https://mangaus.xyz", "en", overrideVersionCode = 2),
|
SingleLang("MangaUS", "https://mangaus.xyz", "en", overrideVersionCode = 2),
|
||||||
SingleLang("MangaVB", "https://mangavb.com", "en", isNsfw = true),
|
SingleLang("MangaVB", "https://mangavb.com", "en", isNsfw = true),
|
||||||
|
@ -254,21 +254,21 @@ class MadaraGenerator : ThemeSourceGenerator {
|
||||||
SingleLang("ManyToon.me", "https://manytoon.me", "en", isNsfw = true, className = "ManyToonMe", overrideVersionCode = 2),
|
SingleLang("ManyToon.me", "https://manytoon.me", "en", isNsfw = true, className = "ManyToonMe", overrideVersionCode = 2),
|
||||||
SingleLang("ManyToonClub", "https://manytoon.club", "ko", isNsfw = true, overrideVersionCode = 1),
|
SingleLang("ManyToonClub", "https://manytoon.club", "ko", isNsfw = true, overrideVersionCode = 1),
|
||||||
SingleLang("ManyComic", "https://manycomic.com", "en", isNsfw = true, overrideVersionCode = 1),
|
SingleLang("ManyComic", "https://manycomic.com", "en", isNsfw = true, overrideVersionCode = 1),
|
||||||
SingleLang("Mark Scans", "https://markscans.online", "pt-BR", overrideVersionCode = 2),
|
SingleLang("Mark Scans", "https://markscans.online", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("MHentais", "https://mhentais.com", "pt-BR", isNsfw = true),
|
SingleLang("MHentais", "https://mhentais.com", "pt-BR", isNsfw = true, overrideVersionCode = 1),
|
||||||
SingleLang("Mhmanga", "https://mhmanga.com", "en"),
|
SingleLang("Mhmanga", "https://mhmanga.com", "en"),
|
||||||
SingleLang("NeoXXX Scans", "https://xxx.neoxscans.com", "pt-BR", isNsfw = true, overrideVersionCode = 2),
|
SingleLang("NeoXXX Scans", "https://xxx.neoxscans.com", "pt-BR", isNsfw = true, overrideVersionCode = 2),
|
||||||
SingleLang("Midnight Mess Scans", "https://midnightmess.org", "en", isNsfw = true, overrideVersionCode = 5),
|
SingleLang("Midnight Mess Scans", "https://midnightmess.org", "en", isNsfw = true, overrideVersionCode = 5),
|
||||||
SingleLang("Milftoon", "https://milftoon.xxx", "en", isNsfw = true, overrideVersionCode = 2),
|
SingleLang("Milftoon", "https://milftoon.xxx", "en", isNsfw = true, overrideVersionCode = 2),
|
||||||
SingleLang("Mixed Manga", "https://mixedmanga.com", "en", overrideVersionCode = 1),
|
SingleLang("Mixed Manga", "https://mixedmanga.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Mode Scanlator", "https://modescanlator.com", "pt-BR", overrideVersionCode = 1),
|
SingleLang("Mode Scanlator", "https://modescanlator.com", "pt-BR", overrideVersionCode = 2),
|
||||||
SingleLang("Moon Witch In Love", "https://moonwitchinlove.com", "pt-BR"),
|
SingleLang("Moon Witch In Love", "https://moonwitchinlove.com", "pt-BR", overrideVersionCode = 1),
|
||||||
SingleLang("Mortals Groove", "https://mortalsgroove.com", "en"),
|
SingleLang("Mortals Groove", "https://mortalsgroove.com", "en"),
|
||||||
SingleLang("Muctau", "https://muctau.com", "en"),
|
SingleLang("Muctau", "https://muctau.com", "en"),
|
||||||
SingleLang("Mystical Merries", "https://mysticalmerries.com", "en", overrideVersionCode = 1),
|
SingleLang("Mystical Merries", "https://mysticalmerries.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("NeatManga", "https://neatmanga.com", "en", overrideVersionCode = 1),
|
SingleLang("NeatManga", "https://neatmanga.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("NekoScan", "https://nekoscan.com", "en", overrideVersionCode = 1),
|
SingleLang("NekoScan", "https://nekoscan.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("NekoBreaker Scan", "https://nekobreakerscan.com", "pt-BR"),
|
SingleLang("NekoBreaker Scan", "https://nekobreakerscan.com", "pt-BR", overrideVersionCode = 1),
|
||||||
SingleLang("Neox Scanlator", "https://neoxscans.com", "pt-BR", overrideVersionCode = 7),
|
SingleLang("Neox Scanlator", "https://neoxscans.com", "pt-BR", overrideVersionCode = 7),
|
||||||
SingleLang("Night Comic", "https://www.nightcomic.com", "en", overrideVersionCode = 1),
|
SingleLang("Night Comic", "https://www.nightcomic.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Niji Translations", "https://niji-translations.com", "ar"),
|
SingleLang("Niji Translations", "https://niji-translations.com", "ar"),
|
||||||
|
@ -276,9 +276,9 @@ class MadaraGenerator : ThemeSourceGenerator {
|
||||||
SingleLang("Nitro Scans", "https://nitroscans.com", "en"),
|
SingleLang("Nitro Scans", "https://nitroscans.com", "en"),
|
||||||
SingleLang("NovelMic", "https://novelmic.com", "en", overrideVersionCode = 1),
|
SingleLang("NovelMic", "https://novelmic.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Oh No Manga", "https://ohnomanga.com", "en", isNsfw = true),
|
SingleLang("Oh No Manga", "https://ohnomanga.com", "en", isNsfw = true),
|
||||||
SingleLang("Off Scan", "https://offscan.top", "pt-BR", overrideVersionCode = 2),
|
SingleLang("Off Scan", "https://offscan.top", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("OnManga", "https://onmanga.com", "en", overrideVersionCode = 1),
|
SingleLang("OnManga", "https://onmanga.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Origami Orpheans", "https://origami-orpheans.com.br", "pt-BR", overrideVersionCode = 2),
|
SingleLang("Origami Orpheans", "https://origami-orpheans.com.br", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("Paean Scans", "https://paeanscans.com", "en", overrideVersionCode = 1),
|
SingleLang("Paean Scans", "https://paeanscans.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Painful Nightz Scan", "https://painfulnightzscan.com", "en"),
|
SingleLang("Painful Nightz Scan", "https://painfulnightzscan.com", "en"),
|
||||||
SingleLang("Platinum Crown", "https://platinumscans.com", "en", overrideVersionCode = 1),
|
SingleLang("Platinum Crown", "https://platinumscans.com", "en", overrideVersionCode = 1),
|
||||||
|
@ -286,17 +286,17 @@ class MadaraGenerator : ThemeSourceGenerator {
|
||||||
SingleLang("PoManga", "https://pomanga.com", "en"),
|
SingleLang("PoManga", "https://pomanga.com", "en"),
|
||||||
SingleLang("PornComix", "https://www.porncomixonline.net", "en", isNsfw = true, overrideVersionCode = 1),
|
SingleLang("PornComix", "https://www.porncomixonline.net", "en", isNsfw = true, overrideVersionCode = 1),
|
||||||
SingleLang("Pornwha", "https://pornwha.com", "en", isNsfw = true, overrideVersionCode = 1),
|
SingleLang("Pornwha", "https://pornwha.com", "en", isNsfw = true, overrideVersionCode = 1),
|
||||||
SingleLang("Prisma Scans", "https://prismascans.net", "pt-BR"),
|
SingleLang("Prisma Scans", "https://prismascans.net", "pt-BR", overrideVersionCode = 1),
|
||||||
SingleLang("Projeto Scanlator", "https://projetoscanlator.com", "pt-BR", overrideVersionCode = 2),
|
SingleLang("Projeto Scanlator", "https://projetoscanlator.com", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("QueensManga ملكات المانجا", "https://queensmanga.com", "ar", className = "QueensManga", overrideVersionCode = 1),
|
SingleLang("QueensManga ملكات المانجا", "https://queensmanga.com", "ar", className = "QueensManga", overrideVersionCode = 1),
|
||||||
SingleLang("Random Scan", "https://randomscan.online", "pt-BR", overrideVersionCode = 3),
|
SingleLang("Random Scan", "https://randomscan.online", "pt-BR", overrideVersionCode = 4),
|
||||||
SingleLang("Random Translations", "https://randomtranslations.com", "en", overrideVersionCode = 1),
|
SingleLang("Random Translations", "https://randomtranslations.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Raw Mangas", "https://rawmangas.net", "ja", isNsfw = true, overrideVersionCode = 1),
|
SingleLang("Raw Mangas", "https://rawmangas.net", "ja", isNsfw = true, overrideVersionCode = 1),
|
||||||
SingleLang("RawDEX", "https://rawdex.net", "ko", isNsfw = true, overrideVersionCode = 1),
|
SingleLang("RawDEX", "https://rawdex.net", "ko", isNsfw = true, overrideVersionCode = 1),
|
||||||
SingleLang("ReadAdult", "https://readadult.net", "en", isNsfw = true),
|
SingleLang("ReadAdult", "https://readadult.net", "en", isNsfw = true),
|
||||||
SingleLang("ReadManhua", "https://readmanhua.net", "en", overrideVersionCode = 2),
|
SingleLang("ReadManhua", "https://readmanhua.net", "en", overrideVersionCode = 2),
|
||||||
SingleLang("Reaper Scans", "https://reaperscans.com", "en"),
|
SingleLang("Reaper Scans", "https://reaperscans.com", "en"),
|
||||||
SingleLang("Red Ribbon Scanlator", "https://redribbon.site", "pt-BR"),
|
SingleLang("Red Ribbon Scanlator", "https://redribbon.site", "pt-BR", overrideVersionCode = 1),
|
||||||
SingleLang("Renascence Scans (Renascans)", "https://new.renascans.com", "en", className = "RenaScans", overrideVersionCode = 1),
|
SingleLang("Renascence Scans (Renascans)", "https://new.renascans.com", "en", className = "RenaScans", overrideVersionCode = 1),
|
||||||
SingleLang("Reset Scans", "https://reset-scans.com", "en", overrideVersionCode = 3),
|
SingleLang("Reset Scans", "https://reset-scans.com", "en", overrideVersionCode = 3),
|
||||||
SingleLang("Rüya Manga", "https://www.ruyamanga.com", "tr", className = "RuyaManga", overrideVersionCode = 1),
|
SingleLang("Rüya Manga", "https://www.ruyamanga.com", "tr", className = "RuyaManga", overrideVersionCode = 1),
|
||||||
|
@ -312,20 +312,20 @@ class MadaraGenerator : ThemeSourceGenerator {
|
||||||
SingleLang("Shooting Star Scans", "https://shootingstarscans.xyz", "en", overrideVersionCode = 1),
|
SingleLang("Shooting Star Scans", "https://shootingstarscans.xyz", "en", overrideVersionCode = 1),
|
||||||
SingleLang("ShoujoHearts", "https://shoujohearts.com", "en", overrideVersionCode = 2),
|
SingleLang("ShoujoHearts", "https://shoujohearts.com", "en", overrideVersionCode = 2),
|
||||||
SingleLang("SiXiang Scans", "http://www.sixiangscans.com", "en", overrideVersionCode = 1),
|
SingleLang("SiXiang Scans", "http://www.sixiangscans.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Sinensis", "https://sinensisscan.com", "pt-BR"),
|
SingleLang("Sinensis", "https://sinensisscan.com", "pt-BR", overrideVersionCode = 1),
|
||||||
SingleLang("Siyahmelek", "https://siyahmelek.net", "tr", isNsfw = true, overrideVersionCode = 2),
|
SingleLang("Siyahmelek", "https://siyahmelek.net", "tr", isNsfw = true, overrideVersionCode = 2),
|
||||||
SingleLang("Skymanga", "https://skymanga.co", "en", overrideVersionCode = 1),
|
SingleLang("Skymanga", "https://skymanga.co", "en", overrideVersionCode = 1),
|
||||||
SingleLang("SkyRaws", "https://skyraws.com", "en"),
|
SingleLang("SkyRaws", "https://skyraws.com", "en"),
|
||||||
SingleLang("Sleeping Knight Scans", "https://skscans.com", "en", overrideVersionCode = 2),
|
SingleLang("Sleeping Knight Scans", "https://skscans.com", "en", overrideVersionCode = 2),
|
||||||
SingleLang("Sleepy Translations", "https://sleepytranslations.com/", "en", overrideVersionCode = 1),
|
SingleLang("Sleepy Translations", "https://sleepytranslations.com/", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Solo Leveling", "https://readsololeveling.online", "en"),
|
SingleLang("Solo Leveling", "https://readsololeveling.online", "en"),
|
||||||
SingleLang("StageComics", "https://stagecomics.com", "pt-BR", overrideVersionCode = 2),
|
SingleLang("StageComics", "https://stagecomics.com", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("Sugar Babies", "https://sugarbscan.com", "en", overrideVersionCode = 1),
|
SingleLang("Sugar Babies", "https://sugarbscan.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Sweet Time Scan", "https://sweetscan.net", "pt-BR", overrideVersionCode = 1),
|
SingleLang("Sweet Time Scan", "https://sweetscan.net", "pt-BR", overrideVersionCode = 2),
|
||||||
SingleLang("TappyToon.Net", "https://tappytoon.net", "en", className = "Tappytoonnet"),
|
SingleLang("TappyToon.Net", "https://tappytoon.net", "en", className = "Tappytoonnet"),
|
||||||
SingleLang("TeenManhua", "https://teenmanhua.com", "en"),
|
SingleLang("TeenManhua", "https://teenmanhua.com", "en"),
|
||||||
SingleLang("TheFluffyHangoutGroup", "https://www.fluffyhangout.club", "en", overrideVersionCode = 2),
|
SingleLang("TheFluffyHangoutGroup", "https://www.fluffyhangout.club", "en", overrideVersionCode = 2),
|
||||||
SingleLang("Three Queens Scanlator", "https://tqscan.com.br", "pt-BR", overrideVersionCode = 2),
|
SingleLang("Three Queens Scanlator", "https://tqscan.com.br", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("Time Naight", "https://timenaight.com", "tr"),
|
SingleLang("Time Naight", "https://timenaight.com", "tr"),
|
||||||
SingleLang("Todaymic", "https://todaymic.com", "en"),
|
SingleLang("Todaymic", "https://todaymic.com", "en"),
|
||||||
SingleLang("ToonGod", "https://www.toongod.com", "en", isNsfw = true, overrideVersionCode = 2),
|
SingleLang("ToonGod", "https://www.toongod.com", "en", isNsfw = true, overrideVersionCode = 2),
|
||||||
|
@ -336,36 +336,36 @@ class MadaraGenerator : ThemeSourceGenerator {
|
||||||
SingleLang("TritiniaScans", "https://tritinia.com", "en", overrideVersionCode = 1),
|
SingleLang("TritiniaScans", "https://tritinia.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("TruyenTranhAudio.com", "https://truyentranhaudio.com", "vi", className = "TruyenTranhAudioCom"),
|
SingleLang("TruyenTranhAudio.com", "https://truyentranhaudio.com", "vi", className = "TruyenTranhAudioCom"),
|
||||||
SingleLang("TruyenTranhAudio.online", "https://truyentranhaudio.online", "vi", className = "TruyenTranhAudioOnline"),
|
SingleLang("TruyenTranhAudio.online", "https://truyentranhaudio.online", "vi", className = "TruyenTranhAudioOnline"),
|
||||||
SingleLang("Tsundoku Traduções", "https://tsundokutraducoes.com.br", "pt-BR", pkgName = "tsundokutraducoes", className = "TsundokuTraducoes", overrideVersionCode = 2),
|
SingleLang("Tsundoku Traduções", "https://tsundokutraducoes.com.br", "pt-BR", pkgName = "tsundokutraducoes", className = "TsundokuTraducoes", overrideVersionCode = 3),
|
||||||
SingleLang("TuManga.net", "https://tumanga.net", "es", className = "TuMangaNet"),
|
SingleLang("TuManga.net", "https://tumanga.net", "es", className = "TuMangaNet"),
|
||||||
SingleLang("Twilight Scans", "https://twilightscans.com", "en", overrideVersionCode = 1),
|
SingleLang("Twilight Scans", "https://twilightscans.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Türkçe Manga", "https://turkcemanga.com", "tr", className = "TurkceManga", overrideVersionCode = 1),
|
SingleLang("Türkçe Manga", "https://turkcemanga.com", "tr", className = "TurkceManga", overrideVersionCode = 1),
|
||||||
SingleLang("Unemployed Scans", "https://unemployedscans.com", "en", overrideVersionCode = 1),
|
SingleLang("Unemployed Scans", "https://unemployedscans.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Uyuyan Balik", "https://uyuyanbalik.com/", "tr", overrideVersionCode = 1),
|
SingleLang("Uyuyan Balik", "https://uyuyanbalik.com/", "tr", overrideVersionCode = 1),
|
||||||
SingleLang("Vanguard Bun", "https://vanguardbun.com/", "en", overrideVersionCode = 1),
|
SingleLang("Vanguard Bun", "https://vanguardbun.com/", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Vapo Scan", "https://vaposcan.net", "pt-BR"),
|
SingleLang("Vapo Scan", "https://vaposcan.net", "pt-BR", overrideVersionCode = 1),
|
||||||
SingleLang("Visbellum", "https://visbellum.com", "pt-BR", overrideVersionCode = 1),
|
SingleLang("Visbellum", "https://visbellum.com", "pt-BR", overrideVersionCode = 2),
|
||||||
SingleLang("Volkan Scans", "https://volkanscans.com", "en", overrideVersionCode = 1),
|
SingleLang("Volkan Scans", "https://volkanscans.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("Wakamics", "https://wakamics.net", "en"),
|
SingleLang("Wakamics", "https://wakamics.net", "en"),
|
||||||
SingleLang("Wakascan", "https://wakascan.com", "fr", overrideVersionCode = 1),
|
SingleLang("Wakascan", "https://wakascan.com", "fr", overrideVersionCode = 1),
|
||||||
SingleLang("War Queen Scan", "https://wqscan.com.br", "pt-BR", overrideVersionCode = 3),
|
SingleLang("War Queen Scan", "https://wqscan.com.br", "pt-BR", overrideVersionCode = 4),
|
||||||
SingleLang("WebNovel", "https://webnovel.live", "en", className = "WebNovelLive", overrideVersionCode = 3),
|
SingleLang("WebNovel", "https://webnovel.live", "en", className = "WebNovelLive", overrideVersionCode = 3),
|
||||||
SingleLang("WebToonily", "https://webtoonily.com", "en", isNsfw = true, overrideVersionCode = 1),
|
SingleLang("WebToonily", "https://webtoonily.com", "en", isNsfw = true, overrideVersionCode = 1),
|
||||||
SingleLang("Webtoon Hatti", "https://webtoonhatti.com/", "tr"),
|
SingleLang("Webtoon Hatti", "https://webtoonhatti.com/", "tr"),
|
||||||
SingleLang("WebtoonScan", "https://webtoonscan.com", "en", isNsfw = true),
|
SingleLang("WebtoonScan", "https://webtoonscan.com", "en", isNsfw = true),
|
||||||
SingleLang("WebtoonUK", "https://webtoon.uk", "en", overrideVersionCode = 2),
|
SingleLang("WebtoonUK", "https://webtoon.uk", "en", overrideVersionCode = 2),
|
||||||
SingleLang("WebtoonXYZ", "https://www.webtoon.xyz", "en", isNsfw = true, overrideVersionCode = 3),
|
SingleLang("WebtoonXYZ", "https://www.webtoon.xyz", "en", isNsfw = true, overrideVersionCode = 3),
|
||||||
SingleLang("Winter Scan", "https://winterscan.com.br", "pt-BR", overrideVersionCode = 2),
|
SingleLang("Winter Scan", "https://winterscan.com.br", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("Wonderland", "https://landwebtoons.site", "pt-BR", overrideVersionCode = 2),
|
SingleLang("Wonderland", "https://landwebtoons.site", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("WoopRead", "https://woopread.com", "en", overrideVersionCode = 1),
|
SingleLang("WoopRead", "https://woopread.com", "en", overrideVersionCode = 1),
|
||||||
SingleLang("WuxiaWorld", "https://wuxiaworld.site", "en", overrideVersionCode = 1),
|
SingleLang("WuxiaWorld", "https://wuxiaworld.site", "en", overrideVersionCode = 1),
|
||||||
SingleLang("XManga", "https://xmanga.io", "en", isNsfw = true),
|
SingleLang("XManga", "https://xmanga.io", "en", isNsfw = true),
|
||||||
SingleLang("XManhwa", "https://xmanhwa.com", "en", isNsfw = true),
|
SingleLang("XManhwa", "https://xmanhwa.com", "en", isNsfw = true),
|
||||||
SingleLang("XuN Scans", "https://xunscans.xyz", "en", overrideVersionCode = 2),
|
SingleLang("XuN Scans", "https://xunscans.xyz", "en", overrideVersionCode = 2),
|
||||||
SingleLang("Yaoi Fan Clube", "https://yaoifanclube.com.br", "pt-BR", isNsfw = true, overrideVersionCode = 1),
|
SingleLang("Yaoi Fan Clube", "https://yaoifanclube.com.br", "pt-BR", isNsfw = true, overrideVersionCode = 2),
|
||||||
SingleLang("Yaoi.mobi", "https://yaoi.mobi", "en", isNsfw = true, className = "YaoiManga", pkgName = "yaoimanga", overrideVersionCode = 4),
|
SingleLang("Yaoi.mobi", "https://yaoi.mobi", "en", isNsfw = true, className = "YaoiManga", pkgName = "yaoimanga", overrideVersionCode = 4),
|
||||||
SingleLang("Yaoi Toshokan", "https://yaoitoshokan.net", "pt-BR", isNsfw = true, overrideVersionCode = 2),
|
SingleLang("Yaoi Toshokan", "https://yaoitoshokan.net", "pt-BR", isNsfw = true, overrideVersionCode = 3),
|
||||||
SingleLang("Yuri Verso", "https://yuri.live", "pt-BR", overrideVersionCode = 2),
|
SingleLang("Yuri Verso", "https://yuri.live", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("Zinmanga", "https://zinmanga.com", "en"),
|
SingleLang("Zinmanga", "https://zinmanga.com", "en"),
|
||||||
SingleLang("Zinmanhwa", "https://zinmanhwa.com", "en"),
|
SingleLang("Zinmanhwa", "https://zinmanhwa.com", "en"),
|
||||||
SingleLang("ZuttoManga", "https://zuttomanga.com", "en"),
|
SingleLang("ZuttoManga", "https://zuttomanga.com", "en"),
|
||||||
|
|
|
@ -9,7 +9,7 @@ class MangasProjectGenerator : ThemeSourceGenerator {
|
||||||
|
|
||||||
override val themeClass = "MangasProject"
|
override val themeClass = "MangasProject"
|
||||||
|
|
||||||
override val baseVersionCode: Int = 6
|
override val baseVersionCode: Int = 7
|
||||||
|
|
||||||
override val sources = listOf(
|
override val sources = listOf(
|
||||||
SingleLang("Leitor.net", "https://leitor.net", "pt-BR", className = "LeitorNet", isNsfw = true),
|
SingleLang("Leitor.net", "https://leitor.net", "pt-BR", className = "LeitorNet", isNsfw = true),
|
||||||
|
|
|
@ -57,15 +57,15 @@ class MMRCMSSources {
|
||||||
SourceData.Single("Komik Manga", "https://adm.komikmanga.com", "id"),
|
SourceData.Single("Komik Manga", "https://adm.komikmanga.com", "id"),
|
||||||
SourceData.Single("Mangazuki Raws", "https://raws.mangazuki.co", "ko"),
|
SourceData.Single("Mangazuki Raws", "https://raws.mangazuki.co", "ko"),
|
||||||
SourceData.Single("Mangazuki", "https://mangazuki.co", "en"),
|
SourceData.Single("Mangazuki", "https://mangazuki.co", "en"),
|
||||||
SourceData.Single("Remangas", "https://remangas.top", "pt-BR", overrideVersionCode = 1),
|
SourceData.Single("Remangas", "https://remangas.top", "pt-BR", overrideVersionCode = 2),
|
||||||
SourceData.Single("AnimaRegia", "https://animaregia.net", "pt-BR", overrideVersionCode = 1),
|
SourceData.Single("AnimaRegia", "https://animaregia.net", "pt-BR", overrideVersionCode = 2),
|
||||||
SourceData.Single("MangaVadisi", "http://manga-v2.mangavadisi.org", "tr"),
|
SourceData.Single("MangaVadisi", "http://manga-v2.mangavadisi.org", "tr"),
|
||||||
SourceData.Single("MangaID", "https://mangaid.click", "id"),
|
SourceData.Single("MangaID", "https://mangaid.click", "id"),
|
||||||
SourceData.Single("Jpmangas", "https://jpmangas.co", "fr"),
|
SourceData.Single("Jpmangas", "https://jpmangas.co", "fr"),
|
||||||
SourceData.Single("Op-VF", "https://www.op-vf.com", "fr", className = "OpVF"),
|
SourceData.Single("Op-VF", "https://www.op-vf.com", "fr", className = "OpVF"),
|
||||||
SourceData.Single("FR Scan", "https://frscan.cc", "fr"),
|
SourceData.Single("FR Scan", "https://frscan.cc", "fr"),
|
||||||
SourceData.Single("Gekkou Scans", "https://leitor.gekkouscans.com.br", "pt-BR", isNsfw = true, pkgName = "gekkouscan", overrideVersionCode = 1),
|
SourceData.Single("Gekkou Scans", "https://leitor.gekkouscans.com.br", "pt-BR", isNsfw = true, pkgName = "gekkouscan", overrideVersionCode = 2),
|
||||||
SourceData.Single("Ama Scans", "https://amascan.com", "pt-BR", isNsfw = true),
|
SourceData.Single("Ama Scans", "https://amascan.com", "pt-BR", isNsfw = true, overrideVersionCode = 1),
|
||||||
// NOTE: THIS SOURCE CONTAINS A CUSTOM LANGUAGE SYSTEM (which will be ignored)!
|
// NOTE: THIS SOURCE CONTAINS A CUSTOM LANGUAGE SYSTEM (which will be ignored)!
|
||||||
SourceData.Single("HentaiShark", "https://www.hentaishark.com", "all", isNsfw = true),
|
SourceData.Single("HentaiShark", "https://www.hentaishark.com", "all", isNsfw = true),
|
||||||
//MultiLang("HentaiShark", "https://www.hentaishark.com", listOf("en", "ja", "zh", "de", "nl", "ko", "cz", "eo", "mn", "ar", "sk", "la", "ua", "ceb", "tl", "fi", "bg", "tr"), isNsfw = true, className = "HentaiSharkFactory"),
|
//MultiLang("HentaiShark", "https://www.hentaishark.com", listOf("en", "ja", "zh", "de", "nl", "ko", "cz", "eo", "mn", "ar", "sk", "la", "ua", "ceb", "tl", "fi", "bg", "tr"), isNsfw = true, className = "HentaiSharkFactory"),
|
||||||
|
|
|
@ -36,7 +36,7 @@ class WPMangaStreamGenerator : ThemeSourceGenerator {
|
||||||
SingleLang("Manga Raw.org", "https://mangaraw.org", "ja", className = "MangaRawOrg", overrideVersionCode = 1),
|
SingleLang("Manga Raw.org", "https://mangaraw.org", "ja", className = "MangaRawOrg", overrideVersionCode = 1),
|
||||||
SingleLang("Manga Pro Z", "https://mangaproz.com", "ar"),
|
SingleLang("Manga Pro Z", "https://mangaproz.com", "ar"),
|
||||||
SingleLang("Mihentai", "https://mihentai.com", "en", isNsfw = true),
|
SingleLang("Mihentai", "https://mihentai.com", "en", isNsfw = true),
|
||||||
SingleLang("Silence Scan", "https://silencescan.net", "pt-BR", overrideVersionCode = 2),
|
SingleLang("Silence Scan", "https://silencescan.net", "pt-BR", overrideVersionCode = 3),
|
||||||
SingleLang("Kuma Scans (Kuma Translation)", "https://kumascans.com", "en", className = "KumaScans", overrideVersionCode = 1),
|
SingleLang("Kuma Scans (Kuma Translation)", "https://kumascans.com", "en", className = "KumaScans", overrideVersionCode = 1),
|
||||||
SingleLang("Tempest Manga", "https://manga.tempestfansub.com", "tr"),
|
SingleLang("Tempest Manga", "https://manga.tempestfansub.com", "tr"),
|
||||||
SingleLang("xCaliBR Scans", "https://xcalibrscans.com", "en", overrideVersionCode = 2),
|
SingleLang("xCaliBR Scans", "https://xcalibrscans.com", "en", overrideVersionCode = 2),
|
||||||
|
@ -44,9 +44,9 @@ class WPMangaStreamGenerator : ThemeSourceGenerator {
|
||||||
SingleLang("World Romance Translation", "https://wrt.my.id", "id", overrideVersionCode = 3),
|
SingleLang("World Romance Translation", "https://wrt.my.id", "id", overrideVersionCode = 3),
|
||||||
SingleLang("The Apollo Team", "https://theapollo.team", "en"),
|
SingleLang("The Apollo Team", "https://theapollo.team", "en"),
|
||||||
SingleLang("Sekte Doujin", "https://sektedoujin.xyz", "id", isNsfw = true, overrideVersionCode = 2),
|
SingleLang("Sekte Doujin", "https://sektedoujin.xyz", "id", isNsfw = true, overrideVersionCode = 2),
|
||||||
SingleLang("Lemon Juice Scan", "https://lemonjuicescan.com", "pt-BR", isNsfw = true),
|
SingleLang("Lemon Juice Scan", "https://lemonjuicescan.com", "pt-BR", isNsfw = true, overrideVersionCode = 1),
|
||||||
SingleLang("Phoenix Fansub", "https://phoenixfansub.com", "es"),
|
SingleLang("Phoenix Fansub", "https://phoenixfansub.com", "es"),
|
||||||
SingleLang("Geass Scanlator", "https://geassscan.xyz", "pt-BR")
|
SingleLang("Geass Scanlator", "https://geassscan.xyz", "pt-BR", overrideVersionCode = 1)
|
||||||
)
|
)
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|
|
@ -5,8 +5,12 @@ ext {
|
||||||
extName = 'NOISE Manga'
|
extName = 'NOISE Manga'
|
||||||
pkgNameSuffix = 'all.noisemanga'
|
pkgNameSuffix = 'all.noisemanga'
|
||||||
extClass = '.NoiseMangaFactory'
|
extClass = '.NoiseMangaFactory'
|
||||||
extVersionCode = 3
|
extVersionCode = 4
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation project(':lib-ratelimit')
|
||||||
|
}
|
||||||
|
|
||||||
apply from: "$rootDir/common.gradle"
|
apply from: "$rootDir/common.gradle"
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package eu.kanade.tachiyomi.extension.all.noisemanga
|
package eu.kanade.tachiyomi.extension.all.noisemanga
|
||||||
|
|
||||||
|
import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor
|
||||||
import eu.kanade.tachiyomi.network.GET
|
import eu.kanade.tachiyomi.network.GET
|
||||||
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
|
||||||
|
@ -8,11 +9,13 @@ import eu.kanade.tachiyomi.source.model.SChapter
|
||||||
import eu.kanade.tachiyomi.source.model.SManga
|
import eu.kanade.tachiyomi.source.model.SManga
|
||||||
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
|
import eu.kanade.tachiyomi.source.online.ParsedHttpSource
|
||||||
import okhttp3.Headers
|
import okhttp3.Headers
|
||||||
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
import okhttp3.Response
|
import okhttp3.Response
|
||||||
import org.jsoup.nodes.Document
|
import org.jsoup.nodes.Document
|
||||||
import org.jsoup.nodes.Element
|
import org.jsoup.nodes.Element
|
||||||
import rx.Observable
|
import rx.Observable
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
abstract class NoiseManga(override val lang: String) : ParsedHttpSource() {
|
abstract class NoiseManga(override val lang: String) : ParsedHttpSource() {
|
||||||
|
|
||||||
|
@ -22,6 +25,10 @@ abstract class NoiseManga(override val lang: String) : ParsedHttpSource() {
|
||||||
|
|
||||||
override val supportsLatest = false
|
override val supportsLatest = false
|
||||||
|
|
||||||
|
override val client: OkHttpClient = network.client.newBuilder()
|
||||||
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
|
.build()
|
||||||
|
|
||||||
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
||||||
.add("User-Agent", USER_AGENT)
|
.add("User-Agent", USER_AGENT)
|
||||||
.add("Origin", baseUrl)
|
.add("Origin", baseUrl)
|
||||||
|
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
extName = 'BR Mangás'
|
extName = 'BR Mangás'
|
||||||
pkgNameSuffix = 'pt.brmangas'
|
pkgNameSuffix = 'pt.brmangas'
|
||||||
extClass = '.BrMangas'
|
extClass = '.BrMangas'
|
||||||
extVersionCode = 1
|
extVersionCode = 2
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
containsNsfw = true
|
containsNsfw = true
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ class BrMangas : ParsedHttpSource() {
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
||||||
|
|
|
@ -6,7 +6,7 @@ ext {
|
||||||
extName = 'Bruttal'
|
extName = 'Bruttal'
|
||||||
pkgNameSuffix = 'pt.bruttal'
|
pkgNameSuffix = 'pt.bruttal'
|
||||||
extClass = '.Bruttal'
|
extClass = '.Bruttal'
|
||||||
extVersionCode = 3
|
extVersionCode = 4
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ class Bruttal : HttpSource() {
|
||||||
override val supportsLatest = false
|
override val supportsLatest = false
|
||||||
|
|
||||||
override val client: OkHttpClient = network.client.newBuilder()
|
override val client: OkHttpClient = network.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
||||||
|
|
|
@ -6,7 +6,7 @@ ext {
|
||||||
extName = 'HipercooL'
|
extName = 'HipercooL'
|
||||||
pkgNameSuffix = 'pt.hipercool'
|
pkgNameSuffix = 'pt.hipercool'
|
||||||
extClass = '.Hipercool'
|
extClass = '.Hipercool'
|
||||||
extVersionCode = 7
|
extVersionCode = 8
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
containsNsfw = true
|
containsNsfw = true
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package eu.kanade.tachiyomi.extension.pt.hipercool
|
package eu.kanade.tachiyomi.extension.pt.hipercool
|
||||||
|
|
||||||
import eu.kanade.tachiyomi.annotations.Nsfw
|
import eu.kanade.tachiyomi.annotations.Nsfw
|
||||||
import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor
|
import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor
|
||||||
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.asObservableSuccess
|
import eu.kanade.tachiyomi.network.asObservableSuccess
|
||||||
|
@ -17,7 +17,6 @@ import kotlinx.serialization.json.JsonPrimitive
|
||||||
import kotlinx.serialization.json.buildJsonObject
|
import kotlinx.serialization.json.buildJsonObject
|
||||||
import kotlinx.serialization.json.put
|
import kotlinx.serialization.json.put
|
||||||
import okhttp3.Headers
|
import okhttp3.Headers
|
||||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
|
||||||
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
|
import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
|
||||||
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
|
@ -29,6 +28,7 @@ import uy.kohesive.injekt.injectLazy
|
||||||
import java.text.ParseException
|
import java.text.ParseException
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
@Nsfw
|
@Nsfw
|
||||||
class Hipercool : HttpSource() {
|
class Hipercool : HttpSource() {
|
||||||
|
@ -45,8 +45,7 @@ class Hipercool : HttpSource() {
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
||||||
.addInterceptor(SpecificHostRateLimitInterceptor(baseUrl.toHttpUrl(), 1))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.addInterceptor(SpecificHostRateLimitInterceptor(STATIC_URL.toHttpUrl(), 2))
|
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
||||||
|
|
|
@ -6,7 +6,7 @@ ext {
|
||||||
extName = 'HQ Now!'
|
extName = 'HQ Now!'
|
||||||
pkgNameSuffix = 'pt.hqnow'
|
pkgNameSuffix = 'pt.hqnow'
|
||||||
extClass = '.HQNow'
|
extClass = '.HQNow'
|
||||||
extVersionCode = 4
|
extVersionCode = 5
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
package eu.kanade.tachiyomi.extension.pt.hqnow
|
package eu.kanade.tachiyomi.extension.pt.hqnow
|
||||||
|
|
||||||
import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor
|
import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor
|
||||||
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.asObservableSuccess
|
import eu.kanade.tachiyomi.network.asObservableSuccess
|
||||||
|
@ -17,7 +17,6 @@ import kotlinx.serialization.json.jsonArray
|
||||||
import kotlinx.serialization.json.jsonObject
|
import kotlinx.serialization.json.jsonObject
|
||||||
import kotlinx.serialization.json.put
|
import kotlinx.serialization.json.put
|
||||||
import kotlinx.serialization.json.putJsonObject
|
import kotlinx.serialization.json.putJsonObject
|
||||||
import okhttp3.HttpUrl.Companion.toHttpUrl
|
|
||||||
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
import okhttp3.MediaType.Companion.toMediaTypeOrNull
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.Request
|
import okhttp3.Request
|
||||||
|
@ -27,6 +26,7 @@ import rx.Observable
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
import java.text.Normalizer
|
import java.text.Normalizer
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
class HQNow : HttpSource() {
|
class HQNow : HttpSource() {
|
||||||
|
|
||||||
|
@ -39,8 +39,7 @@ class HQNow : HttpSource() {
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
||||||
.addInterceptor(SpecificHostRateLimitInterceptor(GRAPHQL_URL.toHttpUrl(), 1))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.addInterceptor(SpecificHostRateLimitInterceptor(STATIC_URL.toHttpUrl(), 2))
|
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
private val json: Json by injectLazy()
|
private val json: Json by injectLazy()
|
||||||
|
|
|
@ -6,7 +6,7 @@ ext {
|
||||||
extName = 'MangaTube'
|
extName = 'MangaTube'
|
||||||
pkgNameSuffix = 'pt.mangatube'
|
pkgNameSuffix = 'pt.mangatube'
|
||||||
extClass = '.MangaTube'
|
extClass = '.MangaTube'
|
||||||
extVersionCode = 2
|
extVersionCode = 3
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ class MangaTube : HttpSource() {
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.addInterceptor(::searchIntercept)
|
.addInterceptor(::searchIntercept)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
extName = 'MangaYabu!'
|
extName = 'MangaYabu!'
|
||||||
pkgNameSuffix = 'pt.mangayabu'
|
pkgNameSuffix = 'pt.mangayabu'
|
||||||
extClass = '.MangaYabu'
|
extClass = '.MangaYabu'
|
||||||
extVersionCode = 8
|
extVersionCode = 9
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ class MangaYabu : ParsedHttpSource() {
|
||||||
.connectTimeout(2, TimeUnit.MINUTES)
|
.connectTimeout(2, TimeUnit.MINUTES)
|
||||||
.readTimeout(2, TimeUnit.MINUTES)
|
.readTimeout(2, TimeUnit.MINUTES)
|
||||||
.writeTimeout(2, TimeUnit.MINUTES)
|
.writeTimeout(2, TimeUnit.MINUTES)
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
||||||
|
|
|
@ -6,7 +6,7 @@ ext {
|
||||||
extName = 'Muito Mangá'
|
extName = 'Muito Mangá'
|
||||||
pkgNameSuffix = 'pt.muitomanga'
|
pkgNameSuffix = 'pt.muitomanga'
|
||||||
extClass = '.MuitoManga'
|
extClass = '.MuitoManga'
|
||||||
extVersionCode = 2
|
extVersionCode = 3
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
containsNsfw = true
|
containsNsfw = true
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ class MuitoManga : ParsedHttpSource() {
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.addInterceptor(::directoryCacheIntercept)
|
.addInterceptor(::directoryCacheIntercept)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ ext {
|
||||||
extName = 'Mundo Mangá-Kun'
|
extName = 'Mundo Mangá-Kun'
|
||||||
pkgNameSuffix = 'pt.mundomangakun'
|
pkgNameSuffix = 'pt.mundomangakun'
|
||||||
extClass = '.MundoMangaKun'
|
extClass = '.MundoMangaKun'
|
||||||
extVersionCode = 4
|
extVersionCode = 5
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
containsNsfw = true
|
containsNsfw = true
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ class MundoMangaKun : ParsedHttpSource() {
|
||||||
override val supportsLatest = false
|
override val supportsLatest = false
|
||||||
|
|
||||||
override val client: OkHttpClient = network.client.newBuilder()
|
override val client: OkHttpClient = network.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
||||||
|
|
|
@ -6,7 +6,7 @@ ext {
|
||||||
extName = 'One Piece Ex'
|
extName = 'One Piece Ex'
|
||||||
pkgNameSuffix = 'pt.opex'
|
pkgNameSuffix = 'pt.opex'
|
||||||
extClass = '.OnePieceEx'
|
extClass = '.OnePieceEx'
|
||||||
extVersionCode = 3
|
extVersionCode = 4
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ class OnePieceEx : ParsedHttpSource() {
|
||||||
override val supportsLatest = false
|
override val supportsLatest = false
|
||||||
|
|
||||||
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
||||||
|
|
|
@ -6,7 +6,7 @@ ext {
|
||||||
extName = 'Saikai Scan'
|
extName = 'Saikai Scan'
|
||||||
pkgNameSuffix = 'pt.saikaiscan'
|
pkgNameSuffix = 'pt.saikaiscan'
|
||||||
extClass = '.SaikaiScan'
|
extClass = '.SaikaiScan'
|
||||||
extVersionCode = 6
|
extVersionCode = 7
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@ class SaikaiScan : HttpSource() {
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
private val json: Json by injectLazy()
|
private val json: Json by injectLazy()
|
||||||
|
|
|
@ -5,7 +5,7 @@ ext {
|
||||||
extName = 'Tao Sect'
|
extName = 'Tao Sect'
|
||||||
pkgNameSuffix = 'pt.taosect'
|
pkgNameSuffix = 'pt.taosect'
|
||||||
extClass = '.TaoSect'
|
extClass = '.TaoSect'
|
||||||
extVersionCode = 4
|
extVersionCode = 5
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ class TaoSect : ParsedHttpSource() {
|
||||||
override val supportsLatest = false
|
override val supportsLatest = false
|
||||||
|
|
||||||
override val client: OkHttpClient = network.client.newBuilder()
|
override val client: OkHttpClient = network.client.newBuilder()
|
||||||
.addInterceptor(RateLimitInterceptor(1, 1, TimeUnit.SECONDS))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
override fun headersBuilder(): Headers.Builder = Headers.Builder()
|
||||||
|
|
|
@ -6,7 +6,7 @@ ext {
|
||||||
extName = 'Tsuki Mangás'
|
extName = 'Tsuki Mangás'
|
||||||
pkgNameSuffix = 'pt.tsukimangas'
|
pkgNameSuffix = 'pt.tsukimangas'
|
||||||
extClass = '.TsukiMangas'
|
extClass = '.TsukiMangas'
|
||||||
extVersionCode = 22
|
extVersionCode = 23
|
||||||
libVersion = '1.2'
|
libVersion = '1.2'
|
||||||
containsNsfw = true
|
containsNsfw = true
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ import android.text.InputType
|
||||||
import androidx.preference.EditTextPreference
|
import androidx.preference.EditTextPreference
|
||||||
import androidx.preference.PreferenceScreen
|
import androidx.preference.PreferenceScreen
|
||||||
import eu.kanade.tachiyomi.annotations.Nsfw
|
import eu.kanade.tachiyomi.annotations.Nsfw
|
||||||
import eu.kanade.tachiyomi.lib.ratelimit.SpecificHostRateLimitInterceptor
|
import eu.kanade.tachiyomi.lib.ratelimit.RateLimitInterceptor
|
||||||
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.asObservableSuccess
|
import eu.kanade.tachiyomi.network.asObservableSuccess
|
||||||
|
@ -39,6 +39,7 @@ import java.io.IOException
|
||||||
import java.text.ParseException
|
import java.text.ParseException
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
@Nsfw
|
@Nsfw
|
||||||
class TsukiMangas : HttpSource(), ConfigurableSource {
|
class TsukiMangas : HttpSource(), ConfigurableSource {
|
||||||
|
@ -52,9 +53,7 @@ class TsukiMangas : HttpSource(), ConfigurableSource {
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
override val client: OkHttpClient = network.cloudflareClient.newBuilder()
|
||||||
.addInterceptor(SpecificHostRateLimitInterceptor(baseUrl.toHttpUrl(), 1))
|
.addInterceptor(RateLimitInterceptor(1, 2, TimeUnit.SECONDS))
|
||||||
.addInterceptor(SpecificHostRateLimitInterceptor(CDN_1_URL, 1, period = 2))
|
|
||||||
.addInterceptor(SpecificHostRateLimitInterceptor(CDN_2_URL, 1, period = 2))
|
|
||||||
.addInterceptor(::tsukiAuthIntercept)
|
.addInterceptor(::tsukiAuthIntercept)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue