Comick: fix thumbnails & mark unknown group (#15785)
* Comick: fix thumbnail url & repeating search results & mark unknown scanlator * bump
This commit is contained in:
parent
ac3296916a
commit
47007ff748
|
@ -6,7 +6,7 @@ ext {
|
||||||
extName = 'Comick'
|
extName = 'Comick'
|
||||||
pkgNameSuffix = 'all.comickfun'
|
pkgNameSuffix = 'all.comickfun'
|
||||||
extClass = '.ComickFunFactory'
|
extClass = '.ComickFunFactory'
|
||||||
extVersionCode = 22
|
extVersionCode = 23
|
||||||
isNsfw = true
|
isNsfw = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,8 @@ abstract class ComickFun(override val lang: String, private val comickFunLang: S
|
||||||
|
|
||||||
private val apiUrl = "https://api.comick.fun"
|
private val apiUrl = "https://api.comick.fun"
|
||||||
|
|
||||||
|
private val cdnUrl = "https://meo3.comick.pictures"
|
||||||
|
|
||||||
override val supportsLatest = true
|
override val supportsLatest = true
|
||||||
|
|
||||||
private val json = Json {
|
private val json = Json {
|
||||||
|
@ -83,8 +85,7 @@ abstract class ComickFun(override val lang: String, private val comickFunLang: S
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
|
||||||
val url = apiUrl.toHttpUrl().newBuilder().apply {
|
val url = "$apiUrl/v1.0/search".toHttpUrl().newBuilder().apply {
|
||||||
addPathSegment("search")
|
|
||||||
if (query.isEmpty()) {
|
if (query.isEmpty()) {
|
||||||
filters.forEach { it ->
|
filters.forEach { it ->
|
||||||
when (it) {
|
when (it) {
|
||||||
|
@ -161,12 +162,14 @@ abstract class ComickFun(override val lang: String, private val comickFunLang: S
|
||||||
addQueryParameter("q", query)
|
addQueryParameter("q", query)
|
||||||
}
|
}
|
||||||
addQueryParameter("tachiyomi", "true")
|
addQueryParameter("tachiyomi", "true")
|
||||||
|
addQueryParameter("limit", "50")
|
||||||
addQueryParameter("page", "$page")
|
addQueryParameter("page", "$page")
|
||||||
}.build()
|
}.build()
|
||||||
return GET(url, headers)
|
return GET(url, headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun searchMangaParse(response: Response): MangasPage {
|
override fun searchMangaParse(response: Response): MangasPage {
|
||||||
|
val isQueryPresent = response.request.url.queryParameterNames.contains("q")
|
||||||
val result = json.decodeFromString<List<Manga>>(response.body.string())
|
val result = json.decodeFromString<List<Manga>>(response.body.string())
|
||||||
return MangasPage(
|
return MangasPage(
|
||||||
result.map { data ->
|
result.map { data ->
|
||||||
|
@ -174,10 +177,16 @@ abstract class ComickFun(override val lang: String, private val comickFunLang: S
|
||||||
// appennding # at end as part of migration from slug to hid
|
// appennding # at end as part of migration from slug to hid
|
||||||
url = "/comic/${data.hid}#"
|
url = "/comic/${data.hid}#"
|
||||||
title = data.title
|
title = data.title
|
||||||
thumbnail_url = data.cover_url
|
thumbnail_url = "$cdnUrl/${data.md_covers[0].b2key}"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
hasNextPage = result.size >= 30,
|
/*
|
||||||
|
api always returns `limit` amount of results
|
||||||
|
for text search and page>=2 is always empty
|
||||||
|
so here we are checking if url has the text query parameter
|
||||||
|
to avoid false 'No result found' toasts.
|
||||||
|
*/
|
||||||
|
hasNextPage = !isQueryPresent && result.size >= 50,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,7 +212,7 @@ abstract class ComickFun(override val lang: String, private val comickFunLang: S
|
||||||
description = beautifyDescription(mangaData.comic.desc)
|
description = beautifyDescription(mangaData.comic.desc)
|
||||||
genre = mangaData.genres.joinToString { it.name.trim() }
|
genre = mangaData.genres.joinToString { it.name.trim() }
|
||||||
status = parseStatus(mangaData.comic.status)
|
status = parseStatus(mangaData.comic.status)
|
||||||
thumbnail_url = mangaData.comic.cover_url
|
thumbnail_url = "$cdnUrl/${mangaData.comic.md_covers[0].b2key}"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -236,9 +245,9 @@ abstract class ComickFun(override val lang: String, private val comickFunLang: S
|
||||||
override fun chapterListParse(response: Response): List<SChapter> {
|
override fun chapterListParse(response: Response): List<SChapter> {
|
||||||
val chapterListResponse = json.decodeFromString<ChapterList>(response.body.string())
|
val chapterListResponse = json.decodeFromString<ChapterList>(response.body.string())
|
||||||
|
|
||||||
val mangaUrl = "/" + response.request.url.toString()
|
val mangaUrl = response.request.url.toString()
|
||||||
.substringBefore("/chapters")
|
.substringBefore("/chapters")
|
||||||
.substringAfter("$apiUrl/")
|
.substringAfter(apiUrl)
|
||||||
|
|
||||||
var resultSize = chapterListResponse.chapters.size
|
var resultSize = chapterListResponse.chapters.size
|
||||||
var page = 2
|
var page = 2
|
||||||
|
@ -265,7 +274,7 @@ abstract class ComickFun(override val lang: String, private val comickFunLang: S
|
||||||
0L
|
0L
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
scanlator = chapter.group_name.joinToString().takeUnless { it.isBlank() }
|
scanlator = chapter.group_name.joinToString().takeUnless { it.isBlank() } ?: "Unknown"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,12 @@ import kotlinx.serialization.Serializable
|
||||||
data class Manga(
|
data class Manga(
|
||||||
val hid: String,
|
val hid: String,
|
||||||
val title: String,
|
val title: String,
|
||||||
val cover_url: String,
|
val md_covers: List<MDcovers>,
|
||||||
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class MDcovers(
|
||||||
|
val b2key: String,
|
||||||
)
|
)
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
|
@ -23,7 +28,7 @@ data class Comic(
|
||||||
val title: String,
|
val title: String,
|
||||||
val desc: String = "N/A",
|
val desc: String = "N/A",
|
||||||
val status: Int,
|
val status: Int,
|
||||||
val cover_url: String,
|
val md_covers: List<MDcovers>,
|
||||||
)
|
)
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
|
|
Loading…
Reference in New Issue