1 package net.pterodactylus.rhynodge.filters.webpages.savoy
3 import com.fasterxml.jackson.databind.JsonNode
4 import com.fasterxml.jackson.databind.ObjectMapper
5 import org.jsoup.nodes.Document
6 import java.time.LocalDateTime
7 import java.time.format.DateTimeFormatter
11 fun getMovies(document: Document) =
12 document.select("body script#flebbe-state")
13 .dataNodes().joinToString("").unescape()
14 .let(objectMapper::readTree)
15 .get("G./api/v1/de/config?").get("body").asText()
16 .let(objectMapper::readTree)
18 .map { it.extractMovie() }
21 private fun String.unescape() = this
28 private fun JsonNode.extractMovie() =
29 this@extractMovie.get("performances")
31 val begin = LocalDateTime.parse(performance.get("begin").asText(), dateFormat)
32 val slug = performance.get("slug").asText()
33 val link = "https://savoy.premiumkino.de/vorstellung/${slug}/${String.format("%tY%<tm%<td", begin)}/${String.format("%tH%<tM", begin)}/${performance.get("crypt_id").asText()}"
34 Performance(begin, performance.get("release_type").asText(), link)
36 .let { Movie(get("name").asText(), get("poster").get("original").asText().fixImageUrl(), get("description_long").asText(), it) }
40 private val objectMapper = ObjectMapper()
41 private val dateFormat = DateTimeFormatter.ISO_LOCAL_DATE_TIME
43 private fun String.fixImageUrl() = replace(Regex("^/files"), "https://cdn.premiumkino.de")