Commit Graph

42 Commits

Author SHA1 Message Date
Georges-Antoine Assi
7a5185fe22 complete rest of handler 2025-09-20 19:38:26 -04:00
Georges-Antoine Assi
8c33a95637 remove hartbeat from bh endpoint 2025-09-20 17:57:38 -04:00
Georges-Antoine Assi
3c4113f8a8 Merge branch 'master' into flashpoint-metadata-handler 2025-09-11 21:27:48 -04:00
Georges-Antoine Assi
d7e85ba633 [ROMM-1333] Use metadata tag in filename to match game 2025-09-07 14:12:30 -04:00
Michael Manganiello
d216bad78b misc: Add MetadataHandler's is_enabled method
Convert `MetadataHandler` to an abstract base class and add an
`is_enabled` class method that allows every metadata handler to
independently report whether it is enabled based on its configuration.

This avoids the need for global variables in the config module, allowing
us to change the enabled state of a metadata handler at runtime if
needed.
2025-09-03 22:13:28 -03:00
Georges-Antoine Assi
ef2546ec08 fix base handler filename 2025-08-27 12:40:16 -04:00
Georges-Antoine Assi
d41a920c37 normalize split tiles for ssfr 2025-08-17 20:29:44 -04:00
Georges-Antoine Assi
f0574577c9 Prefer lower IDs when matching games with same title 2025-08-17 19:53:29 -04:00
Georges-Antoine Assi
d005dba90b fix a bunch of shit 2025-08-09 11:16:12 -04:00
Georges-Antoine Assi
659a3eb104 use jaro-winkler algo 2025-08-08 16:54:26 -04:00
Georges-Antoine Assi
1a2944806b Use best-match algo for more providers 2025-08-07 16:57:29 -04:00
Georges-Antoine Assi
f3a74bc892 changes from review 2025-08-07 11:33:02 -04:00
Georges-Antoine Assi
53cf1bdc72 implement real lev distnce 2025-08-06 11:04:24 -04:00
Georges-Antoine Assi
eb6498da61 custom similarity implementation 2025-08-06 10:27:04 -04:00
Georges-Antoine Assi
1d797e286b custom implement mix 2025-08-06 10:21:54 -04:00
Zurdi
5dc82ab7da Merge pull request #2087 from rommapp/fix/fallback-cover-to-provider
fix: SGDB cover fallback
2025-07-16 16:33:50 +02:00
Georges-Antoine Assi
d65463860b skip sgdb if no api key set 2025-07-16 10:14:22 -04:00
zurdi
90c247959e refactor: simplify game cover retrieval logic in SGDBBaseHandler 2025-07-16 13:48:16 +00:00
zurdi
1e3977e80f feat: enhance fuzzy matching in SGDBBaseHandler by implementing Levenshtein distance sorting 2025-07-15 15:10:05 +00:00
zurdi
dbe2566fe8 feat: integrate Levenshtein distance for improved fuzzy matching in SGDBBaseHandler 2025-07-15 09:31:04 +00:00
zurdi
ff3643060c refactor: improve fuzzy matching in SGDBBaseHandler for game search 2025-07-15 09:18:53 +00:00
Georges-Antoine Assi
3781cbdb6b catch json errors on all ends 2025-07-12 19:16:50 -04:00
Georges-Antoine Assi
bdef16e8a7 remove print lines 2025-07-12 16:16:10 -04:00
Georges-Antoine Assi
44caccc0dc search sgdb after getting all game titles 2025-07-12 15:55:20 -04:00
Georges-Antoine Assi
b5a2dc8d37 exclude nsfw and epileptic covers 2025-07-12 12:26:08 -04:00
Georges-Antoine Assi
d349eef42a add options to normalization 2025-07-12 10:48:04 -04:00
Georges-Antoine Assi
c76caed145 normalized search results 2025-07-12 09:56:18 -04:00
Georges-Antoine Assi
862779803a use normalized exact matching 2025-07-11 21:22:05 -04:00
Georges-Antoine Assi
2bd5ff0cac add sgdb to scan page 2025-07-11 18:55:56 -04:00
Georges-Antoine Assi
837d36375d Fix metadata issues in heasheous handler 2025-07-09 09:14:41 -04:00
Michael Manganiello
bf9fb12f91 misc: Create SteamGridDB service adapter
Add a new service adapter for the SteamGridDB API, to separate
concerns with RomM's handler for metadata.

This adapter is agnostic to the handler and only provides methods to
interact with the API, and correctly return typed responses.
2025-06-25 09:42:32 -03:00
zurdi
2a5bf1ab5b Add SGDBInvalidAPIKeyException for handling invalid API key errors 2025-04-01 09:52:33 +00:00
Georges-Antoine Assi
7fafd452ed update sgdb handler 2025-02-24 21:57:14 -05:00
zurdi
a51dd03e1a Added full offline support and configurable logging level and API requests debug logs 2024-11-27 17:12:13 +00:00
Michael Manganiello
7c6dfa8e50 feat: Use ContextVar to share httpx AsyncClient instance between requests 2024-07-23 01:29:32 -03:00
Michael Manganiello
b61bb11bce feat: Use async requests to retrieve SteamGridDB covers
This change avoids blocking requests when retrieving covers from
SteamGridDB, which is the main bottleneck as the current implementation
iterates over paginated results for multiple games.

Using an asynchronous client like `httpx` provides a good performance
improvement, and reduces the latency when calling this endpoint.
Also, the inclusion of FastAPI `lifespan` allows instantiating a single
client on startup.

When testing with "Final Fantasy V Advance", the endpoint goes from ~9s
to ~1.5s to retrieve all covers.
2024-07-09 22:37:14 -03:00
zurdi
f7b14b43d6 fixed everything from trunk 2024-07-09 13:43:14 +02:00
Michael Manganiello
23ef1fb419 fix: Correctly traverse SteamGridDB API pages
The SteamGridDB API has a bug, where the `total` field for the paginated
endpoint `/v2/grids/game/:gameId` sometimes double/triple counts results
(e.g. returning `total=172` when there are actually 86 results).

To avoid this issue, this change relies on each page's number of
results. If the received page has less than the requested amount of
grids, we know that is the last page.
2024-07-07 12:16:30 -03:00
zurdi
a07133d678 added filter for static/animated cover 2024-06-27 16:45:56 +02:00
zurdi
180c373e1e steamgridDB integration added 2024-06-26 17:36:02 +02:00
Georges-Antoine Assi
b2085f87a8 bunch of fixes for trunk 2024-05-21 17:10:11 -04:00
Georges-Antoine Assi
9ad28f3294 more refactoring again 2024-05-05 16:32:40 -04:00