Update comments
This commit is contained in:
		@@ -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)))
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user