Files
gacha-event-tracker/fixtures/genshin/fandom-events-2026-09-12.expected.json
T
Lucas Winther 81ac9fb3dd add Genshin Impact Fandom event source
Add genshin-impact.fandom.com as a second source for Genshin Impact,
which has been fixture-backed in CI because Game8 CloudFront-blocks the
Actions runner with 202s.

- Add fifth Fandom template parser in src/ingest/parsers/fandom.ts
  extracting titles from caption display text, stripping dated subpage
  suffixes, and checking currency via latestBoundaryMs.
- Register genshin-fandom-events in src/ingest/adapters/index.ts and
  set genshin-game8-events priority: 10 so existing event IDs survive
  near-match ties, preventing localStorage completion marks from
  orphaning.
- Explicitly sort adapter groups by priority descending in
  scripts/build-feed.ts to align with parseGame.
- Pin fixtures and add test coverage in test/adapters/game8.test.ts.
- Update AGENTS.md, README.md, docs/INGESTION.md, and docs/SOURCES.md.
2026-09-12 05:20:56 +02:00

339 lines
11 KiB
JSON

[
{
"id": "genshin:uncover-lunar-realms-hone-the-eventide-radiance:2025-10-22",
"game": "genshin",
"title": "Uncover Lunar Realms, Hone the Eventide Radiance",
"type": "other",
"summary": null,
"startsAt": "2025-10-22T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-23T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://genshin-impact.fandom.com/wiki/Uncover_Lunar_Realms,_Hone_the_Eventide_Radiance/2025-10-22",
"sourceId": "genshin-fandom-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "genshin:when-we-look-up-at-the-moon:2026-07-01",
"game": "genshin",
"title": "When We Look Up at the Moon",
"type": "other",
"summary": null,
"startsAt": "2026-07-01T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-22T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://genshin-impact.fandom.com/wiki/When_We_Look_Up_at_the_Moon",
"sourceId": "genshin-fandom-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "genshin:to-temper-thyself-and-journey-far-cycle-5:2026-08-10",
"game": "genshin",
"title": "To Temper Thyself and Journey Far Cycle 5",
"type": "other",
"summary": null,
"startsAt": "2026-08-10T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-11-02T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://genshin-impact.fandom.com/wiki/To_Temper_Thyself_and_Journey_Far/2026-08-10",
"sourceId": "genshin-fandom-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "genshin:everwinter-without-mercy:2026-08-12",
"game": "genshin",
"title": "Everwinter Without Mercy",
"type": "story",
"summary": null,
"startsAt": "2026-08-12T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-22T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://genshin-impact.fandom.com/wiki/Everwinter_Without_Mercy_(Event)",
"sourceId": "genshin-fandom-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "genshin:frostfarer:2026-08-12",
"game": "genshin",
"title": "Frostfarer",
"type": "other",
"summary": null,
"startsAt": "2026-08-12T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-21T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://genshin-impact.fandom.com/wiki/Battle_Pass/Frostfarer",
"sourceId": "genshin-fandom-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "genshin:phantasmagoric-chronicle:2026-08-12",
"game": "genshin",
"title": "Phantasmagoric Chronicle",
"type": "other",
"summary": null,
"startsAt": "2026-08-12T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-21T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://genshin-impact.fandom.com/wiki/Miliastra_Pass/2026-08-12",
"sourceId": "genshin-fandom-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "genshin:raiment-collection-gentle-warmth:2026-08-12",
"game": "genshin",
"title": "Raiment Collection: Gentle Warmth",
"type": "other",
"summary": null,
"startsAt": "2026-08-12T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-23T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://genshin-impact.fandom.com/wiki/Raiment_Collection/2026-08-12",
"sourceId": "genshin-fandom-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "genshin:the-forge-realms-temper-game-of-wits:2026-08-12",
"game": "genshin",
"title": "The Forge Realm's Temper: Game of Wits",
"type": "other",
"summary": null,
"startsAt": "2026-08-12T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-23T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://genshin-impact.fandom.com/wiki/The_Forge_Realm%27s_Temper/2026-08-12",
"sourceId": "genshin-fandom-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "genshin:the-godforsaken-frostlands:2026-08-12",
"game": "genshin",
"title": "The Godforsaken Frostlands",
"type": "other",
"summary": null,
"startsAt": "2026-08-12T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-11-03T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://genshin-impact.fandom.com/wiki/The_Godforsaken_Frostlands",
"sourceId": "genshin-fandom-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "genshin:stygian-onslaught-battle-of-the-starburst:2026-08-19",
"game": "genshin",
"title": "Stygian Onslaught: Battle of the Starburst",
"type": "challenge",
"summary": null,
"startsAt": "2026-08-19T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-22T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://genshin-impact.fandom.com/wiki/Stygian_Onslaught/2026-08-19",
"sourceId": "genshin-fandom-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "genshin:great-expeditionist-challenge:2026-08-28",
"game": "genshin",
"title": "Great Expeditionist Challenge",
"type": "challenge",
"summary": null,
"startsAt": "2026-08-28T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-14T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://genshin-impact.fandom.com/wiki/Great_Expeditionist_Challenge",
"sourceId": "genshin-fandom-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "genshin:heated-battle-mode-tactical-formation:2026-08-29",
"game": "genshin",
"title": "Heated Battle Mode: Tactical Formation",
"type": "other",
"summary": null,
"startsAt": "2026-08-29T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-14T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://genshin-impact.fandom.com/wiki/Heated_Battle_Mode/2026-08-29",
"sourceId": "genshin-fandom-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "genshin:test-run-flins-ineffa-aino-iansan-lan-yan:2026-09-01",
"game": "genshin",
"title": "Test Run - Flins, Ineffa, Aino, Iansan, Lan Yan",
"type": "challenge",
"summary": null,
"startsAt": "2026-09-01T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-22T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://genshin-impact.fandom.com/wiki/Test_Run_-_Character_Trial_Event/2026-09-01",
"sourceId": "genshin-fandom-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "genshin:starlight-voyage-joyous-moment:2026-09-07",
"game": "genshin",
"title": "Starlight Voyage: Joyous Moment",
"type": "other",
"summary": null,
"startsAt": "2026-09-07T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-21T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://genshin-impact.fandom.com/wiki/Starlight_Voyage/2026-09-07",
"sourceId": "genshin-fandom-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "genshin:trial-of-the-bastion:2026-09-07",
"game": "genshin",
"title": "Trial of the Bastion",
"type": "challenge",
"summary": null,
"startsAt": "2026-09-07T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-17T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://genshin-impact.fandom.com/wiki/Trial_of_the_Bastion",
"sourceId": "genshin-fandom-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
},
{
"id": "genshin:overflowing-abundance:2026-09-14",
"game": "genshin",
"title": "Overflowing Abundance",
"type": "other",
"summary": null,
"startsAt": "2026-09-14T00:00:00.000Z",
"startPrecision": "day",
"endsAt": "2026-09-21T00:00:00.000Z",
"endPrecision": "day",
"regionScoped": false,
"regionEnds": null,
"sourceUrl": "https://genshin-impact.fandom.com/wiki/Overflowing_Abundance/2026-09-14",
"sourceId": "genshin-fandom-events",
"status": "published",
"confidence": 0.85,
"extractionMethod": "parser",
"version": 1,
"firstSeenAt": "2026-08-14T00:00:00.000Z",
"updatedAt": "2026-08-14T00:00:00.000Z"
}
]