diff --git a/cinemas/cinemamuseum.org.uk/transform.js b/cinemas/cinemamuseum.org.uk/transform.js index de8aba55..11f53e3c 100644 --- a/cinemas/cinemamuseum.org.uk/transform.js +++ b/cinemas/cinemamuseum.org.uk/transform.js @@ -56,6 +56,7 @@ async function transform({ moviePages }, sourcedEvents) { const status = !soldOut ? undefined : { soldOut }; $title.find("span").remove(); const title = getText($title); + if (basicNormalize(title).includes("screening cancelled")) return; const postId = $(".tribe_events.type-tribe_events") .attr("id") .replace("post-", ""); diff --git a/common/known-removable-phrases.js b/common/known-removable-phrases.js index 00a7b582..3418ded4 100644 --- a/common/known-removable-phrases.js +++ b/common/known-removable-phrases.js @@ -368,6 +368,7 @@ const knownRemovablePhrases = [ "a film by David Kew", "a Screening and Talk of", "Academy Awards Best Picture 2025:", + "Adults Only:", "Agnes Varda's", "Antonia Luxem:", "Akira Kurosawa's ", @@ -423,6 +424,7 @@ const knownRemovablePhrases = [ "Big Night Out:", "Black Ballad Members' Perk:", "Black History Studies:", + "BLOC CINEMA:", ": Book Launch", "Book Club", "BOTY:", @@ -547,6 +549,7 @@ const knownRemovablePhrases = [ "GBP2 Family Films", "£2 Christmas Family Films:", "£5 Christmas Family Films:", + "Faith Walk Film Premiere:", "Family Cinema:", "Family Film Club x The Old Ways:", "FAMILY FILM CLUB", @@ -628,6 +631,7 @@ const knownRemovablePhrases = [ "Hosted by Cinebug for International Women's Day", "Hosted by Cinebug & Women Without Borders Film Festival for International Women's Day", "Hussein Kamal's", + "IFF:", "IFF 2024:", "IFF 2025:", "IFF 2026:", @@ -919,6 +923,7 @@ const knownRemovablePhrases = [ "Comrade Tambo's", "Restored: Goran Marković's", ": Pastor. Spy. Assassin", + ": Past and Present", ": 20 Years' New Taiwan Cinema", " and the Cultural Networks of Weimar Berlin with Dr Jon Hughes", " and talk with London Mexico Solidarity", @@ -934,6 +939,7 @@ const knownRemovablePhrases = [ "× MILKTEA Post-Screening Creative Workshop", // Common superfluous pieces + "** SCREENING CANCELLED **", "DRINK-AND-SING-ALONG", "A Sing-Along Event", "Sing-along-a", diff --git a/common/normalize-title.js b/common/normalize-title.js index fdcc59d6..a1ffe4ff 100644 --- a/common/normalize-title.js +++ b/common/normalize-title.js @@ -613,13 +613,15 @@ function normalizeTitle(title, options) { ["B-Movie Women / ", "B-Movie Women: "], ["UK Cinema Premiere + Q&A: ", "UK Cinema Premiere & Q&A: "], ["LONDON | ", ""], - ["BLOC CINEMA | ", ""], + ["BLOC CINEMA | ", "BLOC CINEMA: "], + ["Faith Walk Film Premiere | ", "Faith Walk Film Premiere: "], [" / Bootlickers / ", " & Bootlickers & "], ["Sambhavam - Adhyayam Onnu", "Sambhavam Adhyayam Onnu"], ["Afronauts + ", "Afronauts & "], ["Cockroach + ", "Cockroach & "], ["READY OT NOT 2", "READY OR NOT 2"], [/^Charak \(Hindi\)$/i, "Charak: Fair of Faith"], + ["CLOSING Nuit de Chien", "Nuit de Chien"], // 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 cc32b1ef..02bdd822 100644 --- a/common/tests/test-titles.json +++ b/common/tests/test-titles.json @@ -60146,5 +60146,149 @@ { "input": "Now screening : Lowaa independent short film night", "output": "lowaa independent short film night" + }, + { + "input": "Touch Nature Season: Elements of(f) Balance", + "output": "elements of(f) balance" + }, + { + "input": "Touch Nature Season: Safari", + "output": "safari" + }, + { + "input": "Touch Nature Season: Tarzan the Ape Man", + "output": "tarzan the ape man" + }, + { + "input": "WISHBONE FEVER SCREENING", + "output": "wishbone fever" + }, + { + "input": "SOLD OUT: 1pm Screening: Freaky Friday", + "output": "freaky friday" + }, + { + "input": "Experiments In Film: Four Films by Maryam Tafakory", + "output": "four films by maryam tafakory" + }, + { + "input": "Rose of Nevada + ScreenTalk with director Mark Jenkin", + "output": "rose of nevada" + }, + { + "input": "Camden Friends of the Earth - Free Film Screening", + "output": "camden friends of the earth" + }, + { + "input": "The Fat Black Pussycat (1963) ** SCREENING CANCELLED **", + "output": "fat black pussycat (1963)" + }, + { + "input": "IFF: The Spongebob Movie: Search for Squarepants", + "output": "spongebob movie search for squarepants" + }, + { + "input": "Sorry to Bother you (2018) - Weird Wednesdays", + "output": "sorry to bother you (2018)" + }, + { + "input": "Film Club: Hard Boiled (4K Restoration)", + "output": "hard boiled" + }, + { + "input": "Film Club: Orwell: 2+2=5", + "output": "orwell 2+2=5" + }, + { + "input": "Film Club: Cabaret", + "output": "cabaret" + }, + { + "input": "Throwback: Moulin Rouge! (25th Anniversary)", + "output": "moulin rouge" + }, + { + "input": "Faith Walk Film Premiere | Disconnected part 2", + "output": "disconnected 2" + }, + { + "input": "AKIRA: Past and Present", + "output": "akira" + }, + { + "input": "CLOSING Nuit de Chien on 35mm + introduction", + "output": "nuit de chien" + }, + { + "input": "In Focus: Meriem Bennani Programme 1 (in collaboration with Orian Barki)", + "output": "in focus meriem bennani programme 1" + }, + { + "input": "The Cave of the Yellow Dog", + "output": "cave of the yellow dog" + }, + { + "input": "Ada – My Mother the Architect", + "output": "ada my mother the architect" + }, + { + "input": "Primavera", + "output": "primavera" + }, + { + "input": "Krol dopalaczy", + "output": "krol dopalaczy" + }, + { + "input": "The First Hymn", + "output": "first hymn" + }, + { + "input": "Land of Sometimes", + "output": "land of sometimes" + }, + { + "input": "Ready Or Not 2", + "output": "ready or not 2" + }, + { + "input": "Dog-Friendly Screening: The Devil Wears Prada 2", + "output": "devil wears prada 2" + }, + { + "input": "California Schemin' + Gavin Bain Q&A", + "output": "california schemin" + }, + { + "input": "Club Room: 'The Evil Bat!' + Live Score", + "output": "evil bat" + }, + { + "input": "Drink & Dine: Project Hail Mary + Pizza Night", + "output": "project hail mary" + }, + { + "input": "Rebuilding", + "output": "rebuilding" + }, + { + "input": "Wild Asia: Life at Extremes 3D (U)", + "output": "wild asia life at extremes" + }, + { + "input": "Tate Collective Moments: A Night of Dreams", + "output": "a night of dreams" + }, + { + "input": "Adults Only: The Devil Wears Prada 2", + "output": "devil wears prada 2" + }, + { + "input": "Dog-Friendly: The Devil Wears Prada 2", + "output": "devil wears prada 2" + }, + { + "input": "The Devil Wears Prada 2 + Intro", + "output": "devil wears prada 2" } ]