[HeanCms] Fix manga ids

Koitharu 1 year ago
parent ca59e8e577
commit ae76631aaf
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -7,10 +7,7 @@ import org.koitharu.kotatsu.parsers.config.ConfigKey
import org.koitharu.kotatsu.parsers.core.LegacyPagedMangaParser import org.koitharu.kotatsu.parsers.core.LegacyPagedMangaParser
import org.koitharu.kotatsu.parsers.model.* import org.koitharu.kotatsu.parsers.model.*
import org.koitharu.kotatsu.parsers.util.* import org.koitharu.kotatsu.parsers.util.*
import org.koitharu.kotatsu.parsers.util.json.asTypedList import org.koitharu.kotatsu.parsers.util.json.*
import org.koitharu.kotatsu.parsers.util.json.getFloatOrDefault
import org.koitharu.kotatsu.parsers.util.json.mapJSON
import org.koitharu.kotatsu.parsers.util.json.unescapeJson
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.* import java.util.*
@ -112,7 +109,6 @@ internal abstract class HeanCms(
private fun parseMangaList(response: JSONObject): List<Manga> { private fun parseMangaList(response: JSONObject): List<Manga> {
return response.getJSONArray("data").mapJSON { it -> return response.getJSONArray("data").mapJSON { it ->
val id = it.getLong("id") val id = it.getLong("id")
val url = "/comic/${it.getString("series_slug")}"
val publicUrl = "/series/${it.getString("series_slug")}" val publicUrl = "/series/${it.getString("series_slug")}"
val title = it.getString("title") val title = it.getString("title")
val cover = if (it.getString("thumbnail").startsWith("https://")) { val cover = if (it.getString("thumbnail").startsWith("https://")) {
@ -122,8 +118,8 @@ internal abstract class HeanCms(
} }
Manga( Manga(
id = id, id = generateUid(id),
url = url, url = id.toString(),
title = title, title = title,
altTitles = setOfNotNull(it.getString("alternative_names").takeIf { it.isNotBlank() }), altTitles = setOfNotNull(it.getString("alternative_names").takeIf { it.isNotBlank() }),
publicUrl = publicUrl.toAbsoluteUrl(domain), publicUrl = publicUrl.toAbsoluteUrl(domain),
@ -148,7 +144,7 @@ internal abstract class HeanCms(
protected open val datePattern = "yyyy-MM-dd" protected open val datePattern = "yyyy-MM-dd"
override suspend fun getDetails(manga: Manga): Manga { override suspend fun getDetails(manga: Manga): Manga {
val seriesId = manga.id val seriesId = manga.url.toLongOrNull() ?: manga.id // backward compatibility
val url = "https://$apiPath/chapter/query?page=1&perPage=9999&series_id=$seriesId" val url = "https://$apiPath/chapter/query?page=1&perPage=9999&series_id=$seriesId"
val response = webClient.httpGet(url).parseJson() val response = webClient.httpGet(url).parseJson()
val data = response.getJSONArray("data").asTypedList<JSONObject>() val data = response.getJSONArray("data").asTypedList<JSONObject>()
@ -158,7 +154,7 @@ internal abstract class HeanCms(
val chapterUrl = val chapterUrl =
"/series/${it.getJSONObject("series").getString("series_slug")}/${it.getString("chapter_slug")}" "/series/${it.getJSONObject("series").getString("series_slug")}/${it.getString("chapter_slug")}"
MangaChapter( MangaChapter(
id = it.getLong("id"), id = generateUid(it.getLong("id")),
title = it.getString("chapter_name"), title = it.getString("chapter_name"),
number = i + 1f, number = i + 1f,
volume = 0, volume = 0,
@ -200,13 +196,13 @@ internal abstract class HeanCms(
?.let { "[$it]" } ?.let { "[$it]" }
?: return emptySet() ?: return emptySet()
return JSONArray(tags).mapJSON { return JSONArray(tags).mapJSONToSet {
MangaTag( MangaTag(
key = it.getInt("id").toString(), key = it.getInt("id").toString(),
title = it.getString("name").toTitleCase(sourceLocale), title = it.getString("name").toTitleCase(sourceLocale),
source = source, source = source,
) )
}.toSet() }
} }
} }

Loading…
Cancel
Save