Add config

This commit is contained in:
Andros Fenollosa 2019-08-02 00:01:34 +02:00
parent 334ba97af9
commit 75d064d2a6
3 changed files with 56 additions and 58 deletions

View File

@ -1,44 +1,11 @@
# isahn # isahn
FIXME: description
## Installation ## Installation
Download from http://example.com/FIXME.
cp config-example.edn config.edn
## Usage ## Usage
FIXME: explanation
$ java -jar isahn-0.1.0-standalone.jar [args] $ java -jar isahn-0.1.0-standalone.jar [args]
## Options
FIXME: listing of options this app accepts.
## Examples
...
### Bugs
...
### Any Other Sections
### That You Think
### Might be Useful
## License
Copyright © 2019 FIXME
This program and the accompanying materials are made available under the
terms of the Eclipse Public License 2.0 which is available at
http://www.eclipse.org/legal/epl-2.0.
This Source Code may also be made available under the following Secondary
Licenses when the conditions for such availability set forth in the Eclipse
Public License, v. 2.0 are satisfied: GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or (at your
option) any later version, with the GNU Classpath Exception which is available
at https://www.gnu.org/software/classpath/license.html.

View File

@ -6,6 +6,8 @@
:dependencies [ :dependencies [
; Clojure ; Clojure
[org.clojure/clojure "1.10.0"] [org.clojure/clojure "1.10.0"]
; Get config from .env
[yogthos/config "1.1.4"]
; Client HTTP ; Client HTTP
[clj-http "3.10.0"] [clj-http "3.10.0"]
; Parse JSON ; Parse JSON

View File

@ -1,40 +1,69 @@
(ns isahn.core (ns isahn.core
(:require (:require
[config.core :refer [env]]
[clojure.java.io :as io]
[clj-http.client :as client] [clj-http.client :as client]
[cheshire.core :refer :all] [cheshire.core :refer :all]
) )
(:gen-class)) (:gen-class))
" VARIABLES "
" URL send for Telegram "
(def url_telegram_send (str "https://api.telegram.org/" (:bot_token env) "/sendMessage"))
" URLs from API Hacker News " " URLs from API Hacker News "
(def all_stories "https://hacker-news.firebaseio.com/v0/topstories.json") (def url_all_stories "https://hacker-news.firebaseio.com/v0/topstories.json")
" Min score "
(def min_score (:min_score env))
" Now unixtime "
(def now (quot (System/currentTimeMillis) 1000))
" 24h in unixtime "
(def unixtime24h 86400)
" Now - 24h "
(def min_time (- now unixtime24h))
" Path file save history "
(def path_history "isahn_history.json")
" FUNCTIONS "
(defn one_story (defn one_story
" Get url from item "
[id] [id]
(str "https://hacker-news.firebaseio.com/v0/item/" id ".json")) (str "https://hacker-news.firebaseio.com/v0/item/" id ".json"))
" Min score " (defn get_all_stories
(def min_score 600) " 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))
(defn filter_stories
[stories]
" Filter created less 24h "
(def stories_24h (filter #(> (get-in % ["time"]) min_time) stories))
" Filter with score min_score "
(filter #(> (get-in % ["score"]) min_score) stories_24h))
(def now (quot (System/currentTimeMillis) 1000))
(def unixtime24h 86400)
(defn -main (defn -main
"Main execution" "Main execution"
[& args] []
" Get all ids stories" ;; (def stories_top (filter_stories (get_all_stories url_all_stories)))
(def ids_stories (parse-string (:body (client/get all_stories {:accept :json})))) (def history-file (parse-string (io/file path_history)))
(prn (slurp data-file))
" Get all API urls stories " ;https://stackoverflow.com/questions/7756909/in-clojure-1-3-how-to-read-and-write-a-file
(def urls_stories (map #(one_story %) ids_stories)) ;; (doall (iterate #((client/post url_telegram_send {:basic-auth ["user" "pass"]
;; :body (generate-string {
" Get all data stories " ;; :chat_id (:chat env)
(def stories (map #(parse-string (:body (client/get % {:accept :json}))) urls_stories)) ;; :text (str (get-in % ["title"]) ": " (get-in % ["url"]))
;; :disable_notification true
" Filter created less 24h " ;; })
(def stories_24h (filter #(> (get-in % ["time"]) (- now unixtime24h)) stories)) ;; :content-type :json
;; :accept :json})) stories_top))
" Filter with score min_score "
(def stories_top (filter #(> (get-in % ["score"]) min_score) stories_24h))
(prn stories_top)
) )