#!/usr/bin/env bb (require '[babashka.curl :as curl] '[cheshire.core :as json]) (import 'java.time.format.DateTimeFormatter 'java.time.LocalDateTime) ;; The base/main currency in your ledger (def base-sym "AUD") ;; Get your API key at: ;; https://free.currencyconverterapi.com (def api-key "YOUR-API-KEY-HERE") (defn ldate [] (let [date (LocalDateTime/now) formatter (DateTimeFormatter/ofPattern "yyyy-MM-dd HH:mm:ss")] (.format date formatter))) (defn ep [sym] (str "https://free.currconv.com/api/v7/convert" "?apiKey=" api-key "&q=" sym "&compact=y")) (defn to-base [sym base] (str sym "_" base)) (defn get-url [url] (-> (curl/get url {:headers {"Accept" "application/json"}}) :body (json/parse-string true))) (defn to-ledger [x sym base] (let [q (keyword (to-base sym base)) v (-> x q :val)] (str (ldate) " " sym " " v " " base))) (let [[sym] *command-line-args*] (when (empty? sym) (println "Usage: ") (System/exit 1)) (-> sym (to-base base-sym) ep get-url (to-ledger sym base-sym) println))