Comick: fix thumbnails & mark unknown group (#15785)

* Comick: fix thumbnail url & repeating search results & mark unknown scanlator

* bump
This commit is contained in:
mobi2002 2023-03-21 18:18:05 +05:00 committed by GitHub
parent ac3296916a
commit 47007ff748
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 11 deletions

View File

@ -6,7 +6,7 @@ ext {
extName = 'Comick'
pkgNameSuffix = 'all.comickfun'
extClass = '.ComickFunFactory'
extVersionCode = 22
extVersionCode = 23
isNsfw = true
}

View File

@ -28,6 +28,8 @@ abstract class ComickFun(override val lang: String, private val comickFunLang: S
private val apiUrl = "https://api.comick.fun"
private val cdnUrl = "https://meo3.comick.pictures"
override val supportsLatest = true
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 {
val url = apiUrl.toHttpUrl().newBuilder().apply {
addPathSegment("search")
val url = "$apiUrl/v1.0/search".toHttpUrl().newBuilder().apply {
if (query.isEmpty()) {
filters.forEach { it ->
when (it) {
@ -161,12 +162,14 @@ abstract class ComickFun(override val lang: String, private val comickFunLang: S
addQueryParameter("q", query)
}
addQueryParameter("tachiyomi", "true")
addQueryParameter("limit", "50")
addQueryParameter("page", "$page")
}.build()
return GET(url, headers)
}
override fun searchMangaParse(response: Response): MangasPage {
val isQueryPresent = response.request.url.queryParameterNames.contains("q")
val result = json.decodeFromString<List<Manga>>(response.body.string())
return MangasPage(
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
url = "/comic/${data.hid}#"
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)
genre = mangaData.genres.joinToString { it.name.trim() }
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> {
val chapterListResponse = json.decodeFromString<ChapterList>(response.body.string())
val mangaUrl = "/" + response.request.url.toString()
val mangaUrl = response.request.url.toString()
.substringBefore("/chapters")
.substringAfter("$apiUrl/")
.substringAfter(apiUrl)
var resultSize = chapterListResponse.chapters.size
var page = 2
@ -265,7 +274,7 @@ abstract class ComickFun(override val lang: String, private val comickFunLang: S
0L
}
}
scanlator = chapter.group_name.joinToString().takeUnless { it.isBlank() }
scanlator = chapter.group_name.joinToString().takeUnless { it.isBlank() } ?: "Unknown"
}
}
}

View File

@ -6,7 +6,12 @@ import kotlinx.serialization.Serializable
data class Manga(
val hid: String,
val title: String,
val cover_url: String,
val md_covers: List<MDcovers>,
)
@Serializable
data class MDcovers(
val b2key: String,
)
@Serializable
@ -23,7 +28,7 @@ data class Comic(
val title: String,
val desc: String = "N/A",
val status: Int,
val cover_url: String,
val md_covers: List<MDcovers>,
)
@Serializable