added support for filtering out content
This commit is contained in:
parent
9ed32f147c
commit
6dab0a4ebd
2 changed files with 12 additions and 2 deletions
|
@ -37,7 +37,10 @@ the bot will post the timeline from the specified Twitter/Tumblr accounts and RS
|
||||||
:api_url "https://botsin.space/api/v1/"
|
:api_url "https://botsin.space/api/v1/"
|
||||||
:max-post-length 300
|
:max-post-length 300
|
||||||
;; optional signature for posts
|
;; optional signature for posts
|
||||||
:signature "#newsbot"}}
|
:signature "#newsbot"
|
||||||
|
;; optional content filter regexes
|
||||||
|
;; any posts matching the regexes will be filtered out
|
||||||
|
:content-filters [".*bannedsite.*"]}}
|
||||||
```
|
```
|
||||||
|
|
||||||
* the bot looks for `config.edn` at its relative path by default, an alternative location can be specified either using the `MASTODON_BOT_CONFIG` environment variable or passing the path to config as an argument
|
* the bot looks for `config.edn` at its relative path by default, an alternative location can be specified either using the `MASTODON_BOT_CONFIG` environment variable or passing the path to config as an argument
|
||||||
|
|
|
@ -20,6 +20,11 @@
|
||||||
|
|
||||||
(def config (-> (find-config) fs/readFileSync str edn/read-string))
|
(def config (-> (find-config) fs/readFileSync str edn/read-string))
|
||||||
|
|
||||||
|
(def content-filter-regexes (mapv re-pattern (-> config :mastodon :content-filters)))
|
||||||
|
|
||||||
|
(defn blocked-content? [text]
|
||||||
|
(boolean (some #(re-matches % text) content-filter-regexes)))
|
||||||
|
|
||||||
(def max-post-length (or (-> config :mastodon :max-post-length) 300))
|
(def max-post-length (or (-> config :mastodon :max-post-length) 300))
|
||||||
|
|
||||||
(def mastodon-client (or (some-> config :mastodon clj->js mastodon.)
|
(def mastodon-client (or (some-> config :mastodon clj->js mastodon.)
|
||||||
|
@ -72,7 +77,9 @@
|
||||||
(.then (.get mastodon-client "timelines/home" #js {}) #(-> % .-data js->edn callback)))
|
(.then (.get mastodon-client "timelines/home" #js {}) #(-> % .-data js->edn callback)))
|
||||||
|
|
||||||
(defn post-items [last-post-time items]
|
(defn post-items [last-post-time items]
|
||||||
(doseq [{:keys [text media-links]} (filter #(> (:created-at %) last-post-time) items)]
|
(doseq [{:keys [text media-links]} (->> items
|
||||||
|
(remove #(blocked-content? (:text %)))
|
||||||
|
(filter #(> (:created-at %) last-post-time)))]
|
||||||
(if media-links
|
(if media-links
|
||||||
(post-status-with-images text media-links)
|
(post-status-with-images text media-links)
|
||||||
(post-status text))))
|
(post-status text))))
|
||||||
|
|
Reference in a new issue