(ns buchdesmonats.sources.lovelybooks (:require [net.cgrand.enlive-html :as html] [clojure.string :as str])) (defn encode-url-part [part] (java.net.URLEncoder/encode part "UTF-8")) (defn encode-url [url] (let [parts (map encode-url-part (re-find #"\/autor\/([^/]+)\/([^/]+)\/?" url)) author (nth parts 1) book-title (nth parts 2)] (str "https://lovelybooks.de/autor/" author "/" book-title))) (defn find-cover-image [url] (let [encoded-url (encode-url url) src (-> (html/html-resource (java.net.URL. encoded-url)) (html/select [:img.ResponsiveImage.BookCover]) first (get-in [:attrs :srcset]) (str/split #" "))] (last (filter #(re-matches #"http.+\.jpg" %) src))))