Compare commits

..

No commits in common. "1699cece9f9f17f1033819a005c68b403f0d703c" and "4856f0b89e79f98ea50d3872df4e3a007fbe798e" have entirely different histories.

243 changed files with 1631 additions and 3014 deletions

View File

@ -11,9 +11,6 @@ import org.jsoup.nodes.Element
import java.util.Calendar
class KissLove : FMReader("KissLove", "https://klz9.com", "ja") {
override val altNameSelector = "li:contains(Other name (s))"
override fun latestUpdatesRequest(page: Int) =
GET("$baseUrl/manga-list.html?page=$page&sort=last_update")

View File

@ -59,12 +59,12 @@ class Manga1000 : FMReader("Manga1000", "https://manga1000.top", "ja") {
}
override fun pageListParse(document: Document): List<Page> {
return document.select("script:containsData(imgsChapter)")
return document.select("script:containsData(imgsListchap)")
.html()
.substringAfter("(")
.substringBefore(",")
.let { cid ->
client.newCall(GET("$baseUrl/app/manga/controllers/cont.Showimage.php?cid=$cid", headers)).execute().asJsoup()
client.newCall(GET("$baseUrl/app/manga/controllers/cont.imgsList.php?cid=$cid", headers)).execute().asJsoup()
}
.select(".lazyload")
.mapIndexed { i, e ->

View File

@ -1,72 +0,0 @@
package eu.kanade.tachiyomi.extension.es.lectormanga
import eu.kanade.tachiyomi.multisrc.lectortmo.LectorTmo
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.Response
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
class LectorManga : LectorTmo("LectorManga", "https://lectormanga.com", "es") {
override val id = 7925520943983324764
override fun popularMangaSelector() = ".col-6 .card"
override fun popularMangaFromElement(element: Element) = SManga.create().apply {
setUrlWithoutDomain(element.select("a").attr("href"))
title = element.select("a").text()
thumbnail_url = element.select("img").attr("src")
}
override fun mangaDetailsParse(document: Document) = SManga.create().apply {
document.selectFirst("h1:has(small)")?.let { title = it.ownText() }
genre = document.select("a.py-2").joinToString(", ") {
it.text()
}
description = document.select(".col-12.mt-2").text()
status = parseStatus(document.select(".status-publishing").text())
thumbnail_url = document.select(".text-center img.img-fluid").attr("src")
}
override fun chapterListParse(response: Response): List<SChapter> = mutableListOf<SChapter>().apply {
val document = response.asJsoup()
// One-shot
if (document.select("#chapters").isEmpty()) {
return document.select(oneShotChapterListSelector).map { chapterFromElement(it, oneShotChapterName) }
}
// Regular list of chapters
val chapterNames = document.select("#chapters h4.text-truncate")
val chapterInfos = document.select("#chapters .chapter-list")
chapterNames.forEachIndexed { index, _ ->
val scanlator = chapterInfos[index].select("li")
if (getScanlatorPref()) {
scanlator.forEach { add(chapterFromElement(it, chapterNames[index].text())) }
} else {
scanlator.last { add(chapterFromElement(it, chapterNames[index].text())) }
}
}
}
override fun chapterFromElement(element: Element, chName: String) = SChapter.create().apply {
url = element.select("div.row > .text-right > a").attr("href")
name = chName
scanlator = element.select("div.col-12.text-truncate span").text()
date_upload = element.select("span.badge.badge-primary.p-2").first()?.text()?.let {
parseChapterDate(it)
} ?: 0
}
override fun imageRequest(page: Page) = GET(
url = page.imageUrl!!,
headers = headers.newBuilder()
.set("Referer", page.url.substringBefore("news/"))
.build(),
)
}

View File

@ -1,8 +0,0 @@
package eu.kanade.tachiyomi.extension.es.tumangaonline
import eu.kanade.tachiyomi.multisrc.lectortmo.LectorTmo
class TuMangaOnline : LectorTmo("TuMangaOnline", "https://visortmo.com", "es") {
override val id = 4146344224513899730
}

View File

@ -1,10 +0,0 @@
package eu.kanade.tachiyomi.extension.en.likemanga
import eu.kanade.tachiyomi.multisrc.likemanga.LikeManga
import eu.kanade.tachiyomi.network.interceptor.rateLimit
class LikeMangaIO : LikeManga("LikeManga", "https://likemanga.io", "en") {
override val client = super.client.newBuilder()
.rateLimit(1, 2)
.build()
}

View File

@ -1,7 +0,0 @@
package eu.kanade.tachiyomi.extension.en.zinmanhwa
import eu.kanade.tachiyomi.multisrc.likemanga.LikeManga
class ZinMangaIO : LikeManga("ZinManga.io", "https://zinmanga.io", "en") {
override val versionId = 2
}

View File

@ -2,25 +2,15 @@ package eu.kanade.tachiyomi.extension.en.creepyscans
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.network.asObservableSuccess
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import eu.kanade.tachiyomi.source.model.Filter
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.MangasPage
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import kotlinx.serialization.json.boolean
import kotlinx.serialization.json.jsonArray
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
import okhttp3.CacheControl
import okhttp3.FormBody
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.OkHttpClient
import okhttp3.Request
import org.jsoup.nodes.Document
import rx.Observable
import java.util.concurrent.TimeUnit
class CreepyScans : Madara(
@ -57,37 +47,9 @@ class CreepyScans : Madara(
// Search
override fun fetchSearchManga(
page: Int,
query: String,
filters: FilterList,
): Observable<MangasPage> {
return if (query.isNotBlank()) {
val form = FormBody.Builder()
.add("action", "wp-manga-search-manga")
.add("title", query)
.build()
client.newCall(POST("$baseUrl/wp-admin/admin-ajax.php", headers, form)).asObservableSuccess().map { res ->
json.parseToJsonElement(res.body.string()).jsonObject.let { obj ->
if (!obj["success"]!!.jsonPrimitive.boolean) {
MangasPage(emptyList(), false)
} else {
val mangas = obj["data"]!!.jsonArray.map {
SManga.create().apply {
title = it.jsonObject["title"]!!.jsonPrimitive.content
setUrlWithoutDomain(it.jsonObject["url"]!!.jsonPrimitive.content)
}
}
MangasPage(mangas, false)
}
}
}
} else {
super.fetchSearchManga(page, query, filters)
}
}
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
if (query.isNotBlank()) throw Exception("Search not available")
val url = "$baseUrl/$mangaSubString/".toHttpUrl().newBuilder()
filters.forEach { filter ->
when (filter) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,9 @@
package eu.kanade.tachiyomi.extension.en.firstkissmangatv
import eu.kanade.tachiyomi.multisrc.madara.Madara
class FirstKissMangaTv : Madara("1stKissManga.tv", "https://1stkissmanga.tv", "en") {
override val useNewChapterEndpoint = false
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
}

View File

@ -1,14 +0,0 @@
package eu.kanade.tachiyomi.extension.ar.gatemanga
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class Gatemanga : Madara(
"Gatemanga",
"https://gatemanga.com",
"ar",
dateFormat = SimpleDateFormat("d MMMM، yyyy", Locale("ar")),
) {
override val mangaSubString = "ar"
}

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,13 @@
package eu.kanade.tachiyomi.extension.en.hentai20
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import okhttp3.OkHttpClient
import java.util.concurrent.TimeUnit
class Hentai20 : Madara("Hentai20", "https://hentai20.io", "en") {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimit(1, 1, TimeUnit.SECONDS)
.build()
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,9 @@
package eu.kanade.tachiyomi.extension.en.mangagoyaoi
import eu.kanade.tachiyomi.multisrc.madara.Madara
class MangaGoYaoi : Madara("MangaGo Yaoi", "https://mangagoyaoi.com", "en") {
override val useNewChapterEndpoint = true
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,51 +0,0 @@
package eu.kanade.tachiyomi.extension.ar.mangalink
import android.app.Application
import android.content.SharedPreferences
import android.widget.Toast
import androidx.preference.PreferenceScreen
import eu.kanade.tachiyomi.extension.BuildConfig
import eu.kanade.tachiyomi.multisrc.madara.Madara
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.text.SimpleDateFormat
import java.util.Locale
class Mangalink : Madara("مانجا لينك", "https://manga-link.net", "ar", SimpleDateFormat("MMMM dd, yyyy", Locale("ar"))) {
override val chapterUrlSuffix = ""
private val defaultBaseUrl = "https://manga-link.net"
override val baseUrl by lazy { getPrefBaseUrl() }
private val preferences: SharedPreferences by lazy {
Injekt.get<Application>().getSharedPreferences("source_$id", 0x0000)
}
companion object {
private const val RESTART_TACHIYOMI = ".لتطبيق الإعدادات الجديدة Tachiyomi أعد تشغيل"
private const val BASE_URL_PREF_TITLE = "تعديل الرابط"
private const val BASE_URL_PREF = "overrideBaseUrl_v${BuildConfig.VERSION_CODE}"
private const val BASE_URL_PREF_SUMMARY = ".للاستخدام المؤقت. تحديث التطبيق سيؤدي الى حذف الإعدادات"
}
override fun setupPreferenceScreen(screen: PreferenceScreen) {
val baseUrlPref = androidx.preference.EditTextPreference(screen.context).apply {
key = BASE_URL_PREF
title = BASE_URL_PREF_TITLE
summary = BASE_URL_PREF_SUMMARY
this.setDefaultValue(defaultBaseUrl)
dialogTitle = BASE_URL_PREF_TITLE
dialogMessage = "Default: $defaultBaseUrl"
setOnPreferenceChangeListener { _, _ ->
Toast.makeText(screen.context, RESTART_TACHIYOMI, Toast.LENGTH_LONG).show()
true
}
}
screen.addPreference(baseUrlPref)
super.setupPreferenceScreen(screen)
}
private fun getPrefBaseUrl(): String = preferences.getString(BASE_URL_PREF, defaultBaseUrl)!!
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

View File

@ -1,34 +0,0 @@
package eu.kanade.tachiyomi.extension.en.manhuaaz
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.Response
class ManhuaAZ : Madara("Manhua AZ", "https://manhuaaz.com", "en") {
// The website does not flag the content.
override val filterNonMangaItems = false
override fun chapterListParse(response: Response): List<SChapter> {
var chapterList = super.chapterListParse(response)
// the site adds a ghost chapter for some entries
chapterList.firstOrNull()?.let {
if (!isReleasedChapter(it)) {
chapterList = chapterList.subList(1, chapterList.size)
}
}
return chapterList
}
private fun isReleasedChapter(chapter: SChapter): Boolean {
val document = client.newCall(
GET(chapter.url, headersBuilder().build()),
).execute().asJsoup()
return document.select(pageListParseSelector).isNotEmpty()
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

View File

@ -4,4 +4,4 @@ import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class RagnarokScanlation : Madara("Ragnarok Scanlation", "https://ragnarokscanlation.net", "es", SimpleDateFormat("MMMM d, yyyy", Locale("es")))
class RagnarokScanlation : Madara("Ragnarok Scanlation", "https://ragnarokscanlation.com", "es", SimpleDateFormat("MMMM d, yyyy", Locale("es")))

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,63 +0,0 @@
package eu.kanade.tachiyomi.extension.en.sectscans
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.POST
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.FormBody
import okhttp3.HttpUrl.Companion.toHttpUrl
import org.jsoup.nodes.Document
class SectScans : Madara("SectScans", "https://sectscans.com", "en") {
override val client = super.client.newBuilder()
.rateLimit(2)
.build()
override val mangaSubString = "comics"
override val useNewChapterEndpoint = true
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
// =========================== Manga Details ============================
override val mangaDetailsSelectorTitle = ".post-title"
override val mangaDetailsSelectorAuthor = ".item_authors .summary-content"
override val mangaDetailsSelectorArtist = ".item_artists .summary-content"
override val mangaDetailsSelectorThumbnail = "img"
override val mangaDetailsSelectorGenre = ".genres-content a"
override fun mangaDetailsParse(document: Document): SManga {
val postId = document.selectFirst("script:containsData(manga_id)")
?.data()
?.substringAfter("manga_id\":\"")
?.substringBefore("\"")
?: return super.mangaDetailsParse(document)
val formBody = FormBody.Builder().apply {
add("action", "madara_hover_load_post")
add("postid", postId)
}.build()
val formHeaders = headersBuilder().apply {
add("Accept", "text/html, */*; q=0.01")
add("Host", baseUrl.toHttpUrl().host)
add("Origin", baseUrl)
add("X-Requested-With", "XMLHttpRequest")
}.build()
val resp = client.newCall(
POST("$baseUrl/wp-admin/admin-ajax.php", formHeaders, formBody),
).execute()
return super.mangaDetailsParse(resp.asJsoup()).apply {
description = buildString {
append(document.selectFirst(".manga-summary")?.text())
append("\n\n")
append(description)
}
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -0,0 +1,9 @@
package eu.kanade.tachiyomi.extension.en.zinmangatop
import eu.kanade.tachiyomi.multisrc.madara.Madara
class ZinMangaTop : Madara("ZinManga.top (unoriginal)", "https://zinmanga.top", "en") {
override val useNewChapterEndpoint = true
override fun searchPage(page: Int): String = if (page == 1) "" else "page/$page/"
}

View File

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -0,0 +1,12 @@
package eu.kanade.tachiyomi.extension.en.zinmanhwa
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class Zinmanhwa : Madara(
"Zinmanhwa",
"https://zinmanhwa.com",
"en",
dateFormat = SimpleDateFormat("dd/MM/yy", Locale.US),
)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

View File

@ -1,5 +0,0 @@
package eu.kanade.tachiyomi.extension.en.mangafoxfun
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class MangaFoxFun : MangaHub("MangaFox.fun", "https://mangafox.fun", "en", "mf01")

View File

@ -1,5 +0,0 @@
package eu.kanade.tachiyomi.extension.en.mangahereonl
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class MangaHereOnl : MangaHub("MangaHere.onl", "https://mangahere.onl", "en", "mh01")

View File

@ -1,5 +0,0 @@
package eu.kanade.tachiyomi.extension.en.mangahubio
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class MangaHubIo : MangaHub("MangaHub", "https://mangahub.io", "en", "m01")

View File

@ -1,5 +0,0 @@
package eu.kanade.tachiyomi.extension.en.mangakakalotfun
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class MangakakalotFun : MangaHub("Mangakakalot.fun", "https://mangakakalot.fun", "en", "mn01")

View File

@ -1,5 +0,0 @@
package eu.kanade.tachiyomi.extension.en.manganel
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class MangaNel : MangaHub("MangaNel", "https://manganel.me", "en", "mn05")

View File

@ -1,5 +0,0 @@
package eu.kanade.tachiyomi.extension.en.mangaonlinefun
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class MangaOnlineFun : MangaHub("MangaOnline.fun", "https://mangaonline.fun", "en", "m02")

View File

@ -1,5 +0,0 @@
package eu.kanade.tachiyomi.extension.en.mangapandaonl
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class MangaPandaOnl : MangaHub("MangaPanda.onl", "https://mangapanda.onl", "en", "mr02")

View File

@ -1,5 +0,0 @@
package eu.kanade.tachiyomi.extension.en.mangareadersite
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class MangaReaderSite : MangaHub("MangaReader.site", "https://mangareader.site", "en", "mr01")

View File

@ -1,5 +0,0 @@
package eu.kanade.tachiyomi.extension.en.mangatoday
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class MangaToday : MangaHub("MangaToday", "https://mangatoday.fun", "en", "m03")

View File

@ -1,5 +0,0 @@
package eu.kanade.tachiyomi.extension.en.onemangaco
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class OneMangaCo : MangaHub("1Manga.co", "https://1manga.co", "en", "mn03")

View File

@ -1,5 +0,0 @@
package eu.kanade.tachiyomi.extension.en.onemangainfo
import eu.kanade.tachiyomi.multisrc.mangahub.MangaHub
class OneMangaInfo : MangaHub("OneManga.info", "https://onemanga.info", "en", "mh01")

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1,12 +1,14 @@
package eu.kanade.tachiyomi.extension.en.hentai20
package eu.kanade.tachiyomi.extension.id.inazumanga
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import okhttp3.OkHttpClient
class Hentai20 : MangaThemesia("Hentai20", "https://hentai20.io", "en") {
class YumeKomik : MangaThemesia("YumeKomik", "https://yumekomik.com", "id") {
override val client: OkHttpClient = super.client.newBuilder()
.rateLimit(1)
.rateLimit(3)
.build()
override val hasProjectPage = true
}

View File

@ -6,7 +6,7 @@ import java.util.Locale
class MangaNoon : MangaThemesia(
"مانجا نون",
"https://manjanoon.net",
"https://manjanoon.com",
"ar",
dateFormat = SimpleDateFormat("MMM d, yyy", Locale("ar")),
)

Some files were not shown because too many files have changed in this diff Show More