Improve metadata matching algorithms

This commit is contained in:
grimsi
2025-06-14 13:00:15 +02:00
parent 436ace14a2
commit 93861310fa
6 changed files with 42 additions and 17 deletions
@@ -74,20 +74,25 @@ class SteamGridDbPlugin(wrapper: PluginWrapper) : ConfigurableGameyfinPlugin(wra
override fun fetchByTitle(gameTitle: String, maxResults: Int): List<GameMetadata> {
return runBlocking {
var searchResults = searchSteamGridDb(gameTitle)
val covers = mutableListOf<GameMetadata>()
val games = searchSteamGridDb(gameTitle)
if (searchResults.isEmpty()) return@runBlocking emptyList()
if (searchResults.size > maxResults) searchResults = searchResults.slice(0 until maxResults)
return@runBlocking searchResults
.map { game ->
GameMetadata(
originalId = game.id.toString(),
title = game.name,
coverUrl = getGridForGame(game.id)?.let { grid -> URI(grid.url) }
for (game in games) {
val gameDetails = client?.grids(game.id)
val grids = gameDetails?.data.orEmpty()
for (grid in grids) {
covers.add(
GameMetadata(
originalId = game.id.toString(),
title = game.name,
coverUrl = URI(grid.url)
)
)
if (covers.size >= maxResults) break
}
.filter { it.coverUrl != null }
if (covers.size >= maxResults) break
}
covers
}
}
@@ -1,4 +1,4 @@
Plugin-Version: 1.0.0-alpha5
Plugin-Version: 1.0.0-alpha6
Plugin-Class: de.grimsi.gameyfinplugins.steamgriddb.SteamGridDbPlugin
Plugin-Id: de.grimsi.gameyfin.steamgriddb
Plugin-Name: SteamGridDB Covers