Hello,
I did some experiments to make a web-app in the future.
Can I improve this one
(ns paintings.core
(:require [cheshire.core :as json]))
(def slurp-memo (memoize slurp))
(defn read-all-data []
(json/parse-string
(slurp-memo "https://www.rijksmuseum.nl/api/nl/collection?key=14OGzuak&format=json&type=schilderij&toppieces=True")
true))
(defn filter-artObjects [data]
(get data :artObjects))
(defn filter-all-objectNumbers [data]
(map :objectNumber data))
(defn ask-for-image-data [objectNumbers]
(for [number objectNumbers]
(-> (json/parse-string
(slurp-memo (str "https://www.rijksmuseum.nl/api/nl/collection/" number "/tiles?key=14OGzuak&format=json"))
true)
(assoc :object-number number))))
(defn extract-url-and-size [image]
(let [data (select-keys image [:width :height])
url (get-in image [:tiles 0 :url])]
(assoc data :url url)))
(defn filter-image-url [imagedata]
(-> imagedata
:levels
(as-> levels (sort-by :name levels))
(last)
(extract-url-and-size)
(assoc :object-number (get imagedata :object-number))))
(->> (read-all-data)
(filter-artObjects)
(filter-all-objectNumbers)
(ask-for-image-data)
(map filter-image-url))