Fix fill info from trackers only looking for specific 'Art' or 'Story'

This commit is contained in:
Cuong-Tran 2025-03-08 01:14:42 +07:00
parent 7d1ee6c587
commit 870d77ed1f
No known key found for this signature in database
GPG key ID: 733AA7624B9315C2
6 changed files with 22 additions and 29 deletions

View file

@ -373,12 +373,12 @@ class AnilistApi(val client: OkHttpClient, interceptor: AnilistInterceptor) {
thumbnailUrl = media.coverImage.large,
description = media.description?.htmlDecode()?.ifEmpty { null },
authors = media.staff.edges
.filter { it.role == "Story" || it.role == "Story & Art" }
.filter { "Story" in it.role }
.mapNotNull { it.node.name.userPreferred }
.joinToString(", ")
.ifEmpty { null },
artists = media.staff.edges
.filter { it.role == "Art" || it.role == "Story & Art" }
.filter { "Art" in it.role }
.mapNotNull { it.node.name.userPreferred }
.joinToString(", ")
.ifEmpty { null },

View file

@ -153,17 +153,13 @@ class BangumiApi(
thumbnailUrl = it.images?.common,
description = it.summary,
authors = it.infobox
.filter { it.key == "作者" }
.filter { "作者" in it.key }
.filterIsInstance<Infobox.SingleValue>()
// KMK -->
.joinToString(", ") { it.value },
// KMK <--
artists = it.infobox
.filter { it.key == "插图" }
.filter { "插图" in it.key }
.filterIsInstance<Infobox.SingleValue>()
// KMK -->
.joinToString(", ") { it.value },
// KMK <--
)
}
}

View file

@ -298,14 +298,12 @@ class KitsuApi(private val client: OkHttpClient, interceptor: KitsuInterceptor)
thumbnailUrl = manga.posterImage.original.url,
description = manga.description.en?.htmlDecode()?.ifEmpty { null },
authors = manga.staff.nodes
.filter { it.role == "Story" || it.role == "Story & Art" }
.map { it.person.name }
.joinToString(", ")
.filter { "Story" in it.role }
.joinToString(", ") { it.person.name }
.ifEmpty { null },
artists = manga.staff.nodes
.filter { it.role == "Art" || it.role == "Story & Art" }
.map { it.person.name }
.joinToString(", ")
.filter { "Art" in it.role }
.joinToString(", ") { it.person.name }
.ifEmpty { null },
)
}

View file

@ -114,7 +114,7 @@ class MangaUpdates(id: Long) : BaseTracker(id, "MangaUpdates"), DeletableTracker
}
override suspend fun login(username: String, password: String) {
val authenticated = api.authenticate(username, password) ?: throw Throwable("Unable to login")
val authenticated = api.authenticate(username, password)
saveCredentials(authenticated.uid.toString(), authenticated.sessionToken)
interceptor.newAuth(authenticated.sessionToken)
}
@ -127,8 +127,10 @@ class MangaUpdates(id: Long) : BaseTracker(id, "MangaUpdates"), DeletableTracker
it.title?.htmlDecode(),
it.image?.url?.original,
it.description?.htmlDecode(),
it.authors?.filter { it.type == "Author" }?.joinToString(separator = ", ") { it.name ?: "" },
it.authors?.filter { it.type == "Artist" }?.joinToString(separator = ", ") { it.name ?: "" },
it.authors?.filter { it.type != null && "Author" in it.type }
?.joinToString(separator = ", ") { it.name ?: "" },
it.authors?.filter { it.type != null && "Artist" in it.type }
?.joinToString(separator = ", ") { it.name ?: "" },
)
}
}

View file

@ -215,14 +215,12 @@ class MyAnimeListApi(
thumbnailUrl = it.covers.large?.ifEmpty { null } ?: it.covers.medium,
description = it.synopsis,
authors = it.authors
.filter { it.role == "Story" || it.role == "Story & Art" }
.map { "${it.node.firstName} ${it.node.lastName}".trim() }
.joinToString(separator = ", ")
.filter { "Story" in it.role }
.joinToString(separator = ", ") { "${it.node.firstName} ${it.node.lastName}".trim() }
.ifEmpty { null },
artists = it.authors
.filter { it.role == "Art" || it.role == "Story & Art" }
.map { "${it.node.firstName} ${it.node.lastName}".trim() }
.joinToString(separator = ", ")
.filter { "Art" in it.role }
.joinToString(separator = ", ") { "${it.node.firstName} ${it.node.lastName}".trim() }
.ifEmpty { null },
)
}

View file

@ -1,6 +1,7 @@
package eu.kanade.tachiyomi.data.track.shikimori
import android.net.Uri
import androidx.compose.ui.util.fastAny
import androidx.core.net.toUri
import eu.kanade.tachiyomi.data.database.models.Track
import eu.kanade.tachiyomi.data.track.model.TrackMangaMetadata
@ -178,14 +179,12 @@ class ShikimoriApi(
thumbnailUrl = manga.poster.originalUrl,
description = manga.description,
authors = manga.personRoles
.filter { it.rolesEn.contains("Story") || it.rolesEn.contains("Story & Art") }
.map { it.person.name }
.joinToString(", ")
.filter { it.rolesEn.fastAny { "Story" in it } }
.joinToString(", ") { it.person.name }
.ifEmpty { null },
artists = manga.personRoles
.filter { it.rolesEn.contains("Art") || it.rolesEn.contains("Story & Art") }
.map { it.person.name }
.joinToString(", ")
.filter { it.rolesEn.fastAny { "Art" in it } }
.joinToString(", ") { it.person.name }
.ifEmpty { null },
)
}