aboutsummaryrefslogtreecommitdiff
path: root/src/dionysus/blacklist.clj
diff options
context:
space:
mode:
authorTim <contact@bytim.eu>2025-11-01 17:36:48 +0100
committerTim <contact@bytim.eu>2025-11-01 17:36:48 +0100
commit32ee50f0f6f53f8d5dea3bf159be3f65974c4b7b (patch)
treec317610f1a275936baefae2efeab360befbb9950 /src/dionysus/blacklist.clj
Initial commit
Diffstat (limited to 'src/dionysus/blacklist.clj')
-rw-r--r--src/dionysus/blacklist.clj36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/dionysus/blacklist.clj b/src/dionysus/blacklist.clj
new file mode 100644
index 0000000..6d94ac3
--- /dev/null
+++ b/src/dionysus/blacklist.clj
@@ -0,0 +1,36 @@
+(ns dionysus.blacklist
+ (:require [duratom.core :as duratom]
+ [dionysus.spotify :as dspotify]))
+
+(def blacklist (duratom/duratom :local-file
+ :file-path "./blacklist.edn"
+ :init []))
+
+(defn add [share-url]
+ (when-let [parsed-url (dspotify/parse-share-url share-url)]
+ (swap! blacklist conj parsed-url)))
+
+(defn change [index new-share-url]
+ (when-let [parsed-url (dspotify/parse-share-url new-share-url)]
+ (swap! blacklist assoc index parsed-url)))
+
+(defn delete [index]
+ (when (and (not (neg? index))
+ (< index (.length @blacklist)))
+ (swap! blacklist (fn [coll]
+ (->> coll
+ (keep-indexed #(when (not= %1 index) %2))
+ vec)))))
+
+(defn on-blacklist? [track-id]
+ (let [artist-ids (->> (dspotify/get-track! track-id)
+ :artists
+ (map :id))]
+ (or (->> @blacklist
+ (filter #(and (= (:type %) "track") (= (:id %) track-id)))
+ seq
+ some?)
+ (->> @blacklist
+ (filter #(and (= (:type %) "artist") (not= -1 (.indexOf artist-ids (:id %)))))
+ seq
+ some?))))