From f357887b980ed0fff141e37c87f28b76c5f46f75 Mon Sep 17 00:00:00 2001 From: alistairjcbrown <635903+alistairjcbrown@users.noreply.github.com> Date: Tue, 4 Aug 2026 20:41:06 +0000 Subject: [PATCH] Update title normalization test --- cinemas/fulhampier.com/transform.js | 6 +- common/known-removable-phrases.js | 4 + common/normalize-title.js | 2 + common/tests/test-titles.json | 268 ++++++++++++++++++++++++++++ 4 files changed, 279 insertions(+), 1 deletion(-) diff --git a/cinemas/fulhampier.com/transform.js b/cinemas/fulhampier.com/transform.js index d7875db6..c48fec39 100644 --- a/cinemas/fulhampier.com/transform.js +++ b/cinemas/fulhampier.com/transform.js @@ -1,3 +1,4 @@ +const { isNotNonFilmEvent } = require("../../common/is-non-film-event"); const { isNotSportShowing } = require("../../common/is-sport-showing"); const { createPerformance, @@ -82,7 +83,10 @@ async function transform({ eventsData }, sourcedEvents) { const listOfSourcedEvents = Object.values(sourcedEvents).flatMap( (events) => events, ); - return movies.filter(isNotSportShowing).concat(listOfSourcedEvents); + return movies + .filter(isNotSportShowing) + .filter(isNotNonFilmEvent) + .concat(listOfSourcedEvents); } module.exports = transform; diff --git a/common/known-removable-phrases.js b/common/known-removable-phrases.js index 144e42da..1722f3b1 100644 --- a/common/known-removable-phrases.js +++ b/common/known-removable-phrases.js @@ -176,6 +176,7 @@ const knownRemovablePhrases = [ " with Pet Shop Boys Score", " with score by Pet Shop Boys", " x PET SHOP BOYS", + " with live score by HaHa Sounds Collective", " with live score by Maxim Melton", " with live score lead by ignacio salvadores", " with Live Score by Hugo Max", @@ -498,6 +499,7 @@ const knownRemovablePhrases = [ "AL PACINO in ", "Alabaster DePlume:", "Alexander Skarsgård Double Bill:", + "Amyl and The Sniffers:", "An Afternoon Of Cinema:", "An Evening With Radio Times", "An Evening with Dan Smith & Filmmakers", @@ -814,6 +816,8 @@ const knownRemovablePhrases = [ "Little Venice Film Festival 2026:", "Little White Lies:", "Live stand-up &", + "live music & dinner", + "Live folk music, Czech drinks & ", "Liberating Cinema", "Horace Ové's", "Kinoteka:", diff --git a/common/normalize-title.js b/common/normalize-title.js index f26eb4b5..bdf2154d 100644 --- a/common/normalize-title.js +++ b/common/normalize-title.js @@ -25,6 +25,7 @@ function normalizeTitle(title, options) { // Specific corrections const corrections = [ ["&", "&"], + [/^gb\s+/i, ""], [/^Screening Documentary/i, ""], ["HANNAH MONTANA: THE MOVIE", "HANNAH MONTANA MOVIE"], [/:? The Movie$/i, ""], @@ -955,6 +956,7 @@ function normalizeTitle(title, options) { ["Madness: Take It or Leave It", "Take It or Leave It"], [/^Tonight: /i, ""], ["Freud's Afternoon Session - ", "Freud's Afternoon Session: "], + ["Live folk music, Czech drinks + ", "Live folk music, Czech drinks & "], ]; corrections.forEach(([phrase, replacement]) => { diff --git a/common/tests/test-titles.json b/common/tests/test-titles.json index 00e43a35..3979e834 100644 --- a/common/tests/test-titles.json +++ b/common/tests/test-titles.json @@ -85478,5 +85478,273 @@ { "input": "Community Cinema at UCL East - Film_k presents: Go Fish (1994)", "output": "go fish (1994)" + }, + { + "input": "LABYRINTH (40th Anniversary)", + "output": "labyrinth" + }, + { + "input": "The Dog Stars", + "output": "dog stars" + }, + { + "input": "The Dog Stars (with subtitles for the D/deaf and those experiencing hearing loss)", + "output": "dog stars" + }, + { + "input": "Song of the Sea", + "output": "song of the sea" + }, + { + "input": "Donnie Darko [25th Anniversary]", + "output": "donnie darko" + }, + { + "input": "Pan's Labyrinth [20th Anniversary]", + "output": "pans labyrinth" + }, + { + "input": "Terminator 2: Judgment Day 35th Anniversary", + "output": "terminator 2 judgment day" + }, + { + "input": "Trainspotting [30th Anniversary]", + "output": "trainspotting" + }, + { + "input": "gb Minions & Monsters", + "output": "minions monsters" + }, + { + "input": "gb Toy Story 5", + "output": "toy story 5" + }, + { + "input": "G.D.N (Tamil)", + "output": "g d n" + }, + { + "input": "gb DC (Tamil)", + "output": "dc" + }, + { + "input": "Thudakkam (Malayalam)", + "output": "thudakkam" + }, + { + "input": "Dookudu (Re-release) (Telugu)", + "output": "dookudu" + }, + { + "input": "Korean Kanakaraju (Telugu)", + "output": "korean kanakaraju" + }, + { + "input": "The Great Punjab Robbery (Punjabi)", + "output": "great punjab robbery" + }, + { + "input": "Yaar Jigree Kasooti Degree (Punjabi)", + "output": "yaar jigree kasooti degree" + }, + { + "input": "gb DC (Telugu)", + "output": "dc" + }, + { + "input": "André Rieu's 2026 Christmas Concert: Let it snow", + "output": "andre rieus 2026 christmas concert let it snow" + }, + { + "input": "The Rocky Horror Picture Show Movie Night", + "output": "rocky horror picture show" + }, + { + "input": "David McCloskey and Ben Macintyre in conversation at Conway Hall", + "output": "david mccloskey ben macintyre in conversation at conway hall" + }, + { + "input": "Amyl and The Sniffers: Truth or Consequence", + "output": "truth or consequence" + }, + { + "input": "La Planète Sauvage screening with live score by HaHa Sounds Collective", + "output": "la planete sauvage" + }, + { + "input": "10A: The Fitting Room", + "output": "10a the fitting room" + }, + { + "input": "Jamie Radcliffe: What Are Kippers?", + "output": "jamie radcliffe what are kippers" + }, + { + "input": "The Old Strumpet Poet Of Brighton", + "output": "old strumpet poet of brighton" + }, + { + "input": "The Spoon", + "output": "the spoon" + }, + { + "input": "To Stay Mum", + "output": "to stay mum" + }, + { + "input": "Wasted", + "output": "wasted" + }, + { + "input": "Members’ Preview: Pressure", + "output": "pressure" + }, + { + "input": "Cinderella (2015)", + "output": "cinderella (2015)" + }, + { + "input": "Raya and the Last Dragon", + "output": "raya the last dragon" + }, + { + "input": "The Little Mermaid (2023)", + "output": "little mermaid (2023)" + }, + { + "input": "Amyl And The Sniffers present: Truth Or Consequence", + "output": "truth or consequence" + }, + { + "input": "AMYL AND THE SNIFFERS PRESENT 'TRUTH OR CONSEQUENCE'", + "output": "truth or consequence" + }, + { + "input": "First Watch Preview: TEENAGE SEX AND DEATH AT CAMP MIASMA (2026)", + "output": "teenage sex death at camp miasma (2026)" + }, + { + "input": "Insidious: Out of the Further", + "output": "insidious out of the further" + }, + { + "input": "Harry Potter and the Chamber of Secrets (2002)", + "output": "harry potter the chamber of secrets (2002)" + }, + { + "input": "Thudakkam", + "output": "thudakkam" + }, + { + "input": "DC (Tamil)", + "output": "dc" + }, + { + "input": "DC (Telugu)", + "output": "dc" + }, + { + "input": "Korean Kanakaraju", + "output": "korean kanakaraju" + }, + { + "input": "People's Emergency Briefing: film screening, live music & dinner", + "output": "peoples emergency briefing" + }, + { + "input": "Practical Magic (Re-Release)", + "output": "practical magic" + }, + { + "input": "Out at Clapham: Beautiful Thing (30th Anniversary) + Jonathan Harvey Q&A", + "output": "beautiful thing" + }, + { + "input": "Aquamarine (20th Anniversary Screening)", + "output": "aquamarine" + }, + { + "input": "Stop! That! Train!", + "output": "stop that train" + }, + { + "input": "The Transformers: The Movie: 40th Anniversary", + "output": "transformers the movie" + }, + { + "input": "AMYL AND THE SNIFFERS PRESENT TRUTH OR CONSEQUENCE", + "output": "truth or consequence" + }, + { + "input": "AUDITION (35mm) presented by Asif Kapadia", + "output": "audition" + }, + { + "input": "Dream Emulator: BENEATH THE BLISTERED MOON", + "output": "dream emulator beneath the blistered moon" + }, + { + "input": "Dream Emulator: SUFFER THE SILENT SUN – FOLK HORROR IN OUR DIGITAL IMAGINATIONS", + "output": "dream emulator suffer the silent sun folk horror in our digital imaginations" + }, + { + "input": "GANJA & HESS presented by ASHLEY CLARKE & DIONNE EDWARDS", + "output": "ganja hess" + }, + { + "input": "GOODBYE, DRAGON INN presented by Ben Wishaw", + "output": "goodbye dragon inn" + }, + { + "input": "Never Watching Movies: EMPIRE RECORDS", + "output": "empire records" + }, + { + "input": "It's Different For Girls - UK Premiere + Q&A", + "output": "its different for girls" + }, + { + "input": "Amyl and the Sniffers presents: Truth or Consequence", + "output": "truth or consequence" + }, + { + "input": "Closely Observed Trains", + "output": "closely observed trains" + }, + { + "input": "Diamonds of the Night", + "output": "diamonds of the night" + }, + { + "input": "Live folk music, Czech drinks + The Cassandra Cat", + "output": "cassandra cat" + }, + { + "input": "Marketa Lazarová", + "output": "marketa lazarova" + }, + { + "input": "Reclaim The Frame Presents: Beautiful Thing", + "output": "beautiful thing" + }, + { + "input": "Site&Sound 11: Service Please!", + "output": "site&sound 11 service please" + }, + { + "input": "The Cassandra Cat", + "output": "cassandra cat" + }, + { + "input": "The Firemen’s Ball", + "output": "firemens ball" + }, + { + "input": "The Shop on the High Street", + "output": "shop on the high street" + }, + { + "input": "The Valley of the Bees", + "output": "valley of the bees" } ]