Files
marechai/Marechai.Igdb/appsettings.json
Natalia Portillo d76dd99090 feat: Download missing SoftwarePlatform logos from matched IGDB platforms
Adds a platform logo enrichment stage to the IGDB pipeline (Marechai.Igdb),
mirroring the existing company enrichment flow but for SoftwarePlatform's
raster logo (LogoId/LogoExtension), which previously had to be uploaded
manually.

- IgdbPlatform gains LogoImageId, EnrichmentApplied, and EnrichedOn columns
  (migration AddIgdbPlatformLogoEnrichment), mirroring IgdbCompany's
  enrichment-tracking pattern.
- PlatformMirrorService now requests platform_logo.image_id from IGDB and
  stores it on insert and on re-mirror.
- New PlatformEnricherService: for platforms matched to an IGDB platform
  with no local logo yet, downloads the best available logo image and
  reproduces the exact originals/jpeg/webp/avif + 4k/thumbs layout and
  ImageMagick conversion parameters used by the manual logo upload
  endpoint (SoftwarePlatformsController.UploadLogoAsync), so enriched and
  manually-uploaded logos are indistinguishable on disk.
- New IgdbImageDownloader helper, shared between company and platform
  enrichment: IGDB's documented image sizes top out at logo_med for
  logo-type images, with no documented "original" size, and any size
  accepts an undocumented-but-functional "_2x" retina suffix. Rather than
  trusting any single size identifier, it downloads each plausible
  candidate (logo_med_2x, logo_med, original), decodes the actual pixel
  dimensions of each with `magick identify`, and keeps whichever is truly
  largest. CompanyEnricherService.CacheLogoAsync is updated to use this
  helper too, replacing its previous unconditional reliance on the
  undocumented t_original template.
- Program.cs: new `enrich-platforms` command (wired through a new
  AssetRootPath config key, since output goes straight into the real
  asset tree rather than a review cache), usage text, and a
  `platforms-enrichment` reset case to clear EnrichmentApplied/EnrichedOn
  for re-runs.

Marechai.Igdb intentionally does not take a project reference on
Marechai.Server (which owns the Photos helper and ASP.NET Core
dependencies) to perform these image conversions; the ImageMagick
subprocess invocation is duplicated in PlatformEnricherService to keep
the console tool's dependency footprint small.
2026-06-26 11:49:16 +01:00

8 lines
130 B
JSON

{
"Import": {
"BatchSize": 500
},
"LogoCachePath": "state/igdb-logo-cache",
"AssetRootPath": "/var/marechai/assets"
}