[NetTruyen] Fix attempt 1
parent
839869061e
commit
040be87a54
@ -1,15 +1,78 @@
|
|||||||
package org.koitharu.kotatsu.parsers.site.wpcomics.vi
|
package org.koitharu.kotatsu.parsers.site.wpcomics.vi
|
||||||
|
|
||||||
|
import androidx.collection.ArrayMap
|
||||||
|
import androidx.collection.ArraySet
|
||||||
|
import kotlinx.coroutines.async
|
||||||
|
import kotlinx.coroutines.coroutineScope
|
||||||
|
import kotlinx.coroutines.sync.Mutex
|
||||||
|
import kotlinx.coroutines.sync.withLock
|
||||||
|
import org.jsoup.nodes.Document
|
||||||
|
import org.jsoup.nodes.Element
|
||||||
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
import org.koitharu.kotatsu.parsers.MangaLoaderContext
|
||||||
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
import org.koitharu.kotatsu.parsers.MangaSourceParser
|
||||||
import org.koitharu.kotatsu.parsers.config.ConfigKey
|
import org.koitharu.kotatsu.parsers.config.ConfigKey
|
||||||
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
import org.koitharu.kotatsu.parsers.model.MangaParserSource
|
||||||
import org.koitharu.kotatsu.parsers.site.wpcomics.WpComicsParser
|
import org.koitharu.kotatsu.parsers.site.wpcomics.WpComicsParser
|
||||||
|
import org.koitharu.kotatsu.parsers.model.*
|
||||||
|
import org.koitharu.kotatsu.parsers.util.*
|
||||||
|
import java.text.DateFormat
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
@MangaSourceParser("NETTRUYEN", "NetTruyen", "vi")
|
@MangaSourceParser("NETTRUYEN", "NetTruyen", "vi")
|
||||||
internal class NetTruyen(context: MangaLoaderContext) :
|
internal class NetTruyen(context: MangaLoaderContext) :
|
||||||
WpComicsParser(context, MangaParserSource.NETTRUYEN, "nettruyenww.com", 44) {
|
WpComicsParser(context, MangaParserSource.NETTRUYEN, "nettruyenww.com", 44) {
|
||||||
override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain(
|
override val configKeyDomain: ConfigKey.Domain = ConfigKey.Domain("nettruyenww.com", "nettruyenx.com")
|
||||||
"nettruyenww.com", "nettruyenx.com",
|
|
||||||
)
|
override suspend fun getDetails(manga: Manga): Manga = coroutineScope {
|
||||||
|
val fullUrl = manga.url.toAbsoluteUrl(domain)
|
||||||
|
val doc = webClient.httpGet(fullUrl).parseHtml()
|
||||||
|
val chaptersDeferred = async { getChaps(doc) }
|
||||||
|
val tagMap = getOrCreateTagMap()
|
||||||
|
val tagsElement = doc.select("li.kind p.col-xs-8 a")
|
||||||
|
val mangaTags = tagsElement.mapNotNullToSet { tagMap[it.text()] }
|
||||||
|
manga.copy(
|
||||||
|
description = doc.selectFirst(selectDesc)?.html().orEmpty(),
|
||||||
|
altTitle = doc.selectFirst("h2.other-name")?.text().orEmpty(),
|
||||||
|
author = doc.body().select(selectAut).text(),
|
||||||
|
state = doc.selectFirst(selectState)?.let {
|
||||||
|
when (it.text()) {
|
||||||
|
in ongoing -> MangaState.ONGOING
|
||||||
|
in finished -> MangaState.FINISHED
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
tags = mangaTags,
|
||||||
|
rating = doc.selectFirst("div.star input")?.attr("value")?.toFloatOrNull()?.div(5f) ?: RATING_UNKNOWN,
|
||||||
|
chapters = chaptersDeferred.await(),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private suspend fun getChaps(doc: Document): List<MangaChapter> {
|
||||||
|
return doc.body().select(selectChapter).mapChapters(reversed = false) { i, li ->
|
||||||
|
val a = li.selectFirstOrThrow("a")
|
||||||
|
val href = a.attrAsRelativeUrl("href")
|
||||||
|
val dateText = li.selectFirst(selectDate)?.text()
|
||||||
|
val findHours = dateText?.contains(":")
|
||||||
|
val dateFormat = if (findHours == true) {
|
||||||
|
SimpleDateFormat("HH:mm dd/MM", sourceLocale)
|
||||||
|
} else {
|
||||||
|
SimpleDateFormat(datePattern, sourceLocale)
|
||||||
|
}
|
||||||
|
MangaChapter(
|
||||||
|
id = generateUid(href),
|
||||||
|
name = a.text(),
|
||||||
|
number = i + 1f,
|
||||||
|
volume = 0,
|
||||||
|
url = href,
|
||||||
|
uploadDate = parseChapterDate(
|
||||||
|
dateFormat,
|
||||||
|
dateText,
|
||||||
|
),
|
||||||
|
source = source,
|
||||||
|
scanlator = null,
|
||||||
|
branch = null,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue