diff --git a/common/known-removable-phrases.js b/common/known-removable-phrases.js index 2c2e18e..0a9cc4f 100644 --- a/common/known-removable-phrases.js +++ b/common/known-removable-phrases.js @@ -417,6 +417,7 @@ const knownRemovablePhrases = [ "DH:", "Dog-Friendly:", "Dr. Seuss' ", + "Dr Seuss'", "Dystopia is Not the Future:", "Early fan screening", "EOS:", @@ -498,6 +499,7 @@ const knownRemovablePhrases = [ "HKFF:", "HKFFUK:", "HKFF 2025:", + "Hayley Mills:", "Halloween with Distorted Frame:", "Christmas with Distorted Frame:", "Hong Kong Film Festival UK:", diff --git a/common/source-only/transform.js b/common/source-only/transform.js index d68be48..2ab34a5 100644 --- a/common/source-only/transform.js +++ b/common/source-only/transform.js @@ -11,14 +11,20 @@ const sportShowings = [ /^\w+\s+FANPARK:/i, ]; +const nonFilmEvents = [/Community Pilates/i]; + const isNotSportShowing = ({ title }) => !sportShowings.some((sports) => basicNormalize(title).match(sports)); +const isNotNonFilmEvent = ({ title }) => + !nonFilmEvents.some((nonFilm) => basicNormalize(title).match(nonFilm)); + async function transform(data, sourcedEvents) { // Return the sourced events for this venue return Object.values(sourcedEvents) .flatMap((events) => events) - .filter(isNotSportShowing); // Remove all the football match screenings + .filter(isNotSportShowing) // Remove all the football match screenings + .filter(isNotNonFilmEvent); // Remove all non film events } module.exports = transform; diff --git a/common/tests/test-titles.json b/common/tests/test-titles.json index 747e5a9..703fe39 100644 --- a/common/tests/test-titles.json +++ b/common/tests/test-titles.json @@ -50474,5 +50474,157 @@ { "input": "Picture East Film Festival 2026: LONDON BOYS FEATURE FILM + PANEL", "output": "london boys feature film" + }, + { + "input": "Jessie Buckley in Conversation", + "output": "jessie buckley in conversation" + }, + { + "input": "The Quiz of Rassilon", + "output": "quiz of rassilon" + }, + { + "input": "TV Preview: How to Get to Heaven from Belfast + Q&A", + "output": "how to get to heaven from belfast" + }, + { + "input": "Colours of Time [La Venue de l'avenir]", + "output": "colours of time" + }, + { + "input": "The Stranger [L'étranger]", + "output": "stranger" + }, + { + "input": "Throwback: A Knight's Tale (25th Anniversary)", + "output": "a knights tale" + }, + { + "input": "Throwback: Singin' in the Rain", + "output": "singin in the rain" + }, + { + "input": "Throwback: The Fifth Element", + "output": "fifth element" + }, + { + "input": "Throwback: There Will Be Blood", + "output": "there will be blood" + }, + { + "input": "Toddler Club: Dr Seuss' The Lorax", + "output": "lorax" + }, + { + "input": "Toddler Club: Lady and the Tramp (1955)", + "output": "lady the tramp (1955)" + }, + { + "input": "Toddler Club: The Scarecrows' Wedding + The Smeds and the Smoos", + "output": "scarecrows wedding" + }, + { + "input": "Neurasia, Argila & Aggression", + "output": "neurasia argila aggression" + }, + { + "input": "PREVIEW Sirât", + "output": "sirat" + }, + { + "input": "Babykino: Rental Family", + "output": "rental family" + }, + { + "input": "Hayley Mills: The Family Way", + "output": "family way" + }, + { + "input": "The Strangers - Chapter 3", + "output": "strangers chapter 3" + }, + { + "input": "The Rose: Come Back to Me", + "output": "rose come back to me" + }, + { + "input": "Dalej jazda 2", + "output": "dalej jazda 2" + }, + { + "input": "Collective Monologue + director Q&A", + "output": "collective monologue" + }, + { + "input": "Muppets From Space", + "output": "muppets from space" + }, + { + "input": "Muppets Most Wanted", + "output": "muppets most wanted" + }, + { + "input": "The Muppets", + "output": "muppets" + }, + { + "input": "The Muppets Take Manhattan", + "output": "muppets take manhattan" + }, + { + "input": "American History X", + "output": "american history x" + }, + { + "input": "Die Hard: With a Vengeance", + "output": "die hard with a vengeance" + }, + { + "input": "Freaked", + "output": "freaked" + }, + { + "input": "sex, lies, and videotape", + "output": "sex lies videotape" + }, + { + "input": "Gone With The Wind", + "output": "gone with the wind" + }, + { + "input": "How To Steal A Million + Live Organ", + "output": "how to steal a million" + }, + { + "input": "The Lady Vanishes", + "output": "lady vanishes" + }, + { + "input": "TV PARTY, TONIGHT!: A Pink Palace Collaboration", + "output": "tv party tonight a pink palace collaboration" + }, + { + "input": "TV PARTY, TONIGHT!: An Education in Blood and Guts Filmmaking", + "output": "tv party tonight an education in blood guts filmmaking" + }, + { + "input": "TV PARTY, TONIGHT!: Anarchism and Misrule in Cinema", + "output": "tv party tonight anarchism misrule" + }, + { + "input": "TV PARTY, TONIGHT!: Photographers on Film", + "output": "tv party tonight photographers on film" + }, + { + "input": "Valentine's Day: Maurice (4K Restoration)", + "output": "maurice" + }, + { + "input": "Battleship Potemkin with original score by Body Orchestra", + "output": "battleship potemkin" + }, + { + "input": "The Spongebob Movie: Search for Squarepants", + "output": "spongebob movie search for squarepants" } ]