22 lines
784 B
Clojure
22 lines
784 B
Clojure
|
(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))))
|