From 8ccdbde8ece2c5662cb880ecc6f35ece1345752b Mon Sep 17 00:00:00 2001 From: jem Date: Thu, 21 May 2020 13:54:56 +0200 Subject: [PATCH] refactor parse-tweet --- src/main/mastodon_bot/core.cljs | 16 +++------------- src/main/mastodon_bot/transform.cljs | 23 +++++++++++++++++++++-- src/main/mastodon_bot/twitter_api.cljs | 8 ++++++++ 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/src/main/mastodon_bot/core.cljs b/src/main/mastodon_bot/core.cljs index 11b6cde..26c9115 100755 --- a/src/main/mastodon_bot/core.cljs +++ b/src/main/mastodon_bot/core.cljs @@ -32,18 +32,6 @@ (def config (infra/load-config)) -(defn parse-tweet [{created-at :created_at - text :full_text - {:keys [media]} :extended_entities - {:keys [screen_name]} :user :as tweet}] - {:created-at (js/Date. created-at) - :text (transform/trim-text - (str (twitter/chop-tail-media-url text media) - (if (masto/append-screen-name? (mastodon-config config)) - (str "\n - " screen_name) "")) - (masto/max-post-length (mastodon-config config))) - :media-links (keep #(when (= (:type %) "photo") (:media_url_https %)) media)}) - (defmulti parse-tumblr-post :type) (defmethod parse-tumblr-post "text" [{:keys [body date short_url]}] @@ -75,7 +63,9 @@ (if error (infra/exit-with-error error) (->> (infra/js->edn tweets) - (map parse-tweet) + (map twitter/parse-tweet) + (map #(transform/to-mastodon + (mastodon-config config) %)) (masto/post-items (mastodon-config config) last-post-time))))) diff --git a/src/main/mastodon_bot/transform.cljs b/src/main/mastodon_bot/transform.cljs index 1a32a57..86cb598 100644 --- a/src/main/mastodon_bot/transform.cljs +++ b/src/main/mastodon_bot/transform.cljs @@ -3,7 +3,14 @@ [clojure.spec.alpha :as s] [clojure.spec.test.alpha :as st] [orchestra.core :refer-macros [defn-spec]] - [clojure.string :as string])) + [clojure.string :as string] + [mastodon-bot.mastodon-api :as masto])) + +(s/def ::created-at any?) +(s/def ::text string?) +(s/def ::media-links string?) +(s/def ::screen_name string?) +(def element? (s/keys :req-un [::created-at ::text ::media-links ::screen_name])) (defn trim-text [text max-post-length] (cond @@ -20,4 +27,16 @@ "" (string/split text #" ")) - :else text)) \ No newline at end of file + :else text)) + +(defn-spec to-mastodon any? + [mastodon-config masto/mastodon-config? + input element?] + (let [{:keys [created-at text media-links screen_name]} input] + {:created-at created-at + :text (trim-text + (str text + (if (masto/append-screen-name? mastodon-config) + (str "\n - " screen_name) "")) + (masto/max-post-length mastodon-config)) + :media-links media-links})) \ No newline at end of file diff --git a/src/main/mastodon_bot/twitter_api.cljs b/src/main/mastodon_bot/twitter_api.cljs index 0a16526..bcae2f0 100755 --- a/src/main/mastodon_bot/twitter_api.cljs +++ b/src/main/mastodon_bot/twitter_api.cljs @@ -41,6 +41,14 @@ (defn chop-tail-media-url [text media] (string/replace text #" (\S+)$" #(if (in (%1 1) (map :url media)) "" (%1 0)))) +(defn parse-tweet [{created-at :created_at + text :full_text + {:keys [media]} :extended_entities + {:keys [screen_name]} :user :as tweet}] + {:created-at (js/Date. created-at) + :text (chop-tail-media-url text media) + :media-links (keep #(when (= (:type %) "photo") (:media_url_https %)) media)}) + (defn-spec user-timeline any? [twitter-config twitter-config? account ::account