From aae9a989d0bb18e77acc71d961619d6d44627d6b Mon Sep 17 00:00:00 2001 From: grimsi <9295182+grimsi@users.noreply.github.com> Date: Mon, 31 Mar 2025 11:25:50 +0200 Subject: [PATCH] Minor bugfixes in IGDB plugin Minor bugfixes in Steam plugin --- .../de/grimsi/gameyfin/plugins/igdb/Mapper.kt | 3 ++- plugins/igdb/src/main/resources/MANIFEST.MF | 2 +- .../gameyfin/plugins/steam/SteamPlugin.kt | 16 +++++++------- .../gameyfin/plugins/steam/dto/Platforms.kt | 10 --------- .../plugins/steam/dto/SteamGameDetails.kt | 21 ++++++++++--------- plugins/steam/src/main/resources/MANIFEST.MF | 2 +- 6 files changed, 24 insertions(+), 30 deletions(-) delete mode 100644 plugins/steam/src/main/kotlin/de/grimsi/gameyfin/plugins/steam/dto/Platforms.kt diff --git a/plugins/igdb/src/main/kotlin/de/grimsi/gameyfin/plugins/igdb/Mapper.kt b/plugins/igdb/src/main/kotlin/de/grimsi/gameyfin/plugins/igdb/Mapper.kt index 2eda103..2338f6a 100644 --- a/plugins/igdb/src/main/kotlin/de/grimsi/gameyfin/plugins/igdb/Mapper.kt +++ b/plugins/igdb/src/main/kotlin/de/grimsi/gameyfin/plugins/igdb/Mapper.kt @@ -97,7 +97,8 @@ class Mapper { return URI(imageBuilder(screenshot.imageId, ImageSize.FHD, ImageType.PNG)) } - fun cover(cover: proto.Cover): URI { + fun cover(cover: proto.Cover): URI? { + if (cover.imageId.isEmpty()) return null return URI(imageBuilder(cover.imageId, ImageSize.COVER_BIG, ImageType.PNG)) } diff --git a/plugins/igdb/src/main/resources/MANIFEST.MF b/plugins/igdb/src/main/resources/MANIFEST.MF index 3005ba6..923e6c7 100644 --- a/plugins/igdb/src/main/resources/MANIFEST.MF +++ b/plugins/igdb/src/main/resources/MANIFEST.MF @@ -2,5 +2,5 @@ Manifest-Version: 1.0 Plugin-Class: de.grimsi.gameyfin.plugins.igdb.IgdbPlugin Plugin-Id: igdb Plugin-Description: IGDB Metadata -Plugin-Version: 1.0.0-alpha3 +Plugin-Version: 1.0.0-alpha4 Plugin-Provider: grimsi diff --git a/plugins/steam/src/main/kotlin/de/grimsi/gameyfin/plugins/steam/SteamPlugin.kt b/plugins/steam/src/main/kotlin/de/grimsi/gameyfin/plugins/steam/SteamPlugin.kt index 1671c07..8d209f1 100644 --- a/plugins/steam/src/main/kotlin/de/grimsi/gameyfin/plugins/steam/SteamPlugin.kt +++ b/plugins/steam/src/main/kotlin/de/grimsi/gameyfin/plugins/steam/SteamPlugin.kt @@ -100,19 +100,21 @@ class SteamPlugin(wrapper: PluginWrapper) : GameyfinPlugin(wrapper) { val game = steamDetailsResultWrapper[id]?.data ?: return null + if (game.type != "game") return null + // This is as much as I can get from the Steam Store API val metadata = GameMetadata( originalId = id.toString(), title = game.name, description = game.detailedDescription, - coverUrl = URI(game.headerImage), + coverUrl = game.headerImage?.let { URI(it) }, release = game.releaseDate?.date, - developedBy = game.developers.toSet(), - publishedBy = game.publishers.toSet(), - genres = game.genres.map { Mapper.genre(it) }.toSet(), - keywords = game.categories.mapNotNull { it.description }.toSet(), - screenshotUrls = game.screenshots.map { URI(it.pathFull!!) }.toSet(), - videoUrls = game.movies.map { URI(it.webm?.max!!) }.toSet() + developedBy = game.developers?.toSet(), + publishedBy = game.publishers?.toSet(), + genres = game.genres?.let { it.map { Mapper.genre(it) }.toSet() }, + keywords = game.categories?.let { it.mapNotNull { it.description }.toSet() }, + screenshotUrls = game.screenshots?.let { it.map { URI(it.pathFull) }.toSet() }, + videoUrls = game.movies?.let { it.mapNotNull { it.webm?.let { URI(it.max) } }.toSet() } ) return metadata diff --git a/plugins/steam/src/main/kotlin/de/grimsi/gameyfin/plugins/steam/dto/Platforms.kt b/plugins/steam/src/main/kotlin/de/grimsi/gameyfin/plugins/steam/dto/Platforms.kt deleted file mode 100644 index 952c6a8..0000000 --- a/plugins/steam/src/main/kotlin/de/grimsi/gameyfin/plugins/steam/dto/Platforms.kt +++ /dev/null @@ -1,10 +0,0 @@ -package de.grimsi.gameyfin.plugins.steam.dto - -import kotlinx.serialization.Serializable - -@Serializable -data class Platforms( - val windows: Boolean, - val mac: Boolean, - val linux: Boolean -) \ No newline at end of file diff --git a/plugins/steam/src/main/kotlin/de/grimsi/gameyfin/plugins/steam/dto/SteamGameDetails.kt b/plugins/steam/src/main/kotlin/de/grimsi/gameyfin/plugins/steam/dto/SteamGameDetails.kt index 75f85e3..ff4dcd3 100644 --- a/plugins/steam/src/main/kotlin/de/grimsi/gameyfin/plugins/steam/dto/SteamGameDetails.kt +++ b/plugins/steam/src/main/kotlin/de/grimsi/gameyfin/plugins/steam/dto/SteamGameDetails.kt @@ -13,15 +13,16 @@ data class SteamDetailsResultWrapper( @Serializable data class SteamGameDetails( + val type: String, val name: String, - @SerialName("detailed_description") val detailedDescription: String, - @SerialName("header_image") val headerImage: String, - val developers: List, - val publishers: List, - val categories: List, - val genres: List, - val screenshots: List, - val movies: List, + @SerialName("detailed_description") val detailedDescription: String? = null, + @SerialName("header_image") val headerImage: String? = null, + val developers: List? = null, + val publishers: List? = null, + val categories: List? = null, + val genres: List? = null, + val screenshots: List? = null, + val movies: List? = null, @SerialName("release_date") val releaseDate: ReleaseDate? = null ) @@ -41,7 +42,7 @@ data class SteamGenre( data class Screenshot( val id: Int, @SerialName("path_thumbnail") val pathThumbnail: String? = null, - @SerialName("path_full") val pathFull: String? = null + @SerialName("path_full") val pathFull: String ) @Serializable @@ -57,7 +58,7 @@ data class Movie( @Serializable data class Webm( val `480`: String? = null, - val max: String? = null + val max: String ) @Serializable diff --git a/plugins/steam/src/main/resources/MANIFEST.MF b/plugins/steam/src/main/resources/MANIFEST.MF index 5e6aa4a..995d587 100644 --- a/plugins/steam/src/main/resources/MANIFEST.MF +++ b/plugins/steam/src/main/resources/MANIFEST.MF @@ -2,5 +2,5 @@ Manifest-Version: 1.0 Plugin-Class: de.grimsi.gameyfin.plugins.steam.SteamPlugin Plugin-Id: steam Plugin-Description: Steam Metadata -Plugin-Version: 1.0.0-alpha4 +Plugin-Version: 1.0.0-alpha5 Plugin-Provider: grimsi