--- /dev/null
+package net.pterodactylus.rhynodge.filters.webpages.savoy
+
+import net.pterodactylus.rhynodge.Filter
+import net.pterodactylus.rhynodge.State
+import net.pterodactylus.rhynodge.states.HtmlState
+import org.apache.log4j.Logger
+
+/**
+ * [Filter] implementation that creates a list of movies running at the
+ * Savoy theatre in Hamburg.
+ */
+class SavoyTicketsFilter : Filter {
+
+ override fun filter(state: State) =
+ requireNotNull(state as? HtmlState) { "state must be HTML" }
+ .document()
+ .let(movieExtractor::getMovies)
+ .also { logger.debug("Parsed Movies: $it") }
+ .let { MovieState(it, emptySet(), false) }
+
+}
+
+private val logger = Logger.getLogger(SavoyTicketsFilter::class.java)
+private val movieExtractor = MovieExtractor()