Tachiyomi-Extensions/multisrc/overrides/madara/manhwa18cc/src/Manhwa18CcFactory.kt

88 lines
3.1 KiB
Kotlin
Raw Normal View History

package eu.kanade.tachiyomi.extension.all.manhwa18cc
import eu.kanade.tachiyomi.multisrc.madara.Madara
import eu.kanade.tachiyomi.network.GET
import eu.kanade.tachiyomi.source.Source
import eu.kanade.tachiyomi.source.SourceFactory
import eu.kanade.tachiyomi.source.model.FilterList
import eu.kanade.tachiyomi.source.model.Page
import okhttp3.Request
import org.jsoup.nodes.Document
import org.jsoup.nodes.Element
import java.text.SimpleDateFormat
import java.util.Locale
class Manhwa18CcFactory : SourceFactory {
override fun createSources(): List<Source> = listOf(
Manhwa18CcEN(),
Manhwa18CcKO(),
Manhwa18CcALL(),
)
}
2022-11-13 19:43:48 +00:00
class Manhwa18CcALL : Manhwa18Cc("Manhwa18.cc", "https://manhwa18.cc", "all")
class Manhwa18CcEN : Manhwa18Cc("Manhwa18.cc", "https://manhwa18.cc", "en") {
2022-11-13 19:43:48 +00:00
override fun popularMangaSelector() = "div.manga-item:not(:has(h3 a[title$='Raw']))"
}
2022-11-13 19:43:48 +00:00
class Manhwa18CcKO : Manhwa18Cc("Manhwa18.cc", "https://manhwa18.cc", "ko") {
2022-11-13 19:43:48 +00:00
override fun popularMangaSelector() = "div.manga-item:has(h3 a[title$='Raw'])"
override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/raw/$page")
}
abstract class Manhwa18Cc(
override val name: String,
override val baseUrl: String,
2022-11-13 19:43:48 +00:00
lang: String,
) : Madara(name, baseUrl, lang, SimpleDateFormat("dd MMM yyyy", Locale.US)) {
override val fetchGenres = false
override fun popularMangaSelector() = "div.manga-item"
2022-11-13 19:43:48 +00:00
override val popularMangaUrlSelector = "div.manga-item div.data a"
2022-11-13 19:43:48 +00:00
override fun popularMangaNextPageSelector() = "ul.pagination li.next a"
override fun popularMangaRequest(page: Int): Request = GET("$baseUrl/webtoons/$page?orderby=trending")
override fun latestUpdatesRequest(page: Int): Request = GET("$baseUrl/webtoons/$page?orderby=latest")
override fun searchMangaSelector() = popularMangaSelector()
override fun searchMangaNextPageSelector() = popularMangaNextPageSelector()
override fun searchMangaFromElement(element: Element) = popularMangaFromElement(element)
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
// After searching and go back to popular page, it always sent empty query thus display
// "No results found" message. So this fix redirect to popular page.
2022-11-13 19:43:48 +00:00
if (query.isBlank()) return popularMangaRequest(page)
return GET("$baseUrl/search?q=$query&page=$page")
}
override val mangaSubString = "webtoon"
2022-11-13 19:43:48 +00:00
override val mangaDetailsSelectorDescription = "div.panel-story-description div.dsct"
override fun chapterListSelector() = "li.a-h"
override fun chapterDateSelector() = "span.chapter-time"
override val pageListParseSelector = "div.read-content img"
2022-11-14 21:08:22 +00:00
override fun pageListParse(document: Document): List<Page> {
return document.select(pageListParseSelector).mapIndexed { index, element ->
Page(
index,
document.location(),
element?.let {
it.absUrl(if (it.hasAttr("data-src")) "data-src" else "src")
2023-02-11 19:21:03 +00:00
},
)
}
}
}