diff --git a/multisrc/overrides/zeistmanga/sobatmanku/SobatManKu.kt b/multisrc/overrides/zeistmanga/sobatmanku/SobatManKu.kt new file mode 100644 index 000000000..e3f6ba30c --- /dev/null +++ b/multisrc/overrides/zeistmanga/sobatmanku/SobatManKu.kt @@ -0,0 +1,81 @@ +package eu.kanade.tachiyomi.extension.id.sobatmanku + +import eu.kanade.tachiyomi.multisrc.zeistmanga.ZeistManga +import eu.kanade.tachiyomi.network.GET +import eu.kanade.tachiyomi.source.model.MangasPage +import eu.kanade.tachiyomi.source.model.SChapter +import eu.kanade.tachiyomi.source.model.SManga +import eu.kanade.tachiyomi.util.asJsoup +import okhttp3.Request +import okhttp3.Response + +class SobatManKu : ZeistManga("SobatManKu", "https://www.sobatmanku19.site", "id") { + + override val supportsLatest = true + + override val hasFilters = true + + override fun latestUpdatesRequest(page: Int): Request { + return GET("$baseUrl/search/label/Update", headers) + } + + override fun latestUpdatesParse(response: Response): MangasPage { + val doc = response.asJsoup() + val selector = doc.select(".grid.gtc-f141a > div") + val mangas = selector.map { element -> + + SManga.create().apply { + element.select("a:nth-child(2)").let { + title = it.text() + setUrlWithoutDomain(it.attr("href")) + } + thumbnail_url = element.select("img").first()!!.attr("abs:src") + } + } + + return MangasPage(mangas, false) + } + + override fun mangaDetailsParse(response: Response): SManga { + val document = response.asJsoup() + val profileManga = document.selectFirst(".grid.gtc-235fr")!! + return SManga.create().apply { + thumbnail_url = profileManga.selectFirst("img")!!.attr("abs:src") + description = profileManga.select("#synopsis").text() + genre = profileManga.select("div.mt-15 > a[rel=tag]").joinToString { it.text() } + + val infoElement = profileManga.select(".y6x11p") + infoElement.forEach { + val descText = it.select("span.dt").text() + when (it.ownText().trim()) { + "Status" -> { + status = parseStatus(descText) + } + + "Author" -> { + author = descText + } + + "Artist" -> { + artist = descText + } + } + } + } + } + + override fun chapterListParse(response: Response): List { + return super.chapterListParse(response).onEach { + // fix some chapter name + it.name = it.name.run { + substring(indexOf("Chapter")) + } + } + } + + private fun parseStatus(element: String): Int = when (element.lowercase()) { + "ongoing" -> SManga.ONGOING + "completed" -> SManga.COMPLETED + else -> SManga.UNKNOWN + } +} diff --git a/multisrc/overrides/zeistmanga/sobatmanku/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/zeistmanga/sobatmanku/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000..68a17f51b Binary files /dev/null and b/multisrc/overrides/zeistmanga/sobatmanku/res/mipmap-hdpi/ic_launcher.png differ diff --git a/multisrc/overrides/zeistmanga/sobatmanku/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/zeistmanga/sobatmanku/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000..6c936355d Binary files /dev/null and b/multisrc/overrides/zeistmanga/sobatmanku/res/mipmap-mdpi/ic_launcher.png differ diff --git a/multisrc/overrides/zeistmanga/sobatmanku/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/zeistmanga/sobatmanku/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000..c7699dd2a Binary files /dev/null and b/multisrc/overrides/zeistmanga/sobatmanku/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/zeistmanga/sobatmanku/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/zeistmanga/sobatmanku/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000..c8faabf66 Binary files /dev/null and b/multisrc/overrides/zeistmanga/sobatmanku/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/zeistmanga/sobatmanku/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/zeistmanga/sobatmanku/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000..4b9834a9c Binary files /dev/null and b/multisrc/overrides/zeistmanga/sobatmanku/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/multisrc/overrides/zeistmanga/sobatmanku/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/sobatmanku/res/web_hi_res_512.png new file mode 100644 index 000000000..b56a5b315 Binary files /dev/null and b/multisrc/overrides/zeistmanga/sobatmanku/res/web_hi_res_512.png differ diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistManga.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistManga.kt index 94ed9f4d7..4db68d702 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistManga.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistManga.kt @@ -59,8 +59,8 @@ abstract class ZeistManga( return MangasPage(mangalist, false) } - override fun latestUpdatesRequest(page: Int) = throw UnsupportedOperationException("Not used.") - override fun latestUpdatesParse(response: Response) = throw UnsupportedOperationException("Not used.") + override fun latestUpdatesRequest(page: Int): Request = throw UnsupportedOperationException("Not used.") + override fun latestUpdatesParse(response: Response): MangasPage = throw UnsupportedOperationException("Not used.") override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request { val startIndex = maxMangaResults * (page - 1) + 1 diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistMangaGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistMangaGenerator.kt index 4f9687729..34c7ddb4c 100644 --- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistMangaGenerator.kt +++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistMangaGenerator.kt @@ -21,6 +21,7 @@ class ZeistMangaGenerator : ThemeSourceGenerator { SingleLang("Muslos No Sekai", "https://muslosnosekai.blogspot.com", "es"), SingleLang("ShiyuraSub", "https://shiyurasub.blogspot.com", "id"), SingleLang("Tooncubus", "https://www.tooncubus.top", "id", isNsfw = true), + SingleLang("SobatManKu", "https://www.sobatmanku19.site", "id"), ) companion object {