diff --git a/common/is-sport-showing.js b/common/is-sport-showing.js index 48792ef4..7fb8b77b 100644 --- a/common/is-sport-showing.js +++ b/common/is-sport-showing.js @@ -26,6 +26,7 @@ const sportShowings = [ /World Cup Live/i, /TROPHY FINAL/i, /Wimbledon Live/i, + /PLAYOFF FINAL/i, ]; const isSportShowing = ({ title }) => diff --git a/common/known-removable-phrases.js b/common/known-removable-phrases.js index ab2fe9c7..ac2cdb71 100644 --- a/common/known-removable-phrases.js +++ b/common/known-removable-phrases.js @@ -393,6 +393,7 @@ const knownRemovablePhrases = [ "Dress-up karaoke party &", "Spicy cocktail hour &", "A Nuclear Nightmare", + "A Night of Latin Jazz:", "Test Screening", "starring RMD", "– Dr Ghassan Abu-Sittah Speaks", @@ -495,12 +496,14 @@ const knownRemovablePhrases = [ "Bowie Double Bill:", "Double Bill Q&A:", "David Bowie in ", + "The Bench x Haft Cinema:", "Box Office Poison:", "brat Double Bill:", "Brazilian Summer Nights:", "BTS ARMY:", "by Ektoras Arkomanis", "by Elfi Mikesch", + "by Folu Odimayo", "by Rebecca Salvadori", "by Louisa May Alcott", "by Paromita Vohra", @@ -562,6 +565,7 @@ const knownRemovablePhrases = [ "CNFW:", "CineMediterra FF 2025:", "MediCinema:", + "Charli XCX Zine Social:", "Choose What You Pay:", "(Christmas Bring It Back)", "Christmas Cinema-", @@ -648,6 +652,7 @@ const knownRemovablePhrases = [ "Senior Community Cinema x Queer 60s:", "Senior Community Cinema x The Old Ways:", "Senior Community Cinema:", + "Sneak Peek & Intro", "The Old Ways:", "SCS: The Old Ways", "FILM CLUB FRIDAYS:", @@ -704,6 +709,7 @@ const knownRemovablePhrases = [ "Live stand-up &", "Horace Ové's", "Kinoteka:", + "Kino Polonia:", "MASSIVE:", "Matinee:", "Max Richter Scientist of The Soul:", @@ -715,6 +721,7 @@ const knownRemovablePhrases = [ "Rerun:", "Tobey Maguire Trilogy", "GIF:", + "Hackney Art Week:", "Happy Birthday Hitch:", "Happy Birthday Rik Mayall:", "Hidden Figures:", @@ -734,6 +741,7 @@ const knownRemovablePhrases = [ "Hosted by Cinebug for International Women's Day", "Hosted by Cinebug & Women Without Borders Film Festival for International Women's Day", "Women Without Borders Film Festival 2026 —", + "The Woman Behind Visconti's Masterpiece", "Cinebug turns 1:", "Hussein Kamal's", "IFF:", @@ -906,6 +914,7 @@ const knownRemovablePhrases = [ "Red Carpet Screening", "Red Carpet Premiere & Film Industry Networking", "Rio Feminist Film Group:", + "RIO FILM FEMINISTS x ", "RIO FOREVER x ", "ASIF KAPADIA:", "QUEER EAST:", @@ -951,6 +960,7 @@ const knownRemovablePhrases = [ ": Silents Synced", "SLA:", "SLA 2025:", + "Slacker Shakespeare:", "William Shakespeare's", "Shakespeare's", "SHARMADEAN REID INTRODUCES", @@ -978,6 +988,8 @@ const knownRemovablePhrases = [ "Special preview with London premiere footage:", "Street Celebration: Pre", "SXSW:", + "SWEET BABY CHARLIE aka", + "aka EMBRUJADA", "RELAXED screen", "RELAXED screening", "RELAXED screen", diff --git a/common/normalize-title.js b/common/normalize-title.js index 3725e3ef..49343c35 100644 --- a/common/normalize-title.js +++ b/common/normalize-title.js @@ -396,6 +396,7 @@ function normalizeTitle(title, options) { [/Wicked:? Double Bill/i, "Wicked & Wicked: For Good Double Bill"], [/The God Father/i, "The Godfather"], ["Le Litre de lait + Les Contrebandières", "Les Contrebandières"], + ["CHRISTOPHER BRETT BAILEY + ", "CHRISTOPHER BRETT BAILEY presents "], ["ELF MOVIE", "Elf"], ["Screening + Q&A:", "Screening & Q&A:"], ["Marcin Wierzchowski - ", "Marcin Wierzchowski: "], @@ -404,6 +405,7 @@ function normalizeTitle(title, options) { "Sapphic Cinema and BFI Melodrama: ", ], ["Sapphic Cinema - ", "Sapphic Cinema: "], + ["Pride Special - ", "Pride Special: "], ["Cinema Club - ", "Cinema Club: "], ["Film Premiere - ", "Film Premiere: "], ["Karaoke, crafts + ", "Karaoke, crafts & "], @@ -678,6 +680,9 @@ function normalizeTitle(title, options) { ["Phantom Beirut (1998) + ", "Phantom Beirut (1998) & "], ["Scorpio Rising + ", "Scorpio Rising & "], ["In the Year of the Quiet Sun + ", "In the Year of the Quiet Sun & "], + ["Iggy the Eskimo Girl (2009) + ", "Iggy the Eskimo Girl (2009) & "], + ["Charli XCX Zine Social + ", "Charli XCX Zine Social: "], + ["Sneak Peek + ", "Sneak Peek & "], ["Screening + Performance", "Screening & Performance"], ["Season 2 Premiere + Q&A:", "Season 2 Premiere & Q&A:"], [/Members' wine tasting \+ (?:optional)?/i, "Members' wine tasting: "], @@ -698,7 +703,10 @@ function normalizeTitle(title, options) { ["National Emergency Briefing", "People's Emergency Briefing"], ["People's Emergency Briefing Twickenham", "People's Emergency Briefing"], ["TESTMortal Kombat IITEST", "Mortal Kombat II"], - [/^(?:Dog Friendly: )?The Mandalorian/i, "Star Wars: The Mandalorian"], + [ + /^(?:Dog Friendly: )?(?:Parent and Baby: )?The Mandalorian/i, + "Star Wars: The Mandalorian", + ], ["Mando & Grogu", "The Mandalorian and Grogu"], [/^LIK\s+/i, "LIK: Love Insurance Kompany "], [": TOTAS", " The Movie: Tears of the Azure Sea"], @@ -711,6 +719,14 @@ function normalizeTitle(title, options) { [/Glastonbury The Movie:?\s/i, "Glastonbury The Movie in Flashback: "], ["Andre Rieu - ", "Andre Rieu: "], ["Andre Rieu: Summer 2026:", "Andre Rieu's 2026 Summer Concert:"], + [" + UK Premiere: Replikka", " + Replikka"], + [ + /Bluey At The Cinema - Playdates$/i, + "Bluey At The Cinema: Playdates with Friends", + ], + ["A Night of Latin Jazz - ", "A Night of Latin Jazz: "], + ["The Life + Legacy", "The Life and Legacy"], + [" - Oggi", ": Oggi"], // 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 2339d977..6fda4b43 100644 --- a/common/tests/test-titles.json +++ b/common/tests/test-titles.json @@ -54321,7 +54321,7 @@ }, { "input": "The Bench x Haft Cinema: After Imaginary Weights and Transported Presences", - "output": "bench x haft cinema after imaginary weights transported presences" + "output": "after imaginary weights transported presences" }, { "input": "Words Matter Film Shorts + live performance with Lasana Shabazz", @@ -69689,11 +69689,11 @@ }, { "input": "The Father and the Shaman + UK Premiere: Replikka", - "output": "replikka" + "output": "father the shaman" }, { "input": "The Father and the Shaman with intro + UK Premiere: Replikka", - "output": "replikka" + "output": "father the shaman" }, { "input": "Drive-Away Dolls (2024)", @@ -71094,5 +71094,1029 @@ { "input": "For Whom the Bell Tolls", "output": "for whom the bell tolls" + }, + { + "input": "CARERS & BABIES: The Christophers", + "output": "the christophers" + }, + { + "input": "EAGLES OF THE REPUBLIC", + "output": "eagles of the republic" + }, + { + "input": "Demystifying the Director's Rep - LVSFF 2026", + "output": "demystifying the directors rep" + }, + { + "input": "Filmmakers Networking 1 - LVSFF 2026", + "output": "filmmakers networking 1" + }, + { + "input": "Pitching Films 101 - LVSFF 2026", + "output": "pitching films 101" + }, + { + "input": "Pride Screening - LVSFF 2026", + "output": "pride" + }, + { + "input": "Short Film Roulette Screening - LVSFF 2026", + "output": "short film roulette" + }, + { + "input": "Womxn in comedy - LVSFF 2026", + "output": "womxn in comedy" + }, + { + "input": "Members' Screening: Eagles of the Republic", + "output": "eagles of the republic" + }, + { + "input": "Parent and Baby: The Christophers", + "output": "the christophers" + }, + { + "input": "Parent and Baby: Tuner", + "output": "tuner" + }, + { + "input": "ScreenTalk: All the President's Men (4K Restoration)", + "output": "all the presidents men" + }, + { + "input": "BAR TRASH presents REPO MAN (1984) at Beer Merchants Tap", + "output": "repo man (1984)" + }, + { + "input": "Star Wars: The Mandalorian and Grogu (2D) with subtitles for the D/deaf", + "output": "star wars the mandalorian grogu" + }, + { + "input": "40 Years of Pixar: A Celebration of Disney and Pixar’s Toy Story", + "output": "40 years of pixar a celebration of disney pixars toy story" + }, + { + "input": "Dona Flor and Her Two Husbands + intro by Natali Juste Simmonds, London Latino Film Festival", + "output": "dona flor her two husbands" + }, + { + "input": "Macho Dancer + recorded intro by Professor Jose B. Capino, University of Illinois Urbana-Champaign", + "output": "macho dancer" + }, + { + "input": "Special Presentation: Farewell to Spring + recorded intro by Chisato Inagaki", + "output": "farewell to spring" + }, + { + "input": "The Father and the Shaman + UK Premiere: Replikka and Q&A with Felipe Tomazelli and Yula Rocha", + "output": "father the shaman" + }, + { + "input": "The Spring Outside the Fence + intro by Professor Chris Berry, Film Studies at King’s College London", + "output": "spring outside the fence" + }, + { + "input": "UK Premiere: Between Goodbyes + Zoom Q&A with director Jota Mun", + "output": "between goodbyes" + }, + { + "input": "UK Premiere: Open Endings + Q&A with director Nigel Santos (online) and producer Tin Velasco", + "output": "open endings" + }, + { + "input": "Big Hero 6", + "output": "big hero 6" + }, + { + "input": "Bedford Park Festival: Sixty Six", + "output": "sixty six" + }, + { + "input": "Breaking Away (1979) on 16mm", + "output": "breaking away (1979)" + }, + { + "input": "Paradigms of Friction", + "output": "paradigms of friction" + }, + { + "input": "£2 Family Films : Bluey At The Cinema - Playdates", + "output": "bluey at the cinema playdates with friends" + }, + { + "input": "£2 Family Films : HitPig!", + "output": "hitpig" + }, + { + "input": "Chand Mera Dil (Hindi)", + "output": "chand mera dil" + }, + { + "input": "Karuppu - Uncut Version (Tamil)", + "output": "karuppu" + }, + { + "input": "Tom & Jerry: Forbidden Compass", + "output": "tom jerry forbidden compass" + }, + { + "input": "Kattalan (Malayalam)", + "output": "kattalan" + }, + { + "input": "Luv Di Saun (Urdu)", + "output": "luv di saun" + }, + { + "input": "Mera Lyari (Urdu)", + "output": "mera lyari" + }, + { + "input": "Psycho (Urdu)", + "output": "psycho" + }, + { + "input": "Zombeid (Urdu)", + "output": "zombeid" + }, + { + "input": "We're Nothing At All (Cantonese)", + "output": "were nothing at all" + }, + { + "input": "The Met 2025-26: El Ultimo Sueno de Frida y Diego", + "output": "metropolitan opera el ultimo sueno de frida y diego" + }, + { + "input": "Beyond Echo", + "output": "beyond echo" + }, + { + "input": "Blood", + "output": "blood" + }, + { + "input": "Casa de lava", + "output": "casa de lava" + }, + { + "input": "Feature Screening Manas | Close-Up Cinema", + "output": "manas" + }, + { + "input": "FIFFLONDON ANNUAL EVENT", + "output": "fifflondon annual event" + }, + { + "input": "Good Time", + "output": "good time" + }, + { + "input": "Pictures of the Old World", + "output": "pictures of the old world" + }, + { + "input": "Pompei: Below the Clouds", + "output": "pompei below the clouds" + }, + { + "input": "Punku", + "output": "punku" + }, + { + "input": "Stroszek", + "output": "stroszek" + }, + { + "input": "‘Our Latin Thing’ - Screening, DJs and live percussion", + "output": "our latin thing" + }, + { + "input": "A Night of Latin Jazz - 'Our Latin Thing'", + "output": "our latin thing" + }, + { + "input": "D8MYM8", + "output": "d8mym8" + }, + { + "input": "Kotoa Meets Rocking Time HIFI - Summer Send Off", + "output": "kotoa meets rocking time hifi" + }, + { + "input": "Special Guest: Dating Edition", + "output": "special guest dating edition" + }, + { + "input": "Snowball", + "output": "snowball" + }, + { + "input": "DocHouse: A Last Big Story", + "output": "a last big story" + }, + { + "input": "DocHouse: Acting", + "output": "acting" + }, + { + "input": "DocHouse: Benita", + "output": "benita" + }, + { + "input": "DocHouse: Letter To The Editor", + "output": "letter to the editor" + }, + { + "input": "DocHouse: Natchez", + "output": "natchez" + }, + { + "input": "DocHouse: Time and Water", + "output": "time water" + }, + { + "input": "Kids Club: Gabby’s Dollhouse: The Movie", + "output": "gabbys dollhouse" + }, + { + "input": "Kids Club: K-Pop Demon Hunters (Sing-Along)", + "output": "kpop demon hunters" + }, + { + "input": "Kids Club: Shrek", + "output": "shrek" + }, + { + "input": "Kids Club: Wicked: For Good", + "output": "wicked for good" + }, + { + "input": "A PRIVATE LIFE", + "output": "a private life" + }, + { + "input": "BLUE HERON", + "output": "blue heron" + }, + { + "input": "DISCLOSURE DAY", + "output": "disclosure day" + }, + { + "input": "EOS: FRIDA KAHLO 2026", + "output": "frida kahlo" + }, + { + "input": "FAMILIAR TOUCH", + "output": "familiar touch" + }, + { + "input": "FINDING EMILY", + "output": "finding emily" + }, + { + "input": "FLIRTING", + "output": "flirting" + }, + { + "input": "GHOST (Dementia Friendly Screening)", + "output": "ghost" + }, + { + "input": "GHOST (Relaxed Screening)", + "output": "ghost" + }, + { + "input": "MINIONS AND MONSTERS", + "output": "minions monsters" + }, + { + "input": "THE DEVIL WEARS PRADA 2 (Babes-In-Arms Screening)", + "output": "devil wears prada 2" + }, + { + "input": "TUNER", + "output": "tuner" + }, + { + "input": "ZOOTROPOLIS 2", + "output": "zootropolis 2" + }, + { + "input": "Parent and Baby: The Mandalorian and Grogu", + "output": "star wars the mandalorian grogu" + }, + { + "input": "Royal Ballet and Opera: Carmen", + "output": "royal ballet opera 2025 carmen" + }, + { + "input": "Nolan Throwback: Dunkirk", + "output": "dunkirk" + }, + { + "input": "Nolan Throwback: The Dark Knight Rises", + "output": "dark knight rises" + }, + { + "input": "Throwback: Batman Begins", + "output": "batman begins" + }, + { + "input": "Throwback: Inception", + "output": "inception" + }, + { + "input": "Throwback: Interstellar", + "output": "interstellar" + }, + { + "input": "Throwback: The Dark Knight", + "output": "dark knight" + }, + { + "input": "BASQUIAT ", + "output": "basquiat" + }, + { + "input": "MISHIMA: A LIFE IN FOUR CHAPTERS ", + "output": "mishima a life in four chapters" + }, + { + "input": "SIRAT ", + "output": "sirat" + }, + { + "input": "Tom & Jerry forbidden Compass", + "output": "tom jerry forbidden compass" + }, + { + "input": "Yacht Mess: Live with Daisy Kelliher & Marc MacNamara", + "output": "yacht mess live with daisy kelliher marc macnamara" + }, + { + "input": "Filmmaker's Party and Awards - LVSFF 2026", + "output": "filmmakers party awards" + }, + { + "input": "Operation Recomply: Film premiere and panel discussion", + "output": "operation recomply and" + }, + { + "input": "Sinners Presented by WABJ", + "output": "sinners" + }, + { + "input": "Voidance + Q&A", + "output": "voidance" + }, + { + "input": "Libya in Motion (2015) with intro + post-film discussion", + "output": "libya in motion (2015)" + }, + { + "input": "Two Wheels/Two Films", + "output": "two wheels/two films" + }, + { + "input": "A Woman's Revenge", + "output": "a womans revenge" + }, + { + "input": "Dry Leaf", + "output": "dry leaf" + }, + { + "input": "Jukebox Film Club: After Dreaming", + "output": "after dreaming" + }, + { + "input": "New Irish Feature Film: HORSESHOE + Directors Q&A", + "output": "horseshoe" + }, + { + "input": "Shaw Festival London 2026: Shakes Versus Shav – Film Screening + Q&A", + "output": "shaw festival london 2026 shakes versus shav" + }, + { + "input": "Film Screening - African Redemption: The Life + Legacy of Marcus Garvey'", + "output": "african redemption the life legacy of marcus garvey" + }, + { + "input": "Between the Temples", + "output": "between the temples" + }, + { + "input": "Sixty Six", + "output": "sixty six" + }, + { + "input": "Time and Water: Screening + Panel", + "output": "time water" + }, + { + "input": "New York Ninja (1984, 2021) vs Miami Connection (1987) - Pick Your Trash!", + "output": "new york ninja (1984 2021) vs miami connection (1987)" + }, + { + "input": "Cheese & Port Afternoon (October)", + "output": "cheese port afternoon" + }, + { + "input": "Disclosure Day", + "output": "disclosure day" + }, + { + "input": "Katyn - in association with HoPEC", + "output": "katyn" + }, + { + "input": "Man Baby", + "output": "man baby" + }, + { + "input": "Master Your Camera in 5 Weeks: Photography Workshop with Hannah Davis", + "output": "master your camera in 5 weeks photography workshop with hannah davis" + }, + { + "input": "Mystery Giallo Marathon Day Volume 3", + "output": "mystery giallo marathon day volume 3" + }, + { + "input": "Mystery Poliziotteschi Day 2 - A Day of 1970's Italian Crime Thrillers", + "output": "mystery poliziotteschi day 2" + }, + { + "input": "Pride in Romford - Mystery LGBTQ+ Movie Marathon, in partnership with Kaleidoscope", + "output": "pride in romford" + }, + { + "input": "The Lumiere 80s Movie Marathon", + "output": "lumiere 80s movie marathon" + }, + { + "input": "The Lumiere Halloween Event", + "output": "lumiere halloween event" + }, + { + "input": "Verity: Book Club & Private Screening", + "output": "verity" + }, + { + "input": "Chand Mera Dil", + "output": "chand mera dil" + }, + { + "input": "The Birdcage (30th Anniversary)", + "output": "the birdcage" + }, + { + "input": "Eagles of the Republic (Arabic)", + "output": "eagles of the republic" + }, + { + "input": "Top Hat The Musical", + "output": "top hat the musical" + }, + { + "input": "We're Nothing at All (Cantonese)", + "output": "were nothing at all" + }, + { + "input": "Film London x Women's Museum: Launch Event", + "output": "film london x womens museum launch event" + }, + { + "input": "Film London x Womens Museum: Women Over Fifty Festival Screening", + "output": "film london x womens museum women over fifty festival" + }, + { + "input": "Kattalan", + "output": "kattalan" + }, + { + "input": "PLAVE Asia Tour [DASH: Quantum Leap] Encore", + "output": "plave asia tour" + }, + { + "input": "Zombeid", + "output": "zombeid" + }, + { + "input": "Met Opera 2026-27: Macbeth", + "output": "metropolitan opera macbeth" + }, + { + "input": "RBO Cinema Season 2026-27: Carmen", + "output": "royal ballet opera 2026 carmen" + }, + { + "input": "RBO Cinema Season 2026-27: Manon", + "output": "royal ballet opera 2026 manon" + }, + { + "input": "Linda Perry: Let It Die Here - Q&A with Linda Perry", + "output": "linda perry let it die here" + }, + { + "input": "Masters Of The Universe", + "output": "masters of the universe" + }, + { + "input": "Tom & Jerry Forbidden Compass", + "output": "tom jerry forbidden compass" + }, + { + "input": "Star Wars: The Mandalorian and Grogu 3D", + "output": "star wars the mandalorian grogu" + }, + { + "input": "Art is my Therapy - come unity screenings", + "output": "art is my therapy" + }, + { + "input": "Bridesmaids 15th Anniversary", + "output": "bridesmaids" + }, + { + "input": "Film screening: MAKING A MINI-FOREST", + "output": "making a miniforest" + }, + { + "input": "Time and Water + Q&A", + "output": "time water" + }, + { + "input": "We're Nothing at All + Live Broadcast Q&A", + "output": "were nothing at all" + }, + { + "input": "Out at Clapham: Madfabulous + director Q&A", + "output": "madfabulous" + }, + { + "input": "Time and Water", + "output": "time water" + }, + { + "input": "Champions League Final 2026", + "output": "champions league final" + }, + { + "input": "Met Opera Encore 2026-26: Silent Night", + "output": "metropolitan opera silent night" + }, + { + "input": "Met Opera Encore 2026-27: Cosi Fan Tutte", + "output": "metropolitan opera cosi fan tutte" + }, + { + "input": "Met Opera Encore 2026-27: La Fanciulla del West", + "output": "metropolitan opera la fanciulla del west" + }, + { + "input": "Met Opera Encore 2026-27: Macbeth", + "output": "metropolitan opera macbeth" + }, + { + "input": "Met Opera Encore 2026-27: Manon", + "output": "metropolitan opera manon" + }, + { + "input": "Met Opera Encore 2026-27: Otello", + "output": "metropolitan opera otello" + }, + { + "input": "Met Opera Encore 2026-27: Samson et Dalila", + "output": "metropolitan opera samson et dalila" + }, + { + "input": "Twenty Years of the Met in Cinemas Encore", + "output": "twenty years of the met" + }, + { + "input": "Vasilisa the Beautiful + Introduction", + "output": "vasilisa the beautiful" + }, + { + "input": "Met Opera Live 2026-27: Cosi Fan Tutte", + "output": "metropolitan opera cosi fan tutte" + }, + { + "input": "Twenty Years of the Met in Cinemas Live", + "output": "twenty years of the met live" + }, + { + "input": "Met Opera Live 2026-26: Silent Night", + "output": "metropolitan opera silent night" + }, + { + "input": "Met Opera Live 2026-27: La Fanciulla del West", + "output": "metropolitan opera la fanciulla del west" + }, + { + "input": "Met Opera Live 2026-27: Macbeth", + "output": "metropolitan opera macbeth" + }, + { + "input": "Met Opera Live 2026-27: Manon", + "output": "metropolitan opera manon" + }, + { + "input": "Met Opera Live 2026-27: Otello", + "output": "metropolitan opera otello" + }, + { + "input": "Met Opera Live 2026-27: Samson et Dalila", + "output": "metropolitan opera samson et dalila" + }, + { + "input": "Bait (2019)", + "output": "bait (2019)" + }, + { + "input": "Blackboards", + "output": "blackboards" + }, + { + "input": "Bob Dylan: Don't Look Back", + "output": "bob dylan dont look back" + }, + { + "input": "Funeral Parade presents \"Beyond the Valley of the Dolls\"", + "output": "beyond the valley of the dolls" + }, + { + "input": "Nirvanna the Band the Show the Movie", + "output": "nirvanna the band the show" + }, + { + "input": "Possum + Matthew Holness in conversation", + "output": "possum" + }, + { + "input": "The Panic in Needle Park", + "output": "panic in needle park" + }, + { + "input": "The Short Films of David Lynch: Expanded", + "output": "short films of expanded" + }, + { + "input": "CLOSING CEREMONY of 27th Rainbow International Film Festival", + "output": "closing ceremony of 27th rainbow international film festival" + }, + { + "input": "Alice Walker: Beauty In Truth", + "output": "alice walker beauty in truth" + }, + { + "input": "Iggy the Eskimo Girl (2009) + Tonite Let’s All Make Love in London (1967) + Intro", + "output": "iggy the eskimo girl (2009) tonite lets all make love in london (1967)" + }, + { + "input": "Notte Prima Degli Esami - Night Before The Exams + Q&A with Nicolas Vaporidis", + "output": "notte prima degli esami" + }, + { + "input": "Notte Prima Degli Esami - Oggi,(Night Before The Exams 2) + Q&A with Nicolas Vaporidis", + "output": "notte prima degli esami oggi" + }, + { + "input": "The Leopard: The Woman Behind Visconti’s Masterpiece. Special screening + conversation", + "output": "the leopard" + }, + { + "input": "habeshaview Monthly Cinema: Ewir Amora Kelabi", + "output": "ewir amora kelabi" + }, + { + "input": "London Premiere: The Day Innocence Died: Bloody Sunday and the Fight for Justice", + "output": "day innocence died bloody sunday the fight for justice" + }, + { + "input": "AMÉLIE", + "output": "amelie" + }, + { + "input": "Hackney Art Week: LOVE INFINITY + Q&A", + "output": "love infinity" + }, + { + "input": "Hackney History Festival: Dear Mr Manley + Q&A", + "output": "dear mr manley" + }, + { + "input": "Kino Polonia: ASHES AND DIAMONDS", + "output": "ashes diamonds" + }, + { + "input": "MARE'S NEST + Q&A", + "output": "mares nest" + }, + { + "input": "Pink Palace: SEXTOOL & SPY ON THE FLY", + "output": "sextool spy on the fly" + }, + { + "input": "RIO FILM FEMINISTS X RIO FOREVER: GIRLFRIENDS + Intro", + "output": "girlfriends" + }, + { + "input": "Slacker Shakespeare: MY OWN PRIVATE IDAHO", + "output": "my own private idaho" + }, + { + "input": "Slacker Shakespeare: SHAKESPEARE IN LOVE", + "output": "shakespeare in love" + }, + { + "input": "Slacker Shakespeare: WILLIAM SHAKESPEARE'S ROMEO + JULIET", + "output": "romeo+juliet" + }, + { + "input": "Doctor Who: Projections in Time - Black & White & Silver", + "output": "doctor who black white silver" + }, + { + "input": "National Theatre Live", + "output": "national theatre live" + }, + { + "input": "VOWS | Audience Test Screening", + "output": "vows" + }, + { + "input": "Charli XCX Zine Social + Erupcja", + "output": "erupcja" + }, + { + "input": "Dyke Night: Rebel Dykes + Intro & Q&A", + "output": "rebel dykes" + }, + { + "input": "Erupcja", + "output": "erupcja" + }, + { + "input": "Erupcja + Director Q&A", + "output": "erupcja" + }, + { + "input": "Fucktoys Sneak Peek + Intro", + "output": "fucktoys" + }, + { + "input": "Queer Cinema for Palestine: No Pride in Genocide + Panel Discussion", + "output": "queer cinema for palestine no pride in genocide" + }, + { + "input": "The Crow & Corpse Bride + Goth Drag Intro", + "output": "crow corpse bride" + }, + { + "input": "A Special Community Free Screening: The People's Emergency Briefing", + "output": "peoples emergency briefing" + }, + { + "input": "Sapphic Cinema - Pride Special - The Handmaiden + Live Guest Performance", + "output": "the handmaiden" + }, + { + "input": "Cactus Pears + director Q&A", + "output": "cactus pears" + }, + { + "input": "Pitchblack Playback: Bob Dylan 'Blonde On Blonde' (60th Anniversary)'", + "output": "bob dylan blonde on blonde (60th anniversary)" + }, + { + "input": "Queer Cinema for Palestine: No Pride in Genocide", + "output": "queer cinema for palestine no pride in genocide" + }, + { + "input": "Raya and the Last Dragon + Origami Workshop", + "output": "raya the last dragon" + }, + { + "input": "The Birdcage (1996) + Drag Tea Party", + "output": "the birdcage (1996)" + }, + { + "input": "The Handmaiden + Bespoke Poetry", + "output": "the handmaiden" + }, + { + "input": "Two Times João Liberada + Q&A", + "output": "two times joao liberada" + }, + { + "input": "Moss & Freud + Q&A with director James Lucas, Ellie Bamber and Derek Jacobi", + "output": "moss freud" + }, + { + "input": "Do You Love Me + Short", + "output": "do you love me" + }, + { + "input": "GP Surgery Presents “Blues and The Moon” Experimental Shorts", + "output": "blues the moon experimental shorts" + }, + { + "input": "Industry Panel: Adaptation", + "output": "industry panel adaptation" + }, + { + "input": "Mystery Of The First Temple", + "output": "mystery of the first temple" + }, + { + "input": "Souraya Mon Amour + Shorts", + "output": "souraya mon amour" + }, + { + "input": "Everybody to Kenmure Street (12A)", + "output": "everybody to kenmure street" + }, + { + "input": "Father of Lies by Folu Odimayo", + "output": "father of lies" + }, + { + "input": "Minor Attractions Presents: INTERMISSIONS", + "output": "intermissions" + }, + { + "input": "Film Screening: The Warriors", + "output": "the warriors" + }, + { + "input": "A BETTER TOMORROW", + "output": "a better tomorrow" + }, + { + "input": "BEWARE OF A HOLY WHORE", + "output": "beware of a holy whore" + }, + { + "input": "BEWITCHED aka EMBRUJADA", + "output": "bewitched" + }, + { + "input": "BIKER LESBIANS FROM HELL BOOK READING BY CHRISTOPHER BRETT BAILEY + THE LONERS (16MM)", + "output": "the loners" + }, + { + "input": "BLIND RAGE", + "output": "blind rage" + }, + { + "input": "BLUE MONDAY - MYSTERY EROTIC CINEMA", + "output": "blue monday" + }, + { + "input": "BOXING HELENA", + "output": "boxing helena" + }, + { + "input": "CARNE", + "output": "carne" + }, + { + "input": "COCAINE: ONE MAN'S SEDUCTION (VHS SCREENING)", + "output": "cocaine one mans seduction" + }, + { + "input": "COMBAT SHOCK", + "output": "combat shock" + }, + { + "input": "DISCREET CINE PRESENTS: TR BASKIN", + "output": "tr baskin" + }, + { + "input": "FEAR IS THE KEY", + "output": "fear is the key" + }, + { + "input": "FORBIDDEN WORLD", + "output": "forbidden world" + }, + { + "input": "FOX AND HIS FRIENDS", + "output": "fox his friends" + }, + { + "input": "FUCKTOYS", + "output": "fucktoys" + }, + { + "input": "GRAND CENTRAL", + "output": "grand central" + }, + { + "input": "IN THE CUT", + "output": "in the cut" + }, + { + "input": "MAD LOVE", + "output": "mad love" + }, + { + "input": "MULHOLLAND DRIVE", + "output": "mulholland drive" + }, + { + "input": "NICKELFEST #1 - DAY ONE", + "output": "nickelfest #1" + }, + { + "input": "NICKELFEST #1 - DAY THREE", + "output": "nickelfest #1" + }, + { + "input": "NICKELFEST #1 - DAY TWO", + "output": "nickelfest #1" + }, + { + "input": "NICKELFEST #1 - THREE DAY PASS!", + "output": "nickelfest #1" + }, + { + "input": "NIGHTS IN BLACK LEATHER", + "output": "nights in black leather" + }, + { + "input": "SPRING BREAKERS", + "output": "spring breakers" + }, + { + "input": "SURVIVING EDGED WEAPONS", + "output": "surviving edged weapons" + }, + { + "input": "SWEET BABY CHARLIE aka THE SADIST", + "output": "the sadist" + }, + { + "input": "THE CRAZIES", + "output": "the crazies" + }, + { + "input": "THE FIFTH CORD", + "output": "fifth cord" + }, + { + "input": "THE FOURTH MAN", + "output": "fourth man" + }, + { + "input": "THE INCREDIBLE SHRINKING MAN", + "output": "incredible shrinking man" + }, + { + "input": "THE LAST AMERICAN VIRGIN", + "output": "last american virgin" + }, + { + "input": "THE LEGEND OF THE STARDUST BROTHERS", + "output": "legend of the stardust brothers" + }, + { + "input": "THE MANITOU", + "output": "the manitou" + }, + { + "input": "TRANSCENDING DIMENSIONS", + "output": "transcending dimensions" + }, + { + "input": "TRAPEZE", + "output": "trapeze" + }, + { + "input": "WHO KILLED CAPTAIN ALEX?", + "output": "who killed captain alex" + }, + { + "input": "WOLF GUY", + "output": "wolf guy" + }, + { + "input": "ZARDOZ", + "output": "zardoz" + }, + { + "input": "49th Parallel", + "output": "49th parallel" + }, + { + "input": "Black British Film, TV and Music", + "output": "black british film tv music" + }, + { + "input": "The Bench x Haft Cinema: Hope Faces Defeat and Invents Possibility", + "output": "hope faces defeat invents possibility" } ]