← back to Nineoh Guide

db/patch-recaps.mjs

36 lines

// One-off: punch up the vaguest S2-S5 recaps (key-based, grounded in TVmaze facts,
// spoiler-safe). Rewrites entries in db/recaps/s{N}.json in place. Run once, then
// apply-recaps 2..5. (S1 already reviewed — do NOT re-apply S1.)
import { readFileSync, writeFileSync } from "node:fs";
import { fileURLToPath } from "node:url";
import { dirname, join } from "node:path";
const dir = join(dirname(fileURLToPath(import.meta.url)), "recaps");

const PATCH = {
  s2: {
    "7": "At the beach club's Halloween bash, Adrianna hides a fresh breakup behind a Marilyn Monroe costume as masked secrets shift more than one romance.",
    "19": "As everyone crams for the SATs, Silver and Teddy collide over his plan to skip college and chase a pro-tennis career.",
    "22": "The finale turns on confession — moved by Liam owning up to his parents, Annie finally finds the courage to come clean about her own secret.",
  },
  s3: {
    "17": "Dixon and Navid make their studio partnership official, and a chance run-in with a hip-hop legend could put Shirazi Studios on the map.",
    "20": "Annie coaxes reclusive former starlet Marla back into the spotlight for a premiere, while an unexpected visitor upends Ryan's world.",
  },
  s4: {
    "9": "The leaked-wedding-video fallout keeps widening, dragging a political campaign and Liam's new modeling career into the blast radius.",
    "11": "Dixon fights temptation on his music comeback while Annie confronts Jeremy over what he's holding against her.",
  },
  s5: {
    "13": "A charity football game rekindles old feelings for Naomi and Max, while Navid goads Liam deeper into underground fighting.",
    "20": "Jordan pulls a powerful family favor to bail out Mark — but the price is ending things with Naomi.",
  },
};

for (const [season, updates] of Object.entries(PATCH)) {
  const file = join(dir, `${season}.json`);
  const data = JSON.parse(readFileSync(file, "utf8"));
  for (const [ep, text] of Object.entries(updates)) data[ep] = text;
  writeFileSync(file, JSON.stringify(data, null, 2) + "\n");
  console.log(`${season}: patched ${Object.keys(updates).length} recaps`);
}