From c7383a6a5ace4f13b7a6f36100dc98e8c3a70cba Mon Sep 17 00:00:00 2001 From: Andros Fenollosa Date: Sun, 4 Aug 2019 11:00:35 +0200 Subject: [PATCH] Update format --- README.md | 24 +++++++++++++++++-- src/isahn/core.clj | 60 +++++++++++++++++++++++----------------------- 2 files changed, 52 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index b797770..8925c69 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,30 @@ ## Installation - +``` sh cp config-example.edn config.edn +``` ## Usage - $ java -jar isahn-0.1.0-standalone.jar [args] +``` sh +java -jar isahn-[version]-standalone.jar +``` +## Check format + +``` sh +lein cljfmt check +``` + +## Check format + +``` sh +lein cljfmt check +``` + +## Linter + +``` sh +lein auto kibit +``` diff --git a/src/isahn/core.clj b/src/isahn/core.clj index 82aa9d2..8d9b3bc 100644 --- a/src/isahn/core.clj +++ b/src/isahn/core.clj @@ -3,10 +3,10 @@ [config.core :refer [env]] [clojure.java.io :as io] [clj-http.client :as client] - [cheshire.core :refer :all]) + [cheshire.core :as json]) (:gen-class)) -" VARIABLES " +;; VARIABLES " URL send for Telegram " (def url_telegram_send (str "https://api.telegram.org/" (:bot_token env) "/sendMessage")) @@ -22,10 +22,10 @@ (def min_time (- now unixtime24h)) " Path file save history " (def path_history "isahn_history.json") -(def history (if (.exists (io/file path_history)) (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)) -" FUNCTIONS " +;; FUNCTIONS (defn one_story " Get url from item " @@ -35,56 +35,56 @@ (defn get_all_stories " Get all stories " [url_all_stories] - " Get all ids stories" - (def ids_stories (parse-string (:body (client/get url_all_stories {:accept :json})))) - " Get all API urls stories " - (def urls_stories (map one_story ids_stories)) - " Get all data stories " - (map #(parse-string (:body (client/get % {:accept :json}))) urls_stories)) + " Get all ids stories " + (let [ids_stories (json/parse-string (:body (client/get url_all_stories {:accept :json})))] + " Get all API urls stories " + (let [urls_stories (map one_story ids_stories)] + " Get all data stories " + (map #(json/parse-string (:body (client/get % {:accept :json}))) urls_stories)))) (defn lazy-contains? [col key] (some #{key} col)) -(defn set-interval [callback ms] +(defn set-interval " Run function every ms " + [callback ms] (future (while true (do (Thread/sleep ms) (callback))))) (defn add_history " Add to file history news_stories " [news_stories] - (def history_news_ids (concat history_ids (map #(get-in % ["id"]) news_stories))) - (def history_all (map #(assoc {} :id %) (vec history_news_ids))) - (with-open [w (clojure.java.io/writer path_history :append false)] - (.write w (generate-string history_all))) - ) + (let [history_news_ids (concat history_ids (map #(get-in % ["id"]) news_stories)) + history_all (map #(assoc {} :id %) (vec history_news_ids))] + (with-open [w (clojure.java.io/writer path_history :append false)] + (.write w (json/generate-string history_all))))) (defn filter_stories " Filter stories by last 24h, remove histories and lower score " [stories] " Filter created less 24h " - (def stories_24h (filter #(> (get-in % ["time"]) min_time) stories)) + (let [stories_24h (filter #(> (get-in % ["time"]) min_time) stories)] - " Filter history " - (def stories_without_histories (filter #(not (lazy-contains? history_ids (get-in % ["id"]))) stories_24h)) + " Filter history " + (let [stories_without_histories (filter #(not (lazy-contains? history_ids (get-in % ["id"]))) stories_24h)] - " Filter with score min_score " - (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 - [stories] " Send stories by Telegram Channel " - (doall (iterate #((client/post url_telegram_send {:body (generate-string {:chat_id (:chat env) - :text (str (get-in % ["title"]) ": " (get-in % ["url"])) - :disable_notification true}) - :content-type :json - :accept :json})) stories))) + [stories] + (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"])) + :disable_notification true}) + :content-type :json + :accept :json})) stories)))) (defn check_stories " Check news stories and send message to Telegram " [] - (def stories_top (filter_stories (get_all_stories url_all_stories))) - (doall (add_history stories_top)) - (doall (send_stories_telegram stories_top))) + (let [stories_top (filter_stories (get_all_stories url_all_stories))] + (doall (add_history stories_top)) + (doall (send_stories_telegram stories_top)))) (defn -main "Main execution"