@@ -4,10 +4,13 @@ import eu.kanade.tachiyomi.multisrc.madara.Madara
4
4
import eu.kanade.tachiyomi.network.GET
5
5
import eu.kanade.tachiyomi.source.model.Filter
6
6
import eu.kanade.tachiyomi.source.model.FilterList
7
+ import eu.kanade.tachiyomi.source.model.MangasPage
7
8
import eu.kanade.tachiyomi.source.model.SChapter
8
9
import eu.kanade.tachiyomi.source.model.SManga
10
+ import eu.kanade.tachiyomi.util.asJsoup
9
11
import okhttp3.HttpUrl.Companion.toHttpUrl
10
12
import okhttp3.Request
13
+ import okhttp3.Response
11
14
import org.jsoup.nodes.Document
12
15
import org.jsoup.nodes.Element
13
16
@@ -18,27 +21,43 @@ class ManhwasMen : Madara("Manhwas Men", "https://manhwas.men", "en") {
18
21
override val sendViewCount = false
19
22
20
23
// 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"
24
26
25
27
override fun popularMangaRequest (page : Int ): Request {
26
28
return GET (" $baseUrl /manga-list?page=$page " , headers)
27
29
}
28
30
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 " )
33
35
}
34
36
35
37
// latest
36
- override fun latestUpdatesSelector () = " div.d-flex:nth-child(6) div.col-6 "
38
+ override fun latestUpdatesNextPageSelector () = null
37
39
38
40
override fun latestUpdatesRequest (page : Int ): Request {
39
41
return GET (baseUrl, headers)
40
42
}
41
43
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
+
42
61
// search
43
62
override fun searchMangaSelector () = popularMangaSelector()
44
63
override fun searchMangaNextPageSelector () = popularMangaNextPageSelector()
@@ -66,27 +85,41 @@ class ManhwasMen : Madara("Manhwas Men", "https://manhwas.men", "en") {
66
85
67
86
// manga details
68
87
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
+ }
75
101
}
76
102
}
77
103
}
78
104
}
79
105
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
+
80
114
// chapter list
81
- override val chapterUrlSuffix = " "
115
+ override fun chapterListSelector () = " aside.principal ul.episodes-list li "
82
116
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())
87
121
}
88
122
89
- // page list
90
123
override val pageListParseSelector = " #chapter_imgs img"
91
124
92
125
// genre
0 commit comments