diff --git a/common/known-removable-phrases.js b/common/known-removable-phrases.js index 0da1ed7..05ba038 100644 --- a/common/known-removable-phrases.js +++ b/common/known-removable-phrases.js @@ -368,6 +368,7 @@ const knownRemovablePhrases = [ "A FESTIVE FEAST", "a film by Akinola Davies Jr.", "a film by David Kew", + "A Focus on Gabriel Abrantes:", "a Screening and Talk of", "Academy Awards Best Picture 2025:", "Academy Awards Best Picture 2026:", diff --git a/common/normalize-title.js b/common/normalize-title.js index d5d4f81..f0ea8a5 100644 --- a/common/normalize-title.js +++ b/common/normalize-title.js @@ -628,6 +628,7 @@ function normalizeTitle(title, options) { [/^Charak \(Hindi\)$/i, "Charak: Fair of Faith"], ["CLOSING Nuit de Chien", "Nuit de Chien"], [/ search 4 square$/i, "search for squarepants"], + ["John & Yoko in NYC", "John & Yoko Live in NYC"], // Variant families collapsed from known-removable-phrases.js // Each pattern covers multiple near-identical string entries that shared a common structure [/dog[- ]?friendly(?:\s+screening)?[:\s]*/i, ""], diff --git a/common/tests/test-titles.json b/common/tests/test-titles.json index 9b8d27d..f346ab5 100644 --- a/common/tests/test-titles.json +++ b/common/tests/test-titles.json @@ -60898,5 +60898,109 @@ { "input": "Movie screening of PHIR SE TANHA", "output": "phir se tanha" + }, + { + "input": "A Focus on Gabriel Abrantes: Ratzo Presents...", + "output": "ratzo presents" + }, + { + "input": "Experiments in Film: A Focus on Gabriel Abrantes: Diamantino", + "output": "diamantino" + }, + { + "input": "OCDF: Star Spangled to Death", + "output": "star spangled to death" + }, + { + "input": "Queer East Festival: 3670", + "output": "3670" + }, + { + "input": "Queer East Festival: A Useful Ghost", + "output": "a useful ghost" + }, + { + "input": "Queer East Festival: Girlfriends + ScreenTalk", + "output": "girlfriends" + }, + { + "input": "Queer East Festival: Mari Terashima: Exquisite Tastes", + "output": "mari terashima exquisite tastes" + }, + { + "input": "Queer East Festival: Queer as Punk", + "output": "queer as punk" + }, + { + "input": "Queer East Festival: The Outsiders", + "output": "the outsiders" + }, + { + "input": "Relaxed Screening: The Last Blossom", + "output": "last blossom" + }, + { + "input": "Power to the People: John & Yoko in NYC", + "output": "power to the people john yoko live in nyc" + }, + { + "input": "The Good Boy (2026)", + "output": "good boy (2026)" + }, + { + "input": "Networking Event: Entertainment Professionals in London", + "output": "networking event entertainment professionals in london" + }, + { + "input": "Speed Networking for Film, TV, Music, and Media at The Refinery CityPoint", + "output": "speed networking for film tv music media at the refinery citypoint" + }, + { + "input": "Parent & Baby: Project Hail Mary", + "output": "project hail mary" + }, + { + "input": "JME Presents: Comment Hater", + "output": "comment hater" + }, + { + "input": "Everyone to Kenmure Street", + "output": "everyone to kenmure street" + }, + { + "input": "hololive English 3rd Concert -All for One- Screening", + "output": "hololive english 3rd concert" + }, + { + "input": "Kinaesthesia + Q&A", + "output": "kinaesthesia" + }, + { + "input": "The Drama Cinema Hangout", + "output": "drama cinema hangout" + }, + { + "input": "BAR TRASH: Closing Night: THE DAY OF THE BEAST", + "output": "day of the beast" + }, + { + "input": "Branded To Kill", + "output": "branded to kill" + }, + { + "input": "Jo Jo Dancer, Your Life Is Calling", + "output": "jo jo dancer your life is calling" + }, + { + "input": "Sullivan's Travels", + "output": "sullivans travels" + }, + { + "input": "The Last Detail", + "output": "last detail" + }, + { + "input": "1000 Londoners", + "output": "1000 londoners" } ]