feat: RCDB-backed roller coaster filter with fuzzy name matching
All checks were successful
Build and Deploy / Build & Push (push) Successful in 2m54s
All checks were successful
Build and Deploy / Build & Push (push) Successful in 2m54s
- Add lib/park-meta.ts to manage data/park-meta.json (rcdb_id + coaster lists) - Add lib/scrapers/rcdb.ts to scrape operating coaster names from RCDB park pages - discover.ts now seeds park-meta.json with skeleton entries for all parks - scrape.ts now refreshes RCDB coaster lists (30-day staleness) for parks with rcdb_id set - fetchLiveRides() accepts a coasterNames Set; isCoaster uses normalize() on both sides to handle trademark symbols, 'THE ' prefixes, and punctuation differences between Queue-Times and RCDB names — applies correctly to both land rides and top-level rides - Commit park-meta.json so it ships in the Docker image (fresh volumes get it automatically) - Update .gitignore / .dockerignore to exclude only *.db files, not all of data/ - Dockerfile copies park-meta.json into image before VOLUME declaration - README: document coaster filter setup and correct staleness window (72h not 7d) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
416
data/park-meta.json
Normal file
416
data/park-meta.json
Normal file
@@ -0,0 +1,416 @@
|
||||
{
|
||||
"greatadventure": {
|
||||
"rcdb_id": 4534,
|
||||
"coasters": [
|
||||
"Superman - Ultimate Flight",
|
||||
"El Toro",
|
||||
"Dark Knight",
|
||||
"Joker",
|
||||
"Jersey Devil Coaster",
|
||||
"Lil' Devil Coaster",
|
||||
"Flash: Vertical Velocity",
|
||||
"Batman The Ride",
|
||||
"Skull Mountain",
|
||||
"Runaway Mine Train",
|
||||
"Medusa",
|
||||
"Harley Quinn Crazy Train",
|
||||
"Nitro"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:40:09.731Z"
|
||||
},
|
||||
"magicmountain": {
|
||||
"rcdb_id": 4532,
|
||||
"coasters": [
|
||||
"Ninja",
|
||||
"New Revolution",
|
||||
"Batman The Ride",
|
||||
"Viper",
|
||||
"Gold Rusher",
|
||||
"Riddler's Revenge",
|
||||
"Canyon Blaster",
|
||||
"Goliath",
|
||||
"X2",
|
||||
"Scream!",
|
||||
"Tatsu",
|
||||
"Apocalypse the Ride",
|
||||
"Road Runner Express",
|
||||
"Speedy Gonzales Hot Rod Racers",
|
||||
"Full Throttle",
|
||||
"Twisted Colossus",
|
||||
"West Coast Racers",
|
||||
"Wonder Woman Flight of Courage"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:45:43.666Z"
|
||||
},
|
||||
"greatamerica": {
|
||||
"rcdb_id": 4530,
|
||||
"coasters": [
|
||||
"Demon",
|
||||
"Batman The Ride",
|
||||
"American Eagle",
|
||||
"Viper",
|
||||
"Whizzer",
|
||||
"Sprocket Rockets",
|
||||
"Raging Bull",
|
||||
"Flash: Vertical Velocity",
|
||||
"Superman - Ultimate Flight",
|
||||
"Dark Knight",
|
||||
"Little Dipper",
|
||||
"Goliath",
|
||||
"X-Flight",
|
||||
"Joker",
|
||||
"Maxx Force",
|
||||
"Wrath of Rakshasa"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:29:24.092Z"
|
||||
},
|
||||
"overgeorgia": {
|
||||
"rcdb_id": 4535,
|
||||
"coasters": [
|
||||
"Blue Hawk",
|
||||
"Great American Scream Machine",
|
||||
"Dahlonega Mine Train",
|
||||
"Batman The Ride",
|
||||
"Georgia Scorcher",
|
||||
"Superman - Ultimate Flight",
|
||||
"Joker Funhouse Coaster",
|
||||
"Goliath",
|
||||
"Dare Devil Dive",
|
||||
"Twisted Cyclone",
|
||||
"Riddler Mindbender",
|
||||
"Georgia Gold Rusher"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:29:26.121Z"
|
||||
},
|
||||
"overtexas": {
|
||||
"rcdb_id": 4531,
|
||||
"coasters": [
|
||||
"Pandemonium",
|
||||
"New Texas Giant",
|
||||
"Joker",
|
||||
"Aquaman: Power Wave",
|
||||
"Shock Wave",
|
||||
"Judge Roy Scream",
|
||||
"Runaway Mine Train",
|
||||
"Runaway Mountain",
|
||||
"Mini Mine Train",
|
||||
"Mr. Freeze",
|
||||
"Batman The Ride",
|
||||
"Titan",
|
||||
"Wile E. Coyote's Grand Canyon Blaster"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:45:45.715Z"
|
||||
},
|
||||
"stlouis": {
|
||||
"rcdb_id": 4536,
|
||||
"coasters": [
|
||||
"Ninja",
|
||||
"River King Mine Train",
|
||||
"Mr. Freeze Reverse Blast",
|
||||
"Batman The Ride",
|
||||
"Screamin' Eagle",
|
||||
"Boss",
|
||||
"Pandemonium",
|
||||
"American Thunder",
|
||||
"Boomerang",
|
||||
"Rookie Racer"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:45:47.770Z"
|
||||
},
|
||||
"fiestatexas": {
|
||||
"rcdb_id": 4538,
|
||||
"coasters": [
|
||||
"Batgirl Coaster Chase",
|
||||
"Road Runner Express",
|
||||
"Poltergeist",
|
||||
"Boomerang Coast to Coaster",
|
||||
"Superman Krypton Coaster",
|
||||
"Pandemonium",
|
||||
"Chupacabra",
|
||||
"Iron Rattler",
|
||||
"Batman The Ride",
|
||||
"Wonder Woman Golden Lasso Coaster",
|
||||
"Dr. Diabolical's Cliffhanger"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:45:49.819Z"
|
||||
},
|
||||
"newengland": {
|
||||
"rcdb_id": 4565,
|
||||
"coasters": [
|
||||
"Joker",
|
||||
"Thunderbolt",
|
||||
"Great Chase",
|
||||
"Riddler Revenge",
|
||||
"Superman the Ride",
|
||||
"Flashback",
|
||||
"Catwoman's Whip",
|
||||
"Pandemonium",
|
||||
"Batman - The Dark Knight",
|
||||
"Wicked Cyclone",
|
||||
"Gotham City Gauntlet Escape from Arkham Asylum"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:45:51.866Z"
|
||||
},
|
||||
"discoverykingdom": {
|
||||
"rcdb_id": 4711,
|
||||
"coasters": [
|
||||
"Roadrunner Express",
|
||||
"Medusa",
|
||||
"Cobra",
|
||||
"Flash: Vertical Velocity",
|
||||
"Kong",
|
||||
"Boomerang",
|
||||
"Superman Ultimate Flight",
|
||||
"Joker",
|
||||
"Batman The Ride",
|
||||
"Sidewinder Safari"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:45:53.909Z"
|
||||
},
|
||||
"mexico": {
|
||||
"rcdb_id": 4629,
|
||||
"coasters": [
|
||||
"Tsunami",
|
||||
"Superman Krypton Coaster",
|
||||
"Batgirl Batarang",
|
||||
"Batman The Ride",
|
||||
"Superman el Último Escape",
|
||||
"Dark Knight",
|
||||
"Joker",
|
||||
"Medusa Steel Coaster",
|
||||
"Wonder Woman",
|
||||
"Speedway Stunt Coaster"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:45:55.963Z"
|
||||
},
|
||||
"greatescape": {
|
||||
"rcdb_id": 4596,
|
||||
"coasters": [
|
||||
"Comet",
|
||||
"Steamin' Demon",
|
||||
"Flashback",
|
||||
"Canyon Blaster",
|
||||
"Frankie's Mine Train",
|
||||
"Bobcat"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:45:58.013Z"
|
||||
},
|
||||
"darienlake": {
|
||||
"rcdb_id": 4581,
|
||||
"coasters": [
|
||||
"Predator",
|
||||
"Viper",
|
||||
"Mind Eraser",
|
||||
"Boomerang",
|
||||
"Ride of Steel",
|
||||
"Hoot N Holler",
|
||||
"Moto Coaster",
|
||||
"Tantrum"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:46:00.042Z"
|
||||
},
|
||||
"cedarpoint": {
|
||||
"rcdb_id": 4529,
|
||||
"coasters": [
|
||||
"Raptor",
|
||||
"Rougarou",
|
||||
"Magnum XL-200",
|
||||
"Blue Streak",
|
||||
"Corkscrew",
|
||||
"Gemini",
|
||||
"Wilderness Run",
|
||||
"Woodstock Express",
|
||||
"Millennium Force",
|
||||
"Iron Dragon",
|
||||
"Cedar Creek Mine Ride",
|
||||
"Maverick",
|
||||
"GateKeeper",
|
||||
"Valravn",
|
||||
"Steel Vengeance",
|
||||
"Top Thrill 2",
|
||||
"Wild Mouse",
|
||||
"Siren’s Curse"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:46:02.082Z"
|
||||
},
|
||||
"knotts": {
|
||||
"rcdb_id": 4546,
|
||||
"coasters": [
|
||||
"Jaguar!",
|
||||
"GhostRider",
|
||||
"Xcelerator",
|
||||
"Silver Bullet",
|
||||
"Sierra Sidewinder",
|
||||
"Pony Express",
|
||||
"Coast Rider",
|
||||
"HangTime",
|
||||
"Snoopy’s Tenderpaw Twister Coaster"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:46:04.120Z"
|
||||
},
|
||||
"canadaswonderland": {
|
||||
"rcdb_id": 4539,
|
||||
"coasters": [
|
||||
"Flight Deck",
|
||||
"Dragon Fyre",
|
||||
"Mighty Canadian Minebuster",
|
||||
"Wilde Beast",
|
||||
"Ghoster Coaster",
|
||||
"Thunder Run",
|
||||
"Bat",
|
||||
"Vortex",
|
||||
"Taxi Jam",
|
||||
"Fly",
|
||||
"Silver Streak",
|
||||
"Backlot Stunt Coaster",
|
||||
"Behemoth",
|
||||
"Leviathan",
|
||||
"Wonder Mountain's Guardian",
|
||||
"Yukon Striker",
|
||||
"Snoopy's Racing Railway",
|
||||
"AlpenFury"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:46:06.152Z"
|
||||
},
|
||||
"carowinds": {
|
||||
"rcdb_id": 4542,
|
||||
"coasters": [
|
||||
"Carolina Cyclone",
|
||||
"Woodstock Express",
|
||||
"Carolina Goldrusher",
|
||||
"Hurler",
|
||||
"Vortex",
|
||||
"Wilderness Run",
|
||||
"Afterburn",
|
||||
"Flying Cobras",
|
||||
"Thunder Striker",
|
||||
"Fury 325",
|
||||
"Copperhead Strike",
|
||||
"Snoopy’s Racing Railway",
|
||||
"Ricochet",
|
||||
"Kiddy Hawk"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:46:08.185Z"
|
||||
},
|
||||
"kingsdominion": {
|
||||
"rcdb_id": 4544,
|
||||
"coasters": [
|
||||
"Racer 75",
|
||||
"Woodstock Express",
|
||||
"Grizzly",
|
||||
"Flight of Fear",
|
||||
"Reptilian",
|
||||
"Great Pumpkin Coaster",
|
||||
"Apple Zapple",
|
||||
"Backlot Stunt Coaster",
|
||||
"Dominator",
|
||||
"Pantherian",
|
||||
"Twisted Timbers",
|
||||
"Tumbili",
|
||||
"Rapterra"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:46:10.223Z"
|
||||
},
|
||||
"kingsisland": {
|
||||
"rcdb_id": 4540,
|
||||
"coasters": [
|
||||
"Flight of Fear",
|
||||
"Beast",
|
||||
"Racer",
|
||||
"Adventure Express",
|
||||
"Woodstock Express",
|
||||
"Bat",
|
||||
"Great Pumpkin Coaster",
|
||||
"Invertigo",
|
||||
"Diamondback",
|
||||
"Banshee",
|
||||
"Orion",
|
||||
"Mystic Timbers",
|
||||
"Snoopy's Soap Box Racers",
|
||||
"Woodstock’s Air Rail",
|
||||
"Queen City Stunt Coaster"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:46:12.251Z"
|
||||
},
|
||||
"valleyfair": {
|
||||
"rcdb_id": 4552,
|
||||
"coasters": [
|
||||
"High Roller",
|
||||
"Corkscrew",
|
||||
"Excalibur",
|
||||
"Wild Thing",
|
||||
"Mad Mouse",
|
||||
"Steel Venom",
|
||||
"Renegade",
|
||||
"Cosmic Coaster"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:46:14.298Z"
|
||||
},
|
||||
"worldsoffun": {
|
||||
"rcdb_id": 4533,
|
||||
"coasters": [
|
||||
"Timber Wolf",
|
||||
"Cosmic Coaster",
|
||||
"Mamba",
|
||||
"Spinning Dragons",
|
||||
"Patriot",
|
||||
"Prowler",
|
||||
"Zambezi Zinger",
|
||||
"Boomerang"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:46:16.328Z"
|
||||
},
|
||||
"miadventure": {
|
||||
"rcdb_id": 4578,
|
||||
"coasters": [
|
||||
"Corkscrew",
|
||||
"Wolverine Wildcat",
|
||||
"Zach's Zoomer",
|
||||
"Shivering Timbers",
|
||||
"Mad Mouse",
|
||||
"Thunderhawk",
|
||||
"Woodstock Express"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:46:18.370Z"
|
||||
},
|
||||
"dorneypark": {
|
||||
"rcdb_id": 4588,
|
||||
"coasters": [
|
||||
"Thunderhawk",
|
||||
"Steel Force",
|
||||
"Wild Mouse",
|
||||
"Woodstock Express",
|
||||
"Talon",
|
||||
"Hydra the Revenge",
|
||||
"Possessed",
|
||||
"Iron Menace"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:46:20.413Z"
|
||||
},
|
||||
"cagreatamerica": {
|
||||
"rcdb_id": 4541,
|
||||
"coasters": [
|
||||
"Demon",
|
||||
"Grizzly",
|
||||
"Woodstock Express",
|
||||
"Patriot",
|
||||
"Flight Deck",
|
||||
"Lucy's Crabbie Cabbies",
|
||||
"Psycho Mouse",
|
||||
"Gold Striker",
|
||||
"RailBlazer"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:46:22.465Z"
|
||||
},
|
||||
"frontiercity": {
|
||||
"rcdb_id": 4559,
|
||||
"coasters": [
|
||||
"Silver Bullet",
|
||||
"Wildcat",
|
||||
"Diamondback",
|
||||
"Steel Lasso",
|
||||
"Frankie's Mine Train"
|
||||
],
|
||||
"coasters_scraped_at": "2026-04-04T17:46:24.519Z"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user