diff options
Diffstat (limited to 'src/backend/tau/api/channel.clj')
-rw-r--r-- | src/backend/tau/api/channel.clj | 37 |
1 files changed, 7 insertions, 30 deletions
diff --git a/src/backend/tau/api/channel.clj b/src/backend/tau/api/channel.clj index 8ef29e5..89c6a7c 100644 --- a/src/backend/tau/api/channel.clj +++ b/src/backend/tau/api/channel.clj @@ -1,9 +1,8 @@ (ns tau.api.channel (:require - [tau.api.stream :as stream] - [tau.api.playlist :as playlist] [clojure.java.data :as j] - [ring.util.codec :refer [url-decode]]) + [ring.util.codec :refer [url-decode]] + [tau.api.result :as result]) (:import org.schabi.newpipe.extractor.channel.ChannelInfo org.schabi.newpipe.extractor.NewPipe @@ -14,32 +13,9 @@ subscriber-count donation-links next-page related-streams]) -(defrecord ChannelResult - [name description verified? thumbnail-url url - subscriber-count stream-count]) - (defrecord ChannelPage [next-page related-streams]) -(defn get-results - [items] - (map #(case (.name (.getInfoType %)) - "STREAM" (stream/get-result %) - "CHANNEL" (get-result %) - "PLAYLIST" (playlist/get-result %)) - items)) - -(defn get-result - [channel] - (map->ChannelResult - {:name (.getName channel) - :thumbnail-url (.getThumbnailUrl channel) - :url (.getUrl channel) - :description (.getDescription channel) - :subscriber-count (.getSubscriberCount channel) - :stream-count (.getStreamCount channel) - :verified? (.isVerified channel)})) - (defn get-info ([url] (let [info (ChannelInfo/getInfo (url-decode url))] @@ -49,13 +25,14 @@ :verified? (.isVerified info) :banner (.getBannerUrl info) :avatar (.getAvatarUrl info) - :subscriber-count (.getSubscriberCount info) + :description (.getDescription info) + :subscriber-count (if (= (.getSubscriberCount info) -1) false (.getSubscriberCount info)) :donation-links (.getDonationLinks info) :next-page (j/from-java (.getNextPage info)) - :related-streams (get-results (.getRelatedItems info))}))) + :related-streams (result/get-results (.getRelatedItems info))}))) ([url page-url] (let [service (NewPipe/getServiceByUrl (url-decode url)) - info (ChannelInfo/getMoreItems service url (Page. (url-decode page-url)))] + info (ChannelInfo/getMoreItems service (url-decode url) (Page. (url-decode page-url)))] (map->ChannelPage - {:related-streams (get-results (.getItems info)) + {:related-streams (result/get-results (.getItems info)) :next-page (j/from-java (.getNextPage info))})))) |