diff --git a/project.clj b/project.clj
index c818f2c..1b86d39 100644
--- a/project.clj
+++ b/project.clj
@@ -1,4 +1,4 @@
-(defproject rsspaper "1.2.0"
+(defproject rsspaper "1.2.1"
:description "RSSpaper"
:url "https://github.com/tanrax/RSSpaper"
:license {:name "EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0"
diff --git a/resources/themes/clojure/index.html b/resources/themes/clojure/index.html
index b6bb381..3b49936 100644
--- a/resources/themes/clojure/index.html
+++ b/resources/themes/clojure/index.html
@@ -7,7 +7,7 @@
-
+
diff --git a/resources/themes/dark/index.html b/resources/themes/dark/index.html
index 918ffe6..6011399 100644
--- a/resources/themes/dark/index.html
+++ b/resources/themes/dark/index.html
@@ -7,7 +7,7 @@
-
+
diff --git a/resources/themes/light/index.html b/resources/themes/light/index.html
index 08c227b..661ec33 100644
--- a/resources/themes/light/index.html
+++ b/resources/themes/light/index.html
@@ -7,7 +7,7 @@
-
+
diff --git a/resources/themes/sepia/index.html b/resources/themes/sepia/index.html
index 562af5f..f316461 100644
--- a/resources/themes/sepia/index.html
+++ b/resources/themes/sepia/index.html
@@ -7,7 +7,7 @@
-
+
diff --git a/src/rsspaper/feeds.clj b/src/rsspaper/feeds.clj
index 9cd34cf..5aebc55 100644
--- a/src/rsspaper/feeds.clj
+++ b/src/rsspaper/feeds.clj
@@ -35,20 +35,32 @@
;; Add in every article, all information from feed
(concat articles (map (fn [article] (assoc article :feed (:feed (update-in feed [:feed] dissoc :entries)))) (get-in feed [:feed :entries])))) [] feeds))
+
+(defn add-domain-to-relative-path
+ [url-complete url-relative]
+ ;; Converts a relative path to a path with its domain.
+ ;; /foo/boo/ -> example.com/foo/boo/
+ (let [is-relative (= (str (first url-relative)) "/")
+ url-elements (re-find #"(.+\/\/|www.)(.*?)\/.+" url-complete)
+ url-with-domain (if is-relative (str (get url-elements 1) (get url-elements 2) url-relative) url-relative)]
+ url-with-domain))
+
+
(defn add-cover-article
[articles]
;; Add cover to article search first image in description
;; Iterate every blog
(map (fn [article]
; User feedback
- (prn (str "Looking for cover image for article > " (:link article)))
+ (prn (str "Looking for cover image for article > " (:feed-url article)))
; Search cover image
- (let [url-article (:link article)
+ (let [url-article (add-domain-to-relative-path (:feed-url article) (:link article))
html (:body (client/get url-article {:insecure? true :throw-exceptions false}))
url-og-image (second (re-find #"].*?property=\"og:image(?::url)?\".*?content=\"(.*?)\".*?>|].*?content=\"(.*?)\".*?property=\"og:image(?::url)?\".*?>" html))
url-first-image (second (re-find #"[\s\S]+]+src=\"([^\">]+)\"|id=['\"] ?main ?['\"]>[\s\S]+]+src=\"([^\">]+)\"|class=['\"] ?main ?[\'\"]>[\s\S]+]+src=\"([^\">]+)\"" html))
images [url-og-image url-first-image]
- url-final-image (first (filter (fn [item] (not (nil? item))) images))]
+ url-valid (first (filter (fn [item] (not (nil? item))) images))
+ url-final-image (add-domain-to-relative-path url-article url-valid)]
(assoc article :cover url-final-image))) articles))
(defn order-published
@@ -60,22 +72,22 @@
[]
;; Get all feeds from config -> feeds
(->
- (reduce
- (fn [feeds feed-url]
- ; Read feed
- (let [feed (parse-url feed-url {:insecure? true :throw-exceptions false})]
- ; User feedback
- (prn (str "Reading RSS > " feed-url))
- ; Check is not null
- (if-not (nil? feed)
- ; Add feed
- (conj feeds feed)
- ; Alert fail
- (prn (str "Error with '" feed-url) "'"))))
- [] (:feeds config))
- zip-feeds-in-articles
- datetimes-to-unixtime
- filter-edition
- order-published
- add-cover-article
- add-datetimes-formatter))
+ (reduce
+ (fn [feeds feed-url]
+ ; Read feed
+ (let [feed (parse-url feed-url {:insecure? true :throw-exceptions false})]
+ ; User feedback
+ (prn (str "Reading RSS > " feed-url))
+ ; Check is not null
+ (if-not (nil? feed)
+ ; Add feed and add key feed original
+ (conj feeds (assoc feed :feed-url feed-url))
+ ; Alert fail
+ (prn (str "Error with '" feed-url) "'"))))
+ [] (:feeds config))
+ zip-feeds-in-articles
+ datetimes-to-unixtime
+ filter-edition
+ order-published
+ add-cover-article
+ add-datetimes-formatter))