From 870d77ed1f3544b1859941f69fa0e81f302ae6d8 Mon Sep 17 00:00:00 2001 From: Cuong-Tran Date: Sat, 8 Mar 2025 01:14:42 +0700 Subject: [PATCH] Fix fill info from trackers only looking for specific 'Art' or 'Story' --- .../kanade/tachiyomi/data/track/anilist/AnilistApi.kt | 4 ++-- .../kanade/tachiyomi/data/track/bangumi/BangumiApi.kt | 8 ++------ .../eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt | 10 ++++------ .../tachiyomi/data/track/mangaupdates/MangaUpdates.kt | 8 +++++--- .../data/track/myanimelist/MyAnimeListApi.kt | 10 ++++------ .../tachiyomi/data/track/shikimori/ShikimoriApi.kt | 11 +++++------ 6 files changed, 22 insertions(+), 29 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt index 5309a9f35..24734983e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/anilist/AnilistApi.kt @@ -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 }, diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt index 974e28bc1..529e1ab68 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/bangumi/BangumiApi.kt @@ -153,17 +153,13 @@ class BangumiApi( thumbnailUrl = it.images?.common, description = it.summary, authors = it.infobox - .filter { it.key == "作者" } + .filter { "作者" in it.key } .filterIsInstance() - // KMK --> .joinToString(", ") { it.value }, - // KMK <-- artists = it.infobox - .filter { it.key == "插图" } + .filter { "插图" in it.key } .filterIsInstance() - // KMK --> .joinToString(", ") { it.value }, - // KMK <-- ) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt index e3d7ec76b..f8b1cce43 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/kitsu/KitsuApi.kt @@ -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 }, ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdates.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdates.kt index a7eac4701..f4e60044b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdates.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/mangaupdates/MangaUpdates.kt @@ -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 ?: "" }, ) } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListApi.kt index b55ccbac8..17ef13681 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListApi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/myanimelist/MyAnimeListApi.kt @@ -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 }, ) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt b/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt index b62113caf..ecfde7b2a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/track/shikimori/ShikimoriApi.kt @@ -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 }, ) }