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.
This commit is contained in:
@@ -0,0 +1,338 @@
|
||||
[
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user