2026-08-07 — marvelousdb: fuentes de imagenes (Fandom + Commons + SerpAPI)

Contexto: el usuario reporto que Green Giant (2106) “no tiene imagen” (en realidad su thumbnail de wikia funciona — su proceso estaba desactualizado; la URL responde 200 y la API la sirve). Propuso tomar imagenes de la API de Fandom; luego pego un documento con 6 APIs de imagenes PD (Gutendex, Internet Archive, Library of Congress, Wikimedia Commons, Digital Comic Museum, Replicate).

Verdad sobre el caso Green Giant

  • El personaje 2106 tiene thumbnail wikia correcto (HTTP 200, 59KB). El usuario veia el placeholder porque su proceso web/API corre el codigo viejo. La leccion: reiniciar npm start tras cada cambio.

Evaluacion de las APIs del documento

FuenteVeredicto para thumbnails de personajes
GutendexDescartada: covers de libros, sin mapeo por personaje
Internet ArchiveDescartada: portadas de comics escaneados, sin mapeo nombre→portada (se podria usar via “First Appearance” pero calidad variable)
Library of CongressDescartada: poco material, rate limit
Wikimedia CommonsIntegrada (--commons): gratis, sin auth, licencia validable (publicdomain/cc0/pdm). Rate-limited (~0.9s/personaje; Wikimedia limite ~200/min por IP)
Digital Comic MuseumDescartada: scraping, TOS restrictivo
ReplicateDescartada: generacion paga

Nota: el documento dice que Commons “no tiene rate limit” — falso, Wikimedia rate-limita por IP (lo comprobe: “You are making too many requests”).

Pipeline final de cache (cache-images.js)

  1. --fandom: API MediaWiki del wiki PDSH (gratis). pageimages primero, luego la primera imagen util del cuerpo (filtro: sin maps/logos/“No image.jpg”). Resultado: 3 personajes cacheados (Mighty Minerva, Dr. Defenso, Gentleman Archer); 11 PDSH sin imagen en el wiki.
  2. --commons: busca ” comic character” en Commons y valida licencia PD. Resultado para personajes oscuros: 0 (sin fan art PD). Hay material PD para Lovecraft (Ubbo-Sathla, Cthulhu) — el usuario puede correr la pasada completa.
  3. SerpAPI (key): fuente final; 118 ya cacheados antes + 3 fandom + 3 commons = 124 en el indice.

Estado

  • 21/21 tests. 124 imagenes en cache. Faltantes: 11 PDSH + 463 Marvel (image_not_available).

ACTUALIZACION: hotlinking de wikia bloqueado (bug del 99% vacio en PDSH)

  • CAUSA RAIZ: static.wikia.nocookie.net responde 200 sin Referer pero 404 cuando el navegador manda Referer: localhost:5050 (hotlink protection). Por eso el 99% de las imagenes PDSH (todas de wikia) se veian vacias en el sitio, mientras Marvel (i.annihil.us) funcionaba. Los curls de la API sin referrer daban 200 → diagnostico confuso hasta probar con -e localhost.
  • FIX INMEDIATO: <meta name="referrer" content="no-referrer"> en el layout → el navegador no manda Referer → wikia responde 200.
  • FIX DEFINITIVO (local-first): pasada --wikia en cache-images.js que descarga los 9,282 thumbnails de wikia a public/img/cache/ (~250ms c/u, ~40-50 min total, o tandas con —limit). charThumb() ahora da PRIORIDAD al cache local sobre la URL remota. Verificado: personaje 2046 sirve /img/cache/2046.webp.
  • 21/21 tests. El usuario debe: reiniciar npm start + correr npm run cache:images -- --wikia (por tandas).