Skip to content

Commit

Permalink
Various improvements to Bangumi search
Browse files Browse the repository at this point in the history
In short:
- fetch & show actual summary
- fallback to "name" if "name_cn" is empty
- request larger responseGroup to get & display the summary & rating
- add type filter query param to make Bangumi filter, not us

Previously, we only displayed the "name" in the summary area and used
"name_cn" as the entry name. However, "name_cn" (Chinese name) can be
an empty string at times, resulting in an awkward looking search
result list where some, many, or even all the results have no title
displayed and only show the "name" (Japanese name) in the summary
area. This has been solved by using "name" as a fallback value should
"name_cn" be empty.

By using the "responseGroup=large" query parameter, we can request
the required data we need to display the actual summary for an entry
and the entry's average rating.
The "name" is prepended to the summary contents, if any exist, so it
is still accessible for series identification if a "name_cn" exists
too and was used for the result title.

Adding the "type=1" filter query parameter means Bangumi will only
return entries of type 1 ("book") instead of all types and Mihon
needing to filter, resulting in potentially missed entry matches.
  • Loading branch information
MajorTanya committed Oct 28, 2024
1 parent 38d5fc9 commit b4f51d8
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ class BangumiApi(
val url = "$API_URL/search/subject/${URLEncoder.encode(search, StandardCharsets.UTF_8.name())}"
.toUri()
.buildUpon()
.appendQueryParameter("type", "1")
.appendQueryParameter("responseGroup", "large")
.appendQueryParameter("max_results", "20")
.build()
with(json) {
Expand All @@ -81,7 +83,6 @@ class BangumiApi(
if (result.code == 404) emptyList<TrackSearch>()

result.list
?.filter { it.type == 1 }
?.map { it.toTrackSearch(trackId) }
.orEmpty()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ data class BGMSearchItem(
val nameCn: String,
val name: String,
val type: Int,
val summary: String?,
val images: BGMSearchItemCovers?,
@SerialName("eps_count")
val epsCount: Long?,
Expand All @@ -25,9 +26,9 @@ data class BGMSearchItem(
) {
fun toTrackSearch(trackId: Long): TrackSearch = TrackSearch.create(trackId).apply {
remote_id = this@BGMSearchItem.id
title = nameCn
title = nameCn.ifEmpty { name }
cover_url = images?.common ?: ""
summary = this@BGMSearchItem.name
summary = name + this@BGMSearchItem.summary?.let { "\n$it" }.orEmpty()
score = rating?.score ?: -1.0
tracking_url = url
total_chapters = epsCount ?: 0
Expand Down

0 comments on commit b4f51d8

Please sign in to comment.