diff options
| author | Tim <contact@bytim.eu> | 2025-11-01 17:36:48 +0100 |
|---|---|---|
| committer | Tim <contact@bytim.eu> | 2025-11-01 17:36:48 +0100 |
| commit | 32ee50f0f6f53f8d5dea3bf159be3f65974c4b7b (patch) | |
| tree | c317610f1a275936baefae2efeab360befbb9950 /src/dionysus/blacklist.clj | |
Initial commit
Diffstat (limited to 'src/dionysus/blacklist.clj')
| -rw-r--r-- | src/dionysus/blacklist.clj | 36 |
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?)))) |
