Remove dead sources (#9811)

* Remove CAT-translator

* Remove Jellyring

* Remove ManWe

* Remove Yetiskin Ruya Manga

* Remove Mugi Manga

* Remove Deccal Scans

* Remove FactManga

* Remove Komikuzan

* Remove MangaKazani

* Remove Manga One Love

* Remove Free Manhwa

* Remove Minda Fansub

* Remove SeriManga

* Remove ScamberTraslator

* Remove Arabs Doujin

* Remove DragonManga

* Remove KomikRealm

* Remove Magerin

* Remove YonaBar

* Remove Manga Raw.org

* Remove MangaKomi

* Remove DMC Scans

* Remove Disaster Scans
This commit is contained in:
Vetle Ledaal 2025-07-27 08:36:50 +02:00 committed by Draff
parent 7a09f91cb7
commit 9840ff97d5
Signed by: Draff
GPG Key ID: E8A89F3211677653
151 changed files with 0 additions and 1123 deletions

View File

@ -1,10 +0,0 @@
ext {
extName = 'Arabs Doujin'
extClass = '.ArabsDoujin'
themePkg = 'zeistmanga'
baseUrl = 'https://www.arabsdoujin.online'
overrideVersionCode = 0
isNsfw = true
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

View File

@ -1,12 +0,0 @@
package eu.kanade.tachiyomi.extension.ar.arabsdoujin
import eu.kanade.tachiyomi.multisrc.zeistmanga.ZeistManga
import eu.kanade.tachiyomi.network.interceptor.rateLimit
class ArabsDoujin : ZeistManga("Arabs Doujin", "https://www.arabsdoujin.online", "ar") {
override val client = super.client.newBuilder()
.rateLimit(3)
.build()
override val pageListSelector = "div.check-box"
}

View File

@ -1,10 +0,0 @@
ext {
extName = 'YonaBar'
extClass = '.YonaBar'
themePkg = 'madara'
baseUrl = 'https://yonabar.xyz'
overrideVersionCode = 3
isNsfw = true
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

View File

@ -1,19 +0,0 @@
package eu.kanade.tachiyomi.extension.ar.yonabar
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import java.text.SimpleDateFormat
import java.util.Locale
class YonaBar : Madara(
"YonaBar",
"https://yonabar.xyz",
"ar",
SimpleDateFormat("MMM dd, yyyy", Locale("ar")),
) {
override val client = super.client.newBuilder()
.rateLimit(3)
.build()
override val mangaSubString = "yaoi"
}

View File

@ -1,7 +0,0 @@
ext {
extName = 'Disaster Scans'
extClass = '.DisasterScans'
extVersionCode = 34
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

View File

@ -1,129 +0,0 @@
package eu.kanade.tachiyomi.extension.en.disasterscans
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.MangasPage
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.source.online.ParsedHttpSource
import eu.kanade.tachiyomi.util.asJsoup
import kotlinx.serialization.Serializable
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import okhttp3.HttpUrl.Companion.toHttpUrl
import okhttp3.Request
import okhttp3.Response
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import rx.Observable
import uy.kohesive.injekt.injectLazy
import java.text.SimpleDateFormat
import java.util.Locale
class DisasterScans : ParsedHttpSource() {
override val name = "Disaster Scans"
override val lang = "en"
override val versionId = 3
override val baseUrl = "https://disasterscans.com"
override val supportsLatest = true
private val dateFormat: SimpleDateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.US)
private val json by injectLazy<Json>()
override fun popularMangaRequest(page: Int): Request =
GET("$baseUrl/home", headers)
override fun latestUpdatesRequest(page: Int) =
popularMangaRequest(page)
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request =
GET("$baseUrl/comics", headers)
override fun popularMangaSelector(): String = "div:has(span:contains(POPULAR)) + section a:has(img)"
override fun latestUpdatesSelector(): String = "div:has(span:contains(LATEST)) + section a:has(img)"
override fun searchMangaSelector(): String = ".grid a"
private fun mangaFromElement(element: Element): SManga = SManga.create().apply {
setUrlWithoutDomain(element.absUrl("href"))
thumbnail_url = element.selectFirst("img")?.absUrl("src")
}
override fun popularMangaFromElement(element: Element): SManga = mangaFromElement(element).apply {
title = element.selectFirst("h5")!!.text()
}
override fun latestUpdatesFromElement(element: Element): SManga = mangaFromElement(element).apply {
title = element.parent()?.selectFirst("div a")!!.text()
}
override fun searchMangaFromElement(element: Element): SManga = mangaFromElement(element).apply {
title = element.selectFirst("h1")!!.text()
}
override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable<MangasPage> {
val response = client.newCall(searchMangaRequest(page, query, filters)).execute()
val mangaList = response.asJsoup().select(searchMangaSelector())
.map { searchMangaFromElement(it) }
.filter { it.title.lowercase().contains(query.lowercase()) }
return Observable.just(MangasPage(mangaList, false))
}
override fun mangaDetailsParse(document: Document): SManga = SManga.create().apply {
author = document.selectFirst("span:contains(Author) + span")!!.text()
document.selectFirst("section div div")?.children()?.also { infoRows ->
infoRows[0].selectFirst("h1")?.text()?.let { title = it }
description = infoRows[2].text()
with(infoRows[1].select("span")) {
status = when (this.removeAt(0)?.text()?.lowercase()) {
"ongoing" -> SManga.ONGOING
else -> SManga.UNKNOWN
}
genre = this.joinToString { it.text() }
}
}
}
@Serializable
class ChapterDTO(val chapterID: Int, val ChapterNumber: String, val ChapterName: String, val chapterDate: String)
private val chapterDataRegex = Regex("""\\"chapters\\":(\[.*]),\\"param\\":\\"(\S+)\\"\}""")
override fun chapterListParse(response: Response): List<SChapter> {
chapterDataRegex.find(response.body.string())?.destructured?.also { (chapterData, mangaId) ->
return json.decodeFromString<List<ChapterDTO>>(chapterData.replace("\\", "")).map { chapter ->
SChapter.create().apply {
name = "Chapter ${chapter.ChapterNumber} - ${chapter.ChapterName}"
setUrlWithoutDomain(
baseUrl.toHttpUrl().newBuilder().apply {
addPathSegment("comics")
addPathSegment(mangaId)
addPathSegment("${chapter.chapterID}-chapter-${chapter.ChapterNumber}")
}.build().toString(),
)
date_upload = try {
dateFormat.parse(chapter.chapterDate)?.time ?: 0
} catch (_: Exception) {
0
}
}
}
}
return listOf()
}
override fun pageListParse(document: Document): List<Page> =
document.select("section img").mapIndexed { index, img -> Page(index, imageUrl = img.absUrl("src")) }
override fun popularMangaNextPageSelector(): String? = null
override fun latestUpdatesNextPageSelector(): String? = null
override fun searchMangaNextPageSelector(): String? = null
override fun imageUrlParse(document: Document): String = ""
override fun chapterListSelector(): String = ""
override fun chapterFromElement(element: Element): SChapter = throw UnsupportedOperationException()
}

View File

@ -1,9 +0,0 @@
ext {
extName = 'DMC Scans'
extClass = '.DMCScans'
themePkg = 'zeistmanga'
baseUrl = 'https://didascans.blogspot.com'
overrideVersionCode = 1
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

View File

@ -1,92 +0,0 @@
package eu.kanade.tachiyomi.extension.en.dmcscans
import eu.kanade.tachiyomi.multisrc.zeistmanga.Genre
import eu.kanade.tachiyomi.multisrc.zeistmanga.ZeistManga
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.util.asJsoup
import okhttp3.Response
import org.jsoup.Jsoup
import org.jsoup.nodes.Document
import java.util.concurrent.TimeUnit
class DMCScans : ZeistManga("DMC Scans", "https://didascans.blogspot.com", "en") {
override val client = super.client.newBuilder()
.rateLimit(1, 3, TimeUnit.SECONDS)
.build()
// ============================== Popular ===============================
override val popularMangaSelector = ".PopularPosts > article"
override val popularMangaSelectorTitle = ".post-title a"
override val popularMangaSelectorUrl = ".post-title a"
// ============================== Search ================================
override val excludedCategories = listOf("Web Novel")
// =========================== Manga Details ============================
override val mangaDetailsSelectorGenres = "#labels > a[rel=tag]"
override val mangaDetailsSelectorInfo = ".imptdts"
override val mangaDetailsSelectorDescription = "p"
override val mangaDetailsSelectorInfoDescription = "div:containsOwn(Status) > span"
// =========================== Chapter Feed =============================
override val chapterFeedRegex = """.run\(["'](.*?)["']\)""".toRegex()
override fun getChapterFeedUrl(doc: Document): String {
val feed = chapterFeedRegex
.find(doc.html())
?.groupValues?.get(1)
?: throw Exception("Failed to find chapter feed")
return apiUrl(chapterCategory)
.addPathSegments(feed)
.addQueryParameter("max-results", maxChapterResults.toString())
.build().toString()
}
// =============================== Filters ==============================
override val hasFilters = true
override val hasTypeFilter = false
override val hasLanguageFilter = false
override fun getGenreList(): List<Genre> = listOf(
Genre("Adaptation", "Adaptation"),
Genre("Drama", "Drama"),
Genre("Historical", "Historical"),
Genre("Josei(W)", "Josei(W)"),
Genre("Regression", "Regression"),
Genre("Romance", "Romance"),
Genre("Shojo(G)", "Shojo(G)"),
Genre("Slice of Life", "Slice of Life"),
Genre("Transmigration", "Transmigration"),
)
// =============================== Pages ================================
override fun pageListParse(response: Response): List<Page> {
val document = response.asJsoup()
val imgData = document.selectFirst("script:containsData(imgTag)")
?.data()
?.substringAfter("imgTag")
?.substringAfter("`")
?.substringBefore("`")
?.replace("\\\"", "\"")
?.replace("\\\\", "\\")
?.replace("\\/", "/")
?.replace("\\:", ":")
?.let(Jsoup::parseBodyFragment)
?: return document.select(pageListSelector).select("img[src]").mapIndexed { i, img ->
Page(i, "", img.attr("abs:src"))
}
return imgData.select("img[src]").mapIndexed { i, img ->
Page(i, imageUrl = img.attr("abs:src"))
}
}
}

View File

@ -1,10 +0,0 @@
ext {
extName = 'FactManga'
extClass = '.FactManga'
themePkg = 'madara'
baseUrl = 'https://factmanga.com'
overrideVersionCode = 0
isNsfw = false
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

View File

@ -1,7 +0,0 @@
package eu.kanade.tachiyomi.extension.en.factmanga
import eu.kanade.tachiyomi.multisrc.madara.Madara
class FactManga : Madara("FactManga", "https://factmanga.com", "en") {
override val useNewChapterEndpoint = true
}

View File

@ -1,9 +0,0 @@
ext {
extName = 'Free Manhwa'
extClass = '.FreeManhwa'
themePkg = 'madara'
baseUrl = 'https://manhwas.com'
overrideVersionCode = 0
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

View File

@ -1,7 +0,0 @@
package eu.kanade.tachiyomi.extension.en.freemanhwa
import eu.kanade.tachiyomi.multisrc.madara.Madara
class FreeManhwa : Madara("Free Manhwa", "https://manhwas.com", "en") {
override val useNewChapterEndpoint = false
}

View File

@ -1,10 +0,0 @@
ext {
extName = 'MangaKomi'
extClass = '.MangaKomi'
themePkg = 'madara'
baseUrl = 'https://mangakomi.io'
overrideVersionCode = 5
isNsfw = true
}
apply from: "$rootDir/common.gradle"

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.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

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

View File

@ -1,10 +0,0 @@
ext {
extName = 'ScamberTraslator'
extClass = '.ScamberTraslator'
themePkg = 'madara'
baseUrl = 'https://visorscamber-scans.com'
overrideVersionCode = 4
isNsfw = false
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

View File

@ -1,14 +0,0 @@
package eu.kanade.tachiyomi.extension.es.scambertraslator
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class ScamberTraslator : Madara(
"ScamberTraslator",
"https://visorscamber-scans.com",
"es",
dateFormat = SimpleDateFormat("dd/MM/yyyy", Locale("es")),
) {
override val useNewChapterEndpoint = true
}

View File

@ -1,10 +0,0 @@
ext {
extName = 'KomikRealm'
extClass = '.KomikRealm'
themePkg = 'zeistmanga'
baseUrl = 'https://www.komikrealm.my.id'
overrideVersionCode = 0
isNsfw = false
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@ -1,142 +0,0 @@
package eu.kanade.tachiyomi.extension.id.komikrealm
import eu.kanade.tachiyomi.multisrc.zeistmanga.Genre
import eu.kanade.tachiyomi.multisrc.zeistmanga.Status
import eu.kanade.tachiyomi.multisrc.zeistmanga.Type
import eu.kanade.tachiyomi.multisrc.zeistmanga.ZeistManga
import eu.kanade.tachiyomi.multisrc.zeistmanga.ZeistMangaDto
import eu.kanade.tachiyomi.multisrc.zeistmanga.ZeistMangaIntl
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.model.MangasPage
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 kotlinx.serialization.decodeFromString
import okhttp3.Request
import okhttp3.Response
import org.jsoup.nodes.Document
class KomikRealm : ZeistManga(
"KomikRealm",
"https://www.komikrealm.my.id",
"id",
) {
override val hasFilters = true
override val hasLanguageFilter = false
override val chapterCategory = ""
override fun popularMangaRequest(page: Int): Request {
val url = apiUrl("Project")
.addQueryParameter("orderby", "updated")
.addQueryParameter("max-results", "12")
.build()
return GET(url, headers)
}
override fun popularMangaParse(response: Response): MangasPage {
val jsonString = response.body.string()
val result = json.decodeFromString<ZeistMangaDto>(jsonString)
val mangas = result.feed?.entry.orEmpty()
.filter { it.category.orEmpty().any { category -> category.term == "Series" } }
.filter { !it.category.orEmpty().any { category -> category.term == "Anime" } }
.map { it.toSManga(baseUrl) }
return MangasPage(mangas, false)
}
override fun mangaDetailsParse(response: Response): SManga {
val document = response.asJsoup()
val profileManga = document.select(".bigcontent")
val infoManga = profileManga.select("ul.infonime li")
return SManga.create().apply {
thumbnail_url = profileManga.select("img").first()!!.attr("data-src")
description = profileManga.select(".sinoposis").text()
genre = profileManga.select("div.info-genre > a[rel=tag]")
.joinToString { it.text() }
infoManga.forEach {
val title = it.select("b").text()
val desc = it.select("span").text()
when (title) {
"Status" -> status = parseStatus(desc)
"Author" -> author = desc
"Artist" -> artist = desc
}
}
}
}
override fun chapterListParse(response: Response): List<SChapter> {
val document = response.asJsoup()
val url = getChapterFeedUrl(document)
val req = GET(url, headers)
val res = client.newCall(req).execute()
val jsonString = res.body.string()
val result = json.decodeFromString<ZeistMangaDto>(jsonString)
return result.feed?.entry
?.filter {
!it.category.orEmpty().any { category ->
category.term == "Series"
}
}
?.map { it.toSChapter(baseUrl) }
?: throw Exception("Failed to parse from chapter API")
}
private val imagePageRegex = """(http|https)://[^"]+""".toRegex()
override fun pageListParse(response: Response): List<Page> {
val document = response.asJsoup()
val script = document.select(".post-body > script").html()
val matches = imagePageRegex.findAll(script)
return matches.mapIndexed { i, match ->
Page(i, "", match.value)
}.toList()
}
private val labelChapterRegex = """var label_chapter = "([^"]+)";""".toRegex()
override fun getChapterFeedUrl(doc: Document): String {
val script = doc.select(".post-body > script")
val feed = labelChapterRegex.find(script.html())
?.groupValues?.get(1)
?: throw Exception("Failed to find chapter feed")
return apiUrl(chapterCategory)
.addPathSegments(feed)
.addQueryParameter("max-results", "999999")
.build().toString()
}
private val intl by lazy { ZeistMangaIntl(lang) }
override fun getStatusList(): List<Status> = listOf(
Status(intl.all, ""),
Status(intl.statusOngoing, "Ongoing"),
Status(intl.statusCompleted, "Completed"),
)
override fun getTypeList(): List<Type> = listOf(
Type(intl.all, ""),
Type(intl.typeManga, "Manga"),
Type(intl.typeManhua, "Manhua"),
Type(intl.typeManhwa, "Manhwa"),
)
override fun getGenreList(): List<Genre> = listOf(
Genre("Drama", "Drama"),
Genre("Mature", "Mature"),
Genre("Supernatural", "Supernatural"),
)
}

View File

@ -1,10 +0,0 @@
ext {
extName = 'Komikuzan'
extClass = '.Komikuzan'
themePkg = 'madara'
baseUrl = 'https://komikuzan.com'
overrideVersionCode = 0
isNsfw = false
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

View File

@ -1,15 +0,0 @@
package eu.kanade.tachiyomi.extension.id.komikuzan
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class Komikuzan : Madara(
"Komikuzan",
"https://komikuzan.com",
"id",
dateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("id")),
) {
override val useLoadMoreRequest = LoadMoreStrategy.Never
override val useNewChapterEndpoint = true
}

View File

@ -1,10 +0,0 @@
ext {
extName = 'Magerin'
extClass = '.Magerin'
themePkg = 'zeistmanga'
baseUrl = 'https://www.magerin.com'
overrideVersionCode = 0
isNsfw = false
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

View File

@ -1,10 +0,0 @@
package eu.kanade.tachiyomi.extension.id.magerin
import eu.kanade.tachiyomi.multisrc.zeistmanga.ZeistManga
import eu.kanade.tachiyomi.network.interceptor.rateLimit
class Magerin : ZeistManga("Magerin", "https://www.magerin.com", "id") {
override val client = super.client.newBuilder()
.rateLimit(3)
.build()
}

View File

@ -1,10 +0,0 @@
ext {
extName = 'Manga Raw.org'
extClass = '.MangaRawOrg'
themePkg = 'mangathemesia'
baseUrl = 'https://mangaraw.org'
overrideVersionCode = 1
isNsfw = true
}
apply from: "$rootDir/common.gradle"

View File

@ -1,66 +0,0 @@
package eu.kanade.tachiyomi.extension.ja.mangaraworg
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.network.asObservableSuccess
import eu.kanade.tachiyomi.network.interceptor.rateLimit
import eu.kanade.tachiyomi.source.model.FilterList
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.OkHttpClient
import okhttp3.Request
import okhttp3.Response
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import rx.Observable
class MangaRawOrg : MangaThemesia("Manga Raw.org", "https://mangaraw.org", "ja") {
override val id = 6223520752496636410
override val client: OkHttpClient = super.client.newBuilder()
.rateLimit(4)
.build()
override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/search?order=popular&page=$page", headers)
override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/search?order=update&page=$page", headers)
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request =
GET("$baseUrl/search?s=$query&page=$page")
override fun searchMangaSelector() = "div.bsx"
override fun searchMangaFromElement(element: Element): SManga {
return SManga.create().apply {
element.select("div.bigor > a").let {
setUrlWithoutDomain(it.attr("href"))
title = it.text()
}
thumbnail_url = element.select("img").attr("abs:src")
}
}
override fun searchMangaNextPageSelector() = "a[rel=next]"
override fun mangaDetailsParse(document: Document): SManga = super.mangaDetailsParse(document)
.apply { description = document.select("div.bottom").firstOrNull()?.ownText() }
override fun fetchPageList(chapter: SChapter): Observable<List<Page>> {
return client.newCall(pageListRequest(chapter))
.asObservableSuccess()
.map { response ->
pageListParse(response, baseUrl + chapter.url.removeSuffix("/"))
}
}
private fun pageListParse(response: Response, chapterUrl: String): List<Page> {
return response.asJsoup().select("span.page-link").first()!!.ownText().substringAfterLast(" ").toInt()
.let { lastNum -> IntRange(1, lastNum) }
.map { num -> Page(num, "$chapterUrl/$num") }
}
override fun imageUrlParse(document: Document): String = document.select("a.img-block img").attr("abs:src")
override fun getFilterList(): FilterList = FilterList()
}

View File

@ -1,10 +0,0 @@
ext {
extName = 'Manga One Love'
extClass = '.MangaOneLove'
themePkg = 'madara'
baseUrl = 'https://mangaonelove.ru'
overrideVersionCode = 2
isNsfw = true
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

View File

@ -1,7 +0,0 @@
package eu.kanade.tachiyomi.extension.ru.mangaonelove
import eu.kanade.tachiyomi.multisrc.madara.Madara
import java.text.SimpleDateFormat
import java.util.Locale
class MangaOneLove : Madara("Manga One Love", "https://mangaonelove.ru", "ru", SimpleDateFormat("dd.MM.yyyy", Locale.US))

View File

@ -1,10 +0,0 @@
ext {
extName = 'CAT-translator'
extClass = '.CatTranslator'
themePkg = 'madara'
baseUrl = 'https://cats-translator.com/manga'
overrideVersionCode = 2
isNsfw = true
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

View File

@ -1,33 +0,0 @@
package eu.kanade.tachiyomi.extension.th.cattranslator
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.source.model.SManga
import org.jsoup.nodes.Element
class CatTranslator : Madara(
"CAT-translator",
"https://cats-translator.com/manga",
"th",
) {
private fun parseMangaFromElement(element: Element, isSearch: Boolean): SManga {
val manga = SManga.create()
with(element) {
selectFirst(if (isSearch) "div.post-title a" else popularMangaUrlSelector)!!.let {
manga.setUrlWithoutDomain(it.attr("abs:href"))
manga.url = manga.url.removePrefix("/manga")
manga.title = it.ownText()
}
selectFirst("img")?.let {
manga.thumbnail_url = imageFromElement(it)
}
}
return manga
}
override fun popularMangaFromElement(element: Element) = parseMangaFromElement(element, false)
override fun searchMangaFromElement(element: Element) = parseMangaFromElement(element, true)
}

View File

@ -1,10 +0,0 @@
ext {
extName = 'Dragon-Manga'
extClass = '.DragonManga'
themePkg = 'mangathemesia'
baseUrl = 'https://www.dragon-manga.com'
overrideVersionCode = 0
isNsfw = true
}
apply from: "$rootDir/common.gradle"

View File

@ -1,12 +0,0 @@
package eu.kanade.tachiyomi.extension.th.dragonmanga
import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
import java.text.SimpleDateFormat
import java.util.Locale
class DragonManga : MangaThemesia(
"DragonManga",
"https://www.dragon-manga.com",
"th",
dateFormat = SimpleDateFormat("MMMM d, yyyy", Locale("th")),
)

View File

@ -1,10 +0,0 @@
ext {
extName = 'Deccal Scans'
extClass = '.DeccalScans'
themePkg = 'madara'
baseUrl = 'https://deccalscans.net'
overrideVersionCode = 0
isNsfw = true
}
apply from: "$rootDir/common.gradle"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

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