aboutsummaryrefslogtreecommitdiff
path: root/src/backend/tau/api/channels.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/tau/api/channels.clj')
-rw-r--r--src/backend/tau/api/channels.clj28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/backend/tau/api/channels.clj b/src/backend/tau/api/channels.clj
new file mode 100644
index 0000000..695a3fd
--- /dev/null
+++ b/src/backend/tau/api/channels.clj
@@ -0,0 +1,28 @@
+(ns tau.api.channels
+ (:require
+ [clojure.java.data :as j]
+ [ring.util.codec :refer [url-decode]]
+ [tau.api.items :as items])
+ (:import
+ org.schabi.newpipe.extractor.channel.ChannelInfo
+ org.schabi.newpipe.extractor.NewPipe
+ org.schabi.newpipe.extractor.Page))
+
+(defn get-channel
+ ([url]
+ (let [info (ChannelInfo/getInfo (url-decode url))]
+ {:id (.getId info)
+ :name (.getName info)
+ :verified? (.isVerified info)
+ :banner (.getBannerUrl info)
+ :avatar (.getAvatarUrl info)
+ :description (.getDescription info)
+ :subscriber-count (when-not (= (.getSubscriberCount info) -1) (.getSubscriberCount info))
+ :donation-links (.getDonationLinks info)
+ :next-page (j/from-java (.getNextPage info))
+ :related-streams (items/get-items (.getRelatedItems info))}))
+ ([url page-url]
+ (let [service (NewPipe/getServiceByUrl (url-decode url))
+ info (ChannelInfo/getMoreItems service (url-decode url) (Page. (url-decode page-url)))]
+ {:related-streams (items/get-items (.getItems info))
+ :next-page (j/from-java (.getNextPage info))})))