[DoujinDesu] Apply suggesions from code review

pull/168/head
vianh 3 years ago
parent b49aee3188
commit 3112b7937c

@ -1,6 +1,5 @@
package org.koitharu.kotatsu.parsers.site package org.koitharu.kotatsu.parsers.site
import org.koitharu.kotatsu.parsers.InternalParsersApi
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.PagedMangaParser import org.koitharu.kotatsu.parsers.PagedMangaParser
@ -12,7 +11,7 @@ import java.util.*
@MangaSourceParser("DOUJINDESU", "DoujinDesu", "id") @MangaSourceParser("DOUJINDESU", "DoujinDesu", "id")
class DoujinDesuParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.DOUJINDESU, pageSize = 18) { class DoujinDesuParser(context: MangaLoaderContext) : PagedMangaParser(context, MangaSource.DOUJINDESU, pageSize = 18) {
@InternalParsersApi
override val configKeyDomain: ConfigKey.Domain override val configKeyDomain: ConfigKey.Domain
get() = ConfigKey.Domain("212.32.226.234", null) get() = ConfigKey.Domain("212.32.226.234", null)
@ -21,6 +20,7 @@ class DoujinDesuParser(context: MangaLoaderContext) : PagedMangaParser(context,
override suspend fun getDetails(manga: Manga): Manga { override suspend fun getDetails(manga: Manga): Manga {
val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml().selectFirstOrThrow("#archive") val docs = webClient.httpGet(manga.url.toAbsoluteUrl(domain)).parseHtml().selectFirstOrThrow("#archive")
val chapterDateFormat = SimpleDateFormat("EEEE, dd MMMM yyyy", sourceLocale)
val metadataEl = docs.selectFirst(".wrapper > .metadata tbody") val metadataEl = docs.selectFirst(".wrapper > .metadata tbody")
val state = when (metadataEl?.selectFirst("tr:contains(Status)")?.selectLast("td")?.text()) { val state = when (metadataEl?.selectFirst("tr:contains(Status)")?.selectLast("td")?.text()) {
"Finished" -> MangaState.FINISHED "Finished" -> MangaState.FINISHED
@ -39,16 +39,18 @@ class DoujinDesuParser(context: MangaLoaderContext) : PagedMangaParser(context,
source = source, source = source,
) )
}, },
chapters = docs.select("#chapter_list > ul > li").mapChapters(reversed = true) { index, element -> chapters = docs.requireElementById("chapter_list")
.select("ul > li")
.mapChapters(reversed = true) { index, element ->
val titleTag = element.selectFirstOrThrow(".epsleft > .lchx > a") val titleTag = element.selectFirstOrThrow(".epsleft > .lchx > a")
val dateFormat = SimpleDateFormat("EEEE, dd MMMM yyyy", Locale("in")) val url = titleTag.attrAsRelativeUrl("href")
MangaChapter( MangaChapter(
id = generateUid(titleTag.attrAsRelativeUrl("href")), id = generateUid(url),
name = titleTag.text(), name = titleTag.text(),
number = index + 1, number = index + 1,
url = titleTag.attrAsRelativeUrl("href"), url = url,
scanlator = null, scanlator = null,
uploadDate = dateFormat.tryParse(element.select(".epsleft > .date").text()), uploadDate = chapterDateFormat.tryParse(element.select(".epsleft > .date").text()),
branch = null, branch = null,
source = source, source = source,
) )
@ -60,7 +62,7 @@ class DoujinDesuParser(context: MangaLoaderContext) : PagedMangaParser(context,
page: Int, page: Int,
query: String?, query: String?,
tags: Set<MangaTag>?, tags: Set<MangaTag>?,
sortOrder: SortOrder sortOrder: SortOrder,
): List<Manga> { ): List<Manga> {
val url = urlBuilder().apply { val url = urlBuilder().apply {
addPathSegment("manga") addPathSegment("manga")
@ -80,7 +82,10 @@ class DoujinDesuParser(context: MangaLoaderContext) : PagedMangaParser(context,
} }
}.build() }.build()
return webClient.httpGet(url).parseHtml().select("#archives > div.entries > .entry") return webClient.httpGet(url).parseHtml()
.requireElementById("archives")
.selectFirstOrThrow("div.entries")
.select(".entry")
.map { .map {
val titleTag = it.selectFirstOrThrow(".metadata > a") val titleTag = it.selectFirstOrThrow(".metadata > a")
val relativeUrl = titleTag.attrAsRelativeUrl("href") val relativeUrl = titleTag.attrAsRelativeUrl("href")
@ -105,7 +110,7 @@ class DoujinDesuParser(context: MangaLoaderContext) : PagedMangaParser(context,
override suspend fun getPages(chapter: MangaChapter): List<MangaPage> { override suspend fun getPages(chapter: MangaChapter): List<MangaPage> {
val id = webClient.httpGet(chapter.url.toAbsoluteUrl(domain)).parseHtml() val id = webClient.httpGet(chapter.url.toAbsoluteUrl(domain)).parseHtml()
.selectFirstOrThrow("#reader") .requireElementById("reader")
.attr("data-id") .attr("data-id")
return webClient.httpPost("/themes/ajax/ch.php".toAbsoluteUrl(domain), "id=$id").parseHtml() return webClient.httpPost("/themes/ajax/ch.php".toAbsoluteUrl(domain), "id=$id").parseHtml()
.select("img") .select("img")
@ -122,7 +127,9 @@ class DoujinDesuParser(context: MangaLoaderContext) : PagedMangaParser(context,
override suspend fun getTags(): Set<MangaTag> { override suspend fun getTags(): Set<MangaTag> {
return webClient.httpGet("/genre/".toAbsoluteUrl(domain)).parseHtml() return webClient.httpGet("/genre/".toAbsoluteUrl(domain)).parseHtml()
.select("#taxonomy .entries > .entry > a") .requireElementById("taxonomy")
.selectFirstOrThrow(".entries")
.select(".entry > a")
.mapToSet { .mapToSet {
MangaTag( MangaTag(
key = it.attr("title"), key = it.attr("title"),

Loading…
Cancel
Save