First commit
This commit is contained in:
40
src/isahn/core.clj
Normal file
40
src/isahn/core.clj
Normal file
@ -0,0 +1,40 @@
|
||||
(ns isahn.core
|
||||
(:require
|
||||
[clj-http.client :as client]
|
||||
[cheshire.core :refer :all]
|
||||
)
|
||||
(:gen-class))
|
||||
|
||||
" URLs from API Hacker News "
|
||||
(def all_stories "https://hacker-news.firebaseio.com/v0/topstories.json")
|
||||
|
||||
(defn one_story
|
||||
[id]
|
||||
(str "https://hacker-news.firebaseio.com/v0/item/" id ".json"))
|
||||
|
||||
" Min score "
|
||||
(def min_score 600)
|
||||
|
||||
(def now (quot (System/currentTimeMillis) 1000))
|
||||
(def unixtime24h 86400)
|
||||
|
||||
(defn -main
|
||||
"Main execution"
|
||||
[& args]
|
||||
" Get all ids stories"
|
||||
(def ids_stories (parse-string (:body (client/get all_stories {:accept :json}))))
|
||||
|
||||
" Get all API urls stories "
|
||||
(def urls_stories (map #(one_story %) ids_stories))
|
||||
|
||||
" Get all data stories "
|
||||
(def stories (map #(parse-string (:body (client/get % {:accept :json}))) urls_stories))
|
||||
|
||||
" Filter created less 24h "
|
||||
(def stories_24h (filter #(> (get-in % ["time"]) (- now unixtime24h)) stories))
|
||||
|
||||
" Filter with score min_score "
|
||||
(def stories_top (filter #(> (get-in % ["score"]) min_score) stories_24h))
|
||||
|
||||
(prn stories_top)
|
||||
)
|
Reference in New Issue
Block a user