diff --git a/common/known-removable-phrases.js b/common/known-removable-phrases.js index 6fcaf9b..f9884e3 100644 --- a/common/known-removable-phrases.js +++ b/common/known-removable-phrases.js @@ -107,6 +107,7 @@ const knownRemovablePhrases = [ " with score by Pet Shop Boys", " with live score by Maxim Melton", " with live score lead by ignacio salvadores", + " with Live Score", " w/ Live Score", " with live music from millie turner", " with live original score", @@ -298,6 +299,7 @@ const knownRemovablePhrases = [ "Spicy cocktail hour &", "A Nuclear Nightmare", "Test Screening", + "starring RMD", // Prefixes "(4DX) ", @@ -388,6 +390,7 @@ const knownRemovablePhrases = [ "by Fassbinder", "by Joe Harvey-Whyte", "COLD ISLANDERS:", + "Cold War Visions:", "Mondays for Members:", "Members' Exclusive:", "Members':", @@ -714,6 +717,7 @@ const knownRemovablePhrases = [ "Romford Horror 2026:", "Romford Horror Festival:", "Sapphic Cinema:", + "Sapphic Cinema Valentine's Afternoon Screening", "Sake, onigiri +", "Sanrizuka 5:", "SAFAR:", @@ -772,6 +776,7 @@ const knownRemovablePhrases = [ "RELAXED screen", "RELAXED: ", "RFF 2025:", + "Team Picks:", "Tate Collective Moments", "Tibet Film Festival London:", "Tim Burton’s ", @@ -818,6 +823,7 @@ const knownRemovablePhrases = [ "Windrush Caribbean Film Festival 2025:", "Women of Almodóvar:", "International Women's Day:", + "International Women’s Day:", "International Dog Day:", "Scared To Dance -", "UCL East Community Cinema:", @@ -925,6 +931,7 @@ const knownRemovablePhrases = [ "Film Premiere", "premiere", "IMAX Preview", + "IMAX exclusive preview week", "IMAX exclusive preview:", "IMAX exclusive preview", "Launch Screening", diff --git a/common/normalize-title.js b/common/normalize-title.js index 97b5f18..6b829ca 100644 --- a/common/normalize-title.js +++ b/common/normalize-title.js @@ -289,6 +289,7 @@ function normalizeTitle(title, options) { ], ["Silents Synced - ", "Silents Synced: "], ["Gama Bomb - ", "Gama Bomb: "], + ["STRANGE JOURNEY - ", "STRANGE JOURNEY: "], [/\s+extended$/i, ""], [/ – A Special.*$/i, ""], [/(?:\s|^)LOTR(?:\s|:)(?:\s*the\s+)?/i, "The Lord of the Rings: The "], @@ -483,6 +484,11 @@ function normalizeTitle(title, options) { "Tarot readings, Demi Moore-tinis & ", ], ["The Scarecrows' Wedding+ ", "The Scarecrows' Wedding & "], + ["First Case, Second Case + ", "First Case, Second Case & "], + [ + "100 Nights of Hero + A Friend of Dorothy", + "100 Nights of Hero & A Friend of Dorothy", + ], ["Homage |", "Homage: "], [/^\s*Twin Cheeks\s*$/i, "Twin Cheeks: Who Killed The Homecoming King?"], ["FRANCESCA WOODMAN", "The Woodmans"], @@ -554,6 +560,7 @@ function normalizeTitle(title, options) { ["THE PRESENT HELP", "PRESENT HELP"], ["Dress-up karaoke party + ", "Dress-up karaoke party & "], ["Spicy cocktail hour + ", "Spicy cocktail hour & "], + ["Playdates with Friends Collection", "Playdates with Friends"], ]; corrections.forEach(([phrase, replacement]) => { diff --git a/common/tests/test-titles.json b/common/tests/test-titles.json index 118782b..966d8c7 100644 --- a/common/tests/test-titles.json +++ b/common/tests/test-titles.json @@ -32041,7 +32041,7 @@ }, { "input": "Team Picks: Wayne's World", - "output": "team picks waynes world" + "output": "waynes world" }, { "input": "Billy Elliot 25th Anniversary", @@ -54090,5 +54090,317 @@ { "input": "Beyond the Silk Road + Q&A", "output": "beyond the silk road" + }, + { + "input": "\"WUTHERING HEIGHTS\"", + "output": "wuthering heights" + }, + { + "input": "CARERS & BABIES: \"WUTHERING HEIGHTS\"", + "output": "wuthering heights" + }, + { + "input": "\"Wuthering Heights\" + ScreenTalk with director Emerald Fenne", + "output": "wuthering heights" + }, + { + "input": "Animation in Love: Flee (presented by Refugee Week)", + "output": "flee" + }, + { + "input": "Cold War Visions: Atomic War Bride (Rat)", + "output": "atomic war bride" + }, + { + "input": "Cold War Visions: Ikarie XB-1", + "output": "ikarie xb-1" + }, + { + "input": "Cold War Visions: Nuclear Realities", + "output": "nuclear realities" + }, + { + "input": "Cold War Visions: Stalker (Сталкер)", + "output": "stalker" + }, + { + "input": "Cold War Visions: The Sacrifice (Offret)", + "output": "sacrifice" + }, + { + "input": "Cold War Visions: The Sun and the Shadow", + "output": "sun the shadow" + }, + { + "input": "Family Film Club: Space Cadet", + "output": "space cadet" + }, + { + "input": "FFC x London Soundtrack Festival: Wallace & Gromit", + "output": "wallace gromit" + }, + { + "input": "London Soundtrack Festival: Emma + Intro by Rachel Portman", + "output": "emma" + }, + { + "input": "London Soundtrack Festival: Obsession + Introduction", + "output": "obsession" + }, + { + "input": "Relaxed Screening: Being Ola", + "output": "being ola" + }, + { + "input": "Relaxed Screening: Hamnet", + "output": "hamnet" + }, + { + "input": "IMAX exclusive preview week – EPiC: Elvis Presley in Concert", + "output": "epic elvis presley" + }, + { + "input": "Bring Me the Horizon L.I.V.E. in São Paulo", + "output": "bring me the horizon l i v e in sao paulo" + }, + { + "input": "Gridlock’d (1997)", + "output": "gridlockd (1997)" + }, + { + "input": "Sir Henry at Rawlinson End (1980)", + "output": "sir henry at rawlinson end (1980)" + }, + { + "input": "The Strange Case of Captain Ramper (1927)", + "output": "strange case of captain ramper (1927)" + }, + { + "input": "We Are Fugazi from Washington, D.C. (2023)", + "output": "we are fugazi from washington (2023)" + }, + { + "input": "Bluey At The Cinema: Playdates With Friends", + "output": "bluey at the cinema playdates with friends" + }, + { + "input": "Hoppers", + "output": "hoppers" + }, + { + "input": "Damnation", + "output": "damnation" + }, + { + "input": "Death by Hanging", + "output": "death by hanging" + }, + { + "input": "Fellow Citizen + Solution No. 1", + "output": "fellow citizen" + }, + { + "input": "First Case, Second Case + Toothache", + "output": "first case second case toothache" + }, + { + "input": "First Graders + Tribute to Teachers", + "output": "first graders" + }, + { + "input": "Taking Off", + "output": "taking off" + }, + { + "input": "The Man from London", + "output": "man from london" + }, + { + "input": "The Report + So Can I", + "output": "report" + }, + { + "input": "Film Club: One Battle After Another", + "output": "one battle after another" + }, + { + "input": "Film Club: D is for Distance", + "output": "d is for distance" + }, + { + "input": "TRANSMISSIONS PRESENTS Nirvana: Live! Tonight! Sold Out!! ***FROM VHS***", + "output": "nirvana live tonight sold out" + }, + { + "input": "Screening + Q&A: The Zero Line", + "output": "zero line" + }, + { + "input": "FRIDAY THE 13TH PART VI: JASON LIVES PRESENTED BY THE EVOLUTION OF HORROR", + "output": "friday the 13th part vi jason lives" + }, + { + "input": "Palestine Comedy Club + Q&A", + "output": "palestine comedy club" + }, + { + "input": "Sharing Lands screening of 'Sinners'", + "output": "sinners" + }, + { + "input": "Lost Reels Mi Vida Loca on 35mm + Q&A", + "output": "mi vida loca" + }, + { + "input": "The Love That Remains", + "output": "love that remains" + }, + { + "input": "WORSHIP", + "output": "worship" + }, + { + "input": "Miroirs No. 3", + "output": "miroirs no 3" + }, + { + "input": "The Blue Trail", + "output": "blue trail" + }, + { + "input": "I KNOW CATHERINE, THE LOG LADY ", + "output": "i know catherine the log lady" + }, + { + "input": "Dalej jazda 2 - in association with HoPEC", + "output": "dalej jazda 2" + }, + { + "input": "O’Romeo", + "output": "oromeo" + }, + { + "input": "Bluey at the Cinema: Playdates with Friends Collection", + "output": "bluey at the cinema playdates with friends" + }, + { + "input": "International Women’s Day: Made in Dagenham (Charity Screening)", + "output": "made in dagenham" + }, + { + "input": "Bluey at the Cinema: Playdates with Friends", + "output": "bluey at the cinema playdates with friends" + }, + { + "input": "THE PRESENT HELP London Premiere starring RMD", + "output": "present help" + }, + { + "input": "Resurrection + live broadcast Q&A with Bi Fan", + "output": "resurrection" + }, + { + "input": "Bring Me The Horizon: L.I.V.E. in São Paulo (Live Immersive Virtual  Experiment)", + "output": "bring me the horizon l i v e in sao paulo" + }, + { + "input": "CLUB ROOM: The Lodger (1927) with Live Score", + "output": "lodger (1927)" + }, + { + "input": "DRINK & DINE: Bring Me The Horizon: L.I.V.E. in São Paulo (Live Immersive Virtual  Experiment) Mosh-Along", + "output": "bring me the horizon l i v e in sao paulo" + }, + { + "input": "Drink & Dine: Cool Runnings + Winter Olympics", + "output": "cool runnings" + }, + { + "input": "Drink & Dine: Do the Right Thing + Soundtrack", + "output": "do the right thing" + }, + { + "input": "Lunch Screening: EPiC: Elvis Presley in Concert +", + "output": "epic elvis presley" + }, + { + "input": "Team Picks: Everything Everywhere All at Once", + "output": "everything everywhere all at once" + }, + { + "input": "La Scala Milan: Cosi Fan Tutte", + "output": "la scala milan cosi fan tutte" + }, + { + "input": "Teatro dell’Opera di Roma: Lohengrin", + "output": "teatro dellopera di roma lohengrin" + }, + { + "input": "Wasteman + Live Intro with David Jonsson and Tom Blyth", + "output": "wasteman" + }, + { + "input": "Team Picks: Speed Racer", + "output": "speed racer" + }, + { + "input": "Frontline Folklore + Director Q&A", + "output": "frontline folklore" + }, + { + "input": "Above the Rim", + "output": "above the rim" + }, + { + "input": "Juice", + "output": "juice" + }, + { + "input": "Love & Basketball", + "output": "love basketball" + }, + { + "input": "CABARET", + "output": "cabaret" + }, + { + "input": "Lord of the Rings Brewery Quiz", + "output": "lord of the rings brewery quiz" + }, + { + "input": "STRANGE JOURNEY - The Story Of Rocky Horror", + "output": "strange journey the story of rocky horror" + }, + { + "input": "100 Nights of Hero + A Friend of Dorothy", + "output": "100 nights of hero a friend of dorothy" + }, + { + "input": "Awards Season: Black Swan", + "output": "black swan" + }, + { + "input": "Sapphic Cinema Valentine's Afternoon Screening Stud Life + Bailee Poetry", + "output": "stud life" + }, + { + "input": "kinomad presents CASA ROSHELL", + "output": "casa roshell" + }, + { + "input": "Skills for success in the creative and cultural industries (Panel)", + "output": "skills for success in the creative cultural industries" + }, + { + "input": "The Bench x Haft Cinema: After Imaginary Weights and Transported Presences", + "output": "bench x haft cinema after imaginary weights transported presences" + }, + { + "input": "Words Matter Film Shorts + live performance with Lasana Shabazz", + "output": "words matter film shorts" + }, + { + "input": "OH MY GOODNESS - JUSTE CIEL!", + "output": "oh my goodness" } ]