Skip to content

Commit 308671a

Browse files
ManhwasMen: fix sources not loading mangas (#9836)
* ManhwasMen: fix popular manda selectors and creator, latest manga selectors and parser, manga details parser * manhwasmen: add alternative names in description * manhwasmen: change .not to isNotBlank Co-authored-by: stevenyomi <[email protected]> --------- Co-authored-by: stevenyomi <[email protected]>
1 parent 4df7210 commit 308671a

File tree

2 files changed

+54
-21
lines changed

2 files changed

+54
-21
lines changed

src/en/manhwasmen/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ ext {
33
extClass = '.ManhwasMen'
44
themePkg = 'madara'
55
baseUrl = 'https://manhwas.men'
6-
overrideVersionCode = 0
6+
overrideVersionCode = 1
77
isNsfw = true
88
}
99

src/en/manhwasmen/src/eu/kanade/tachiyomi/extension/en/manhwasmen/ManhwasMen.kt

Lines changed: 53 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@ import eu.kanade.tachiyomi.multisrc.madara.Madara
44
import eu.kanade.tachiyomi.network.GET
55
import eu.kanade.tachiyomi.source.model.Filter
66
import eu.kanade.tachiyomi.source.model.FilterList
7+
import eu.kanade.tachiyomi.source.model.MangasPage
78
import eu.kanade.tachiyomi.source.model.SChapter
89
import eu.kanade.tachiyomi.source.model.SManga
10+
import eu.kanade.tachiyomi.util.asJsoup
911
import okhttp3.HttpUrl.Companion.toHttpUrl
1012
import okhttp3.Request
13+
import okhttp3.Response
1114
import org.jsoup.nodes.Document
1215
import org.jsoup.nodes.Element
1316

@@ -18,27 +21,43 @@ class ManhwasMen : Madara("Manhwas Men", "https://manhwas.men", "en") {
1821
override val sendViewCount = false
1922

2023
// popular
21-
override fun popularMangaSelector() = "div.col-6"
22-
override val popularMangaUrlSelector = ".series-box a"
23-
override fun popularMangaNextPageSelector() = "a[rel=next]"
24+
override fun popularMangaSelector() = "ul > li > article.anime"
25+
override fun popularMangaNextPageSelector() = "div nav ul.pagination li.page-item.active + li a"
2426

2527
override fun popularMangaRequest(page: Int): Request {
2628
return GET("$baseUrl/manga-list?page=$page", headers)
2729
}
2830

29-
override fun popularMangaFromElement(element: Element): SManga {
30-
return super.popularMangaFromElement(element).apply {
31-
title = element.select(popularMangaUrlSelector).text()
32-
}
31+
override fun popularMangaFromElement(element: Element) = SManga.create().apply {
32+
setUrlWithoutDomain(element.selectFirst("a")!!.attr("abs:href"))
33+
title = element.selectFirst("h3.title")!!.text()
34+
thumbnail_url = element.selectFirst("img")!!.attr("abs:src")
3335
}
3436

3537
// latest
36-
override fun latestUpdatesSelector() = "div.d-flex:nth-child(6) div.col-6"
38+
override fun latestUpdatesNextPageSelector() = null
3739

3840
override fun latestUpdatesRequest(page: Int): Request {
3941
return GET(baseUrl, headers)
4042
}
4143

44+
override fun latestUpdatesParse(response: Response): MangasPage {
45+
val document = response.asJsoup()
46+
47+
val mangas = document.select(popularMangaSelector())
48+
.map(::latestMangaFromElement).distinctBy { it.url }
49+
50+
return MangasPage(mangas, false)
51+
}
52+
53+
private fun latestMangaFromElement(element: Element): SManga {
54+
return popularMangaFromElement(element).apply {
55+
setUrlWithoutDomain(
56+
element.selectFirst("a")!!.attr("abs:href").replaceAfterLast("/", ""),
57+
)
58+
}
59+
}
60+
4261
// search
4362
override fun searchMangaSelector() = popularMangaSelector()
4463
override fun searchMangaNextPageSelector() = popularMangaNextPageSelector()
@@ -66,27 +85,41 @@ class ManhwasMen : Madara("Manhwas Men", "https://manhwas.men", "en") {
6685

6786
// manga details
6887
override fun mangaDetailsParse(document: Document): SManga {
69-
return super.mangaDetailsParse(document).apply {
70-
document.select(mangaDetailsSelectorStatus).last()?.let {
71-
status = when (it.text()) {
72-
in "complete" -> SManga.COMPLETED
73-
in "ongoing" -> SManga.ONGOING
74-
else -> SManga.UNKNOWN
88+
val profileManga = document.selectFirst(".anime-single")!!
89+
return SManga.create().apply {
90+
title = profileManga.selectFirst(".title")!!.text()
91+
thumbnail_url = profileManga.selectFirst("img")!!.attr("abs:src")
92+
description = profileManga.selectFirst(".sinopsis")!!.text()
93+
status = parseStatus(profileManga.select("span.anime-type-peli").last()!!.text())
94+
genre = profileManga.select("p.genres > span").joinToString { it.text() }
95+
profileManga.selectFirst(altNameSelector)?.ownText()?.let {
96+
if (it.isNotBlank() && it.notUpdating()) {
97+
description = when {
98+
description.isNullOrBlank() -> "$altName $it"
99+
else -> "${description}\n\n$altName $it"
100+
}
75101
}
76102
}
77103
}
78104
}
79105

106+
private fun parseStatus(status: String): Int = when (status) {
107+
"ongoing" -> SManga.ONGOING
108+
"complete" -> SManga.COMPLETED
109+
else -> SManga.UNKNOWN
110+
}
111+
112+
override val altNameSelector = "div.container div aside h2.h5"
113+
80114
// chapter list
81-
override val chapterUrlSuffix = ""
115+
override fun chapterListSelector() = "aside.principal ul.episodes-list li"
82116

83-
override fun chapterFromElement(element: Element): SChapter {
84-
return super.chapterFromElement(element).apply {
85-
name = element.select("p").text()
86-
}
117+
override fun chapterFromElement(element: Element) = SChapter.create().apply {
118+
setUrlWithoutDomain(element.selectFirst("a")!!.attr("abs:href"))
119+
name = element.selectFirst("a > div > p > span")!!.text()
120+
date_upload = parseRelativeDate(element.selectFirst("a > div > span")!!.text())
87121
}
88122

89-
// page list
90123
override val pageListParseSelector = "#chapter_imgs img"
91124

92125
// genre

0 commit comments

Comments
 (0)