Update comments

This commit is contained in:
Andros Fenollosa 2019-08-04 11:08:33 +02:00
parent c7383a6a5a
commit b774884cce

View File

@ -8,19 +8,19 @@
;; VARIABLES ;; VARIABLES
" URL send for Telegram " ;; URL send for Telegram
(def url_telegram_send (str "https://api.telegram.org/" (:bot_token env) "/sendMessage")) (def url_telegram_send (str "https://api.telegram.org/" (:bot_token env) "/sendMessage"))
" URLs from API Hacker News " ;; URLs from API Hacker News
(def url_all_stories "https://hacker-news.firebaseio.com/v0/topstories.json") (def url_all_stories "https://hacker-news.firebaseio.com/v0/topstories.json")
" Min score " ;; Min score
(def min_score (:min_score env)) (def min_score (:min_score env))
" Now unixtime " ;; Now unixtime
(def now (quot (System/currentTimeMillis) 1000)) (def now (quot (System/currentTimeMillis) 1000))
" 24h in unixtime " ;; 24h in unixtime
(def unixtime24h 86400) (def unixtime24h 86400)
" Now - 24h " ;; Now - 24h
(def min_time (- now unixtime24h)) (def min_time (- now unixtime24h))
" Path file save history " ;; Path file save history
(def path_history "isahn_history.json") (def path_history "isahn_history.json")
(def history (if (.exists (io/file path_history)) (json/parse-string (slurp (io/file path_history)) true) (str ""))) (def history (if (.exists (io/file path_history)) (json/parse-string (slurp (io/file path_history)) true) (str "")))
(def history_ids (map :id history)) (def history_ids (map :id history))
@ -35,23 +35,23 @@
(defn get_all_stories (defn get_all_stories
" Get all stories " " Get all stories "
[url_all_stories] [url_all_stories]
" Get all ids stories " ;; Get all ids stories
(let [ids_stories (json/parse-string (:body (client/get url_all_stories {:accept :json})))] (let [ids_stories (json/parse-string (:body (client/get url_all_stories {:accept :json})))
" Get all API urls stories " urls_stories (map one_story ids_stories)]
(let [urls_stories (map one_story ids_stories)] ;; Get all API urls stories
" Get all data stories " ;; Get all data stories
(map #(json/parse-string (:body (client/get % {:accept :json}))) urls_stories)))) (map #(json/parse-string (:body (client/get % {:accept :json}))) urls_stories)))
(defn lazy-contains? [col key] (defn lazy-contains? [col key]
(some #{key} col)) (some #{key} col))
(defn set-interval (defn set-interval
" Run function every ms " "Run function every ms"
[callback ms] [callback ms]
(future (while true (do (Thread/sleep ms) (callback))))) (future (while true (do (Thread/sleep ms) (callback)))))
(defn add_history (defn add_history
" Add to file history news_stories " "Add to file history news_stories"
[news_stories] [news_stories]
(let [history_news_ids (concat history_ids (map #(get-in % ["id"]) news_stories)) (let [history_news_ids (concat history_ids (map #(get-in % ["id"]) news_stories))
history_all (map #(assoc {} :id %) (vec history_news_ids))] history_all (map #(assoc {} :id %) (vec history_news_ids))]
@ -59,19 +59,18 @@
(.write w (json/generate-string history_all))))) (.write w (json/generate-string history_all)))))
(defn filter_stories (defn filter_stories
" Filter stories by last 24h, remove histories and lower score " "Filter stories by last 24h, remove histories and lower score"
[stories] [stories]
" Filter created less 24h " ;; Filter created less 24h
(let [stories_24h (filter #(> (get-in % ["time"]) min_time) stories)] (let [stories_24h (filter #(> (get-in % ["time"]) min_time) stories)
;; Filter history
stories_without_histories (filter #(not (lazy-contains? history_ids (get-in % ["id"]))) stories_24h)]
" Filter history " ;; Filter with score min_score
(let [stories_without_histories (filter #(not (lazy-contains? history_ids (get-in % ["id"]))) stories_24h)] (filter #(> (get-in % ["score"]) min_score) stories_without_histories)))
" Filter with score min_score "
(filter #(> (get-in % ["score"]) min_score) stories_without_histories))))
(defn send_stories_telegram (defn send_stories_telegram
" Send stories by Telegram Channel " "Send stories by Telegram Channel"
[stories] [stories]
(if (not-empty stories) (doall (iterate #((client/post url_telegram_send {:body (json/generate-string {:chat_id (:chat env) (if (not-empty stories) (doall (iterate #((client/post url_telegram_send {:body (json/generate-string {:chat_id (:chat env)
:text (str (get-in % ["title"]) ": " (get-in % ["url"])) :text (str (get-in % ["title"]) ": " (get-in % ["url"]))
@ -89,7 +88,7 @@
(defn -main (defn -main
"Main execution" "Main execution"
[] []
" Run first time " ;; Run first time
(check_stories) (check_stories)
" Run every :run_every_miliseconds " ;; Run every :run_every_miliseconds
(set-interval check_stories (:run_every_miliseconds env))) (set-interval check_stories (:run_every_miliseconds env)))