Prepare for Config parsing and config extension

This commit is contained in:
Felisp 2024-01-01 14:58:05 +01:00
parent 501a50cb55
commit 5551be7012
2 changed files with 17 additions and 10 deletions

View file

@ -3,6 +3,7 @@
{:port 6969 {:port 6969
:default-board "/mlp/" ;Board to be used when no board=x param given :default-board "/mlp/" ;Board to be used when no board=x param given
:board-disabled-message "This board is not enabled for feed generation.\n\nYou can contact me here: [contact]" :board-disabled-message "This board is not enabled for feed generation.\n\nYou can contact me here: [contact]"
:enable-board-listing true ;Whether to show list of enabled boards in /boards
;; /$board/catalog.json will be appended to this link ;; /$board/catalog.json will be appended to this link
:target "https://api.4chan.org" :target "https://api.4chan.org"
:boards-defaults {:refresh-rate 300 :boards-defaults {:refresh-rate 300

View file

@ -13,20 +13,26 @@
;; along with this program. If not, see <https://www.gnu.org/licenses/>. ;; along with this program. If not, see <https://www.gnu.org/licenses/>.
(ns rss-thread-watch.core (ns rss-thread-watch.core
(:require [ring.adapter.jetty :as jetty] (:require [clojure.java.io :As io]
[ring.adapter.jetty :as jetty]
[ring.middleware.params :as rp] [ring.middleware.params :as rp]
[rss-thread-watch.watcher :as watcher] [rss-thread-watch.watcher :as watcher]
[rss-thread-watch.feed-generator :as feed]) [rss-thread-watch.feed-generator :as feed])
(:gen-class)) (:gen-class))
;; Internal default config ;; Internal default config
(def CONFIG (def CONFIG-DEFAULT
"Internal default config" "Internal default config"
{:target "https://api.4chan.org/mlp/catalog.json" ;Where to download catalog from {:port 6969
:starting-page 7 ;only monitor threads from this from this page and up :default-board "/mlp/"
:refresh-delay (* 60 5) ;Redownload catalog every 5 mins :enable-board-listing true
:port 6969 ;Listen on 6969 :board-disabled-message "This board is not enabled for feed generation.\n\nYou can contact me here: [contact]"
}) :target "https://api.4chan.org"
:boards-defaults {:refresh-rate 300
:starting-page 7
:default-chod 94}
:boards-enabled {"/mlp/" {}
"/g/" {}}})
(defn set-interval (defn set-interval
"Calls function every ms" "Calls function every ms"
@ -36,14 +42,14 @@
(println "Recached") (println "Recached")
(catch Exception e (catch Exception e
(binding [*out* *err*] (binding [*out* *err*]
(println "Error while updating cache: " e ", retrying in 5 minutes")))) (println "Error while updating cache: " e ", retrying in " (/ ms 1000 60) " minutes"))))
(Thread/sleep ms))))) (Thread/sleep ms)))))
(defn -main (defn -main
"Entry point, starts webserver" "Entry point, starts webserver"
[& args] [& args]
(println "Starting on port: " (:port CONFIG) ;; Parse and validate config
"\nGonna recache every: " (:refresh-delay CONFIG) "s") ;; Think of a way to start repeated download for every catalog efficiently
(set-interval (fn [] (set-interval (fn []
(println "Starting cache update") (println "Starting cache update")
(watcher/update-thread-cache! (:target CONFIG) (:starting-page CONFIG))) (watcher/update-thread-cache! (:target CONFIG) (:starting-page CONFIG)))