diff --git a/package.json b/package.json index 367a3ef..47bf0e3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mastodon-bot", - "version": "0.0.1", + "version": "0.0.2", "repository": "https://github.com/yogthos/mastodon-bot", "license": "MIT", "dependencies": { diff --git a/src/main/mastodon_bot/core.cljs b/src/main/mastodon_bot/core.cljs index caeb380..0eb8535 100755 --- a/src/main/mastodon_bot/core.cljs +++ b/src/main/mastodon_bot/core.cljs @@ -72,7 +72,7 @@ {:created-at (js/Date. created-at) :text (trim-text (str (chop-tail-media-url text media) (if (masto/append-screen-name? (mastodon-config config)) - ("\n - " screen_name) ""))) + (str "\n - " screen_name) ""))) :media-links (keep #(when (= (:type %) "photo") (:media_url_https %)) media)}) (defmulti parse-tumblr-post :type) diff --git a/src/main/mastodon_bot/mastodon_api.cljs b/src/main/mastodon_bot/mastodon_api.cljs index 90f314b..93d3dd3 100755 --- a/src/main/mastodon_bot/mastodon_api.cljs +++ b/src/main/mastodon_bot/mastodon_api.cljs @@ -21,6 +21,7 @@ (s/def ::resolve-urls? boolean?) (s/def ::nitter-urls? boolean?) (s/def ::visibility string?) +(s/def ::replacements string?) (s/def ::max-post-length (fn [n] (and (int? n) (<= n 600) @@ -32,7 +33,7 @@ (s/def ::mastodon-clj-config (s/keys :req [::account-id ::content-filters ::keyword-filters ::max-post-length ::signature ::visibility ::append-screen-name? ::sensitive? ::resolve-urls? - ::nitter-urls?])) + ::nitter-urls? ::replacements])) (def mastodon-config? (s/merge ::mastodon-js-config ::mastodon-clj-config)) (defn-spec content-filter-regexes ::content-filters @@ -51,6 +52,11 @@ [mastodon-config mastodon-config?] (::max-post-length mastodon-config)) +(defn-spec perform-replacements string? + [mastodon-config mastodon-config? + text string?] + (reduce-kv string/replace text (::replacements mastodon-config))) + (defn-spec mastodon-client any? [mastodon-config mastodon-config?] (or (some-> mastodon-config clj->js mastodon.) @@ -106,8 +112,10 @@ ([mastodon-config status-text media-ids] (let [{:keys [sensitive? signature visibility]} mastodon-config] (.post (mastodon-client mastodon-config) "statuses" - (clj->js (merge {:status (resolve-urls mastodon-config - (set-signature mastodon-config status-text))} + (clj->js (merge {:status (-> status-text + (partial resolve-urls mastodon-config) + (partial perform-replacements mastodon-config) + (partial set-signature mastodon-config))} (when media-ids {:media_ids media-ids}) (when sensitive? {:sensitive sensitive?}) (when visibility {:visibility visibility}))))))) @@ -144,12 +152,6 @@ (infra/exit-with-error error) (callback response))))) -(defn-spec perform-replacements any? - [mastodon-config mastodon-config? - post any?] - (assoc post :text (reduce-kv string/replace (:text post) (::replacements mastodon-config))) - ) - (defn-spec post-items any? [mastodon-config mastodon-config? last-post-time any? @@ -157,8 +159,7 @@ (doseq [{:keys [text media-links]} (->> items (remove #((blocked-content? mastodon-config (:text %)))) - (filter #(> (:created-at %) last-post-time)) - (map #(perform-replacements mastodon-config %)))] + (filter #(> (:created-at %) last-post-time)))] (if media-links (post-status-with-images mastodon-config text media-links) (when-not (::media-only? mastodon-config)