diff --git a/config-example.edn b/config-example.edn index b98fd82..2d1294d 100644 --- a/config-example.edn +++ b/config-example.edn @@ -2,4 +2,5 @@ :min_score 600 :chat "" :bot_token "" - } + :run_every_miliseconds 3600000 +} diff --git a/project.clj b/project.clj index 932b7a2..592e47a 100644 --- a/project.clj +++ b/project.clj @@ -12,7 +12,13 @@ [clj-http "3.10.0"] ; Parse JSON [cheshire "5.8.1"] - ] + ] + :plugins [ + ; Dev Tools + [lein-auto "0.1.3"] + [lein-kibit "0.1.7"] + [lein-cljfmt "0.6.4"] + ] :main ^:skip-aot isahn.core :target-path "target/%s" :profiles {:uberjar {:aot :all}}) diff --git a/src/isahn/core.clj b/src/isahn/core.clj index 0f2dfff..18d942b 100644 --- a/src/isahn/core.clj +++ b/src/isahn/core.clj @@ -3,11 +3,9 @@ [config.core :refer [env]] [clojure.java.io :as io] [clj-http.client :as client] - [cheshire.core :refer :all] - ) + [cheshire.core :refer :all]) (:gen-class)) - " VARIABLES " " URL send for Telegram " @@ -25,7 +23,7 @@ " 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_ids (map #(:id %) history)) +(def history_ids (map :id history)) " FUNCTIONS " @@ -40,17 +38,26 @@ " 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)) + (def urls_stories (map one_story ids_stories)) " Get all data stories " (map #(parse-string (:body (client/get % {:accept :json}))) urls_stories)) (defn lazy-contains? [col key] (some #{key} col)) +(defn set-interval [callback ms] + " Run function every ms " + (future (while true (do (Thread/sleep ms) (callback))))) -(defn save_history - [] -(prn "salvado") +(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))) + (prn history_all) + (prn (generate-string history_all)) + (with-open [w (clojure.java.io/writer path_history :append false)] + (.write w (generate-string history_all))) ) (defn filter_stories @@ -68,19 +75,25 @@ (defn send_stories_telegram [stories] " Send stories by Telegram Channel " - (doall (iterate #((client/post url_telegram_send {:basic-auth ["user" "pass"] - :body (generate-string { - :chat_id (:chat env) + (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 - }) + :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 (add_history ({"id" 45} {"id" 55}))) + (prn stories_top) + ) + (defn -main "Main execution" [] - - (def stories_top (filter_stories (get_all_stories url_all_stories))) - (prn stories_top) - ) + " Run first time " + (check_stories) + " Run every :run_every_miliseconds " + (set-interval check_stories (:run_every_miliseconds env)))