Merge pull request 'thread-link-bugfix' (#29) from thread-link-bugfix into stable

Reviewed-on: https://git.treebrary.org/Treebrary.org/rss-thread-watcher/pulls/29
This commit is contained in:
Felisp 2024-08-20 22:47:05 +02:00
commit d0b59f0507
4 changed files with 16 additions and 11 deletions

View file

@ -1,4 +1,4 @@
(defproject rss-thread-watch "0.4.1-SNAPSHOT" (defproject rss-thread-watch "0.4.2-SNAPSHOT"
:description "RSS based thread watcher" :description "RSS based thread watcher"
:url "http://example.com/FIXME" :url "http://example.com/FIXME"
:license {:name "AGPL-3.0-only" :license {:name "AGPL-3.0-only"

View file

@ -23,7 +23,7 @@
[rss-thread-watch.utils :as u]) [rss-thread-watch.utils :as u])
(:gen-class)) (:gen-class))
(def VERSION "0.4.1") (def VERSION "0.4.2")
;; Internal default config ;; Internal default config
(def CONFIG-DEFAULT (def CONFIG-DEFAULT
@ -83,7 +83,7 @@
'(:boards-enabled) '(:boards-enabled)
(fn [mp] (fn [mp]
(u/fmap (fn [k v] (u/fmap (fn [k v]
(u/map-apply-defaults v defaults)) (assoc (u/map-apply-defaults v defaults) :name k))
mp))) mp)))
:boards-defaults))) :boards-defaults)))

View file

@ -84,10 +84,9 @@
(map guid-fn actuall-matches))) (map guid-fn actuall-matches)))
(defn thread-to-rss-item (defn thread-to-rss-item
"If I wasnt retarded I could have made the cached version look like "Converts cached thread item to feed item which can be serialized into RSS"
rss item already but what can you do. I'll refactor I promise, I just need this done ASAP" ;Todo: do what the docstring says [t host board]
[t] ;TODO: oh Luna the hardcodes ;;RESUME (let [link-url (str host board (:no t))]
(let [link-url (str "https://boards.4chan.org/mlp/thread/" (:no t))] ; jesus, well I said only /mlp/ is supported now so fuck it
{:title (format "%.2f%% - %s" (:chod t) (:title t)) ;TODO: Generate link from the target somehow, or just include it from API response {:title (format "%.2f%% - %s" (:chod t) (:title t)) ;TODO: Generate link from the target somehow, or just include it from API response
;; :url link-url <- this is supposed to be for images according to: https://cyber.harvard.edu/rss/rss.html ;; :url link-url <- this is supposed to be for images according to: https://cyber.harvard.edu/rss/rss.html
:description (format "The thread: '%s' has %.2f%% chance of dying" (:title t) (:chod t)) :description (format "The thread: '%s' has %.2f%% chance of dying" (:title t) (:chod t))
@ -96,13 +95,16 @@
(defn generate-feed (defn generate-feed
"Generates feed from matching items" "Generates feed from matching items"
[query-vec chod-treshold repeat? cache] [query-vec chod-treshold repeat? cache board-config]
(let [items (filter-chod-posts query-vec chod-treshold repeat? cache) (let [items (filter-chod-posts query-vec chod-treshold repeat? cache)
head {:title "RSS Thread watcher v0.4.1" ;TODO: hardcoded string here, remake to reference to config.clj head {:title "RSS Thread watcher v0.4.2" ;TODO: hardcoded string here, remake to reference to config.clj
:link "https://tools.treebrary.org/thread-watcher/feed.xml" :link "https://tools.treebrary.org/thread-watcher/feed.xml"
:feed-url "https://tools.treebrary.org/thread-watcher/feed.xml" :feed-url "https://tools.treebrary.org/thread-watcher/feed.xml"
:description "RSS based thread watcher"} :description "RSS based thread watcher"}
body (map thread-to-rss-item items)] body (map #(thread-to-rss-item
%1
(get board-config :target)
(get board-config :name)) items)]
(rss/channel-xml head body))) (rss/channel-xml head body)))
(defn http-handler (defn http-handler
@ -130,6 +132,7 @@
60 (Integer/parseInt chod)) 60 (Integer/parseInt chod))
(catch Exception e (catch Exception e
94))) 94)))
board-config (get-in @watcher/GLOBAL-CONFIG [:boards-enabled board])
cache @watcher/chod-threads-cache] cache @watcher/chod-threads-cache]
(println "\n\nRCVD: " rqst) (println "\n\nRCVD: " rqst)
;; (println rqst) ;; (println rqst)
@ -166,7 +169,7 @@
;; There shouldn't be any problems with this mime type but if there are ;; There shouldn't be any problems with this mime type but if there are
;; replace with "text/xml", or even better, get RSS reader that is not utter shit ;; replace with "text/xml", or even better, get RSS reader that is not utter shit
:header {"Content-Type" "application/rss+xml"} :header {"Content-Type" "application/rss+xml"}
:body (generate-feed queries real-chod repeat? (watcher/get-thread-data board @watcher/GLOBAL-CONFIG))}) :body (generate-feed queries real-chod repeat? (watcher/get-thread-data board @watcher/GLOBAL-CONFIG) board-config)})
(catch Exception e (catch Exception e
;; Ex-info has been crafted to match HTTP response body so we can send it ;; Ex-info has been crafted to match HTTP response body so we can send it
(if-let [caught (ex-data e)] (if-let [caught (ex-data e)]

View file

@ -47,6 +47,8 @@
(recur (rest remaining-threads) (recur (rest remaining-threads)
threads-total threads-total
(inc index) (inc index)
;; We have to somehow include URL which is a problem since the catalog does not contain any
;; I of course know how to craft it but the result will be kind of 4chan specific
(conj! ret {:title (or (:sub thread) ;We use thread title if thread has it (conj! ret {:title (or (:sub thread) ;We use thread title if thread has it
(:com thread) ;we use body if thread has it (:com thread) ;we use body if thread has it
"") ;Thread has neither, this prevents null pointer "") ;Thread has neither, this prevents null pointer