Ổ Truyện: Fix no value for _id in getListPage (#2259)

Co-authored-by: Draken <131387159+dragonx943@users.noreply.github.com>
master
Hoàng Phi Hùng 7 months ago committed by GitHub
parent 5882a5d54d
commit a3f384e3b3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -1,6 +1,5 @@
package org.koitharu.kotatsu.parsers.site.vi package org.koitharu.kotatsu.parsers.site.vi
import org.jsoup.HttpStatusException
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
@ -27,7 +26,6 @@ import org.koitharu.kotatsu.parsers.util.oneOrThrowIfMany
import org.koitharu.kotatsu.parsers.util.parseJson import org.koitharu.kotatsu.parsers.util.parseJson
import org.koitharu.kotatsu.parsers.util.parseSafe import org.koitharu.kotatsu.parsers.util.parseSafe
import org.koitharu.kotatsu.parsers.util.urlEncoded import org.koitharu.kotatsu.parsers.util.urlEncoded
import java.net.HttpURLConnection
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.EnumSet import java.util.EnumSet
import java.util.Locale import java.util.Locale
@ -75,77 +73,74 @@ internal class OTruyenParser(context: MangaLoaderContext) :
) )
} }
override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List<Manga> { override suspend fun getListPage(page: Int, order: SortOrder, filter: MangaListFilter): List<Manga> {
val url = buildString { val url = buildString {
append("https://") append("https://")
append(domain) append(domain)
when { when {
!filter.query.isNullOrEmpty() -> { !filter.query.isNullOrEmpty() -> {
append("/v1/api/tim-kiem?keyword=") append("/v1/api/tim-kiem?keyword=")
append(filter.query.urlEncoded()) append(filter.query.urlEncoded())
append("&page=") append("&page=")
append(page.toString()) append(page.toString())
} }
else -> { else -> {
val tag = filter.tags.oneOrThrowIfMany() if (!filter.tags.isEmpty()) {
if (tag != null) { filter.tags.oneOrThrowIfMany()?.let {
append("/v1/api/the-loai/") append("/v1/api/the-loai/")
append(tag.key) append(it.key)
append("?page=") append("?page=")
append(page) append(page)
} else if (filter.states.isNotEmpty()) { }
filter.states.oneOrThrowIfMany()?.let { } else if (filter.states.isNotEmpty()) {
append( filter.states.oneOrThrowIfMany()?.let {
when (it) { append(
MangaState.ONGOING -> "/v1/api/danh-sach/dang-phat-hanh?page=${page}" when (it) {
MangaState.FINISHED -> "/v1/api/danh-sach/hoan-thanh?page=${page}" MangaState.FINISHED -> "/v1/api/danh-sach/hoan-thanh?page=${page}"
MangaState.UPCOMING -> "/v1/api/danh-sach/sap-ra-mat?page=${page}" MangaState.UPCOMING -> "/v1/api/danh-sach/sap-ra-mat?page=${page}"
else -> "/v1/api/danh-sach/dang-phat-hanh?page=${page}" // default else -> "/v1/api/danh-sach/dang-phat-hanh?page=${page}" // ONGOING
} }
) )
} }
} else { } else {
append("/v1/api/danh-sach/truyen-moi") // SortOrder.NEWEST append("/v1/api/danh-sach/truyen-moi") // SortOrder.NEWEST
append("?page=${page}") append("?page=${page}")
} }
} }
} }
} }
val json = try { val json = try {
webClient.httpGet(url).parseJson() webClient.httpGet(url).parseJson()
} catch (e: HttpStatusException) { } catch (_: Exception) {
if (e.statusCode == HttpURLConnection.HTTP_INTERNAL_ERROR) { return emptyList()
return emptyList() }
} else {
throw e val items = json.getJSONObject("data").getJSONArray("items")
} return items.mapJSON { jo ->
} val slug = jo.getString("slug")
Manga(
val items = json.getJSONObject("data").getJSONArray("items") id = generateUid(slug.hashCode().toLong()),
return items.mapJSON { jo -> url = slug,
Manga( publicUrl = "https://otruyen.cc/truyen-tranh/${slug}",
id = generateUid(jo.getString("_id").hashCode().toLong()), title = jo.getString("name"),
url = jo.getString("slug"), altTitles = emptySet(),
publicUrl = "https://otruyen.cc/truyen-tranh/${jo.getString("slug")}", coverUrl = "https://img.otruyenapi.com/uploads/comics/${jo.getString("thumb_url")}",
title = jo.getString("name"), authors = emptySet(),
altTitles = emptySet(), tags = emptySet(),
coverUrl = "https://img.otruyenapi.com/uploads/comics/${jo.getString("thumb_url")}", state = when (jo.getString("status")) {
authors = emptySet(), "ongoing" -> MangaState.ONGOING
tags = emptySet(), "coming_soon" -> MangaState.UPCOMING
state = when (jo.getString("status")) { "completed" -> MangaState.FINISHED
"ongoing" -> MangaState.ONGOING else -> null
"coming_soon" -> MangaState.UPCOMING },
"completed" -> MangaState.FINISHED contentRating = if (isNsfwSource) ContentRating.ADULT else null,
else -> null source = source,
}, rating = RATING_UNKNOWN,
contentRating = if (isNsfwSource) ContentRating.ADULT else null, )
source = source, }
rating = RATING_UNKNOWN, }
)
}
}
override suspend fun getDetails(manga: Manga): Manga { override suspend fun getDetails(manga: Manga): Manga {
val url = "https://$domain/v1/api/truyen-tranh/${manga.url}" val url = "https://$domain/v1/api/truyen-tranh/${manga.url}"

Loading…
Cancel
Save