diff options
Diffstat (limited to 'src/backend/tau/api/streams.clj')
-rw-r--r-- | src/backend/tau/api/streams.clj | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/backend/tau/api/streams.clj b/src/backend/tau/api/streams.clj new file mode 100644 index 0000000..46d8008 --- /dev/null +++ b/src/backend/tau/api/streams.clj @@ -0,0 +1,36 @@ +(ns tau.api.streams + (:require + [clojure.java.data :as j] + [ring.util.codec :refer [url-decode]] + [tau.api.items :as items]) + (:import + org.schabi.newpipe.extractor.stream.StreamInfo + org.schabi.newpipe.extractor.NewPipe + org.schabi.newpipe.extractor.localization.DateWrapper + java.time.Instant)) + +(defn get-stream + [url] + (let [info (StreamInfo/getInfo (url-decode url))] + {:name (.getName info) + :url (.getUrl info) + :description (.. info (getDescription) (getContent)) + :upload-date (.getTextualUploadDate info) + :uploader-author (.getUploaderName info) + :uploader-url (.getUploaderUrl info) + :uploader-avatar (.getUploaderAvatarUrl info) + :uploader-verified? (.isUploaderVerified info) + :service-id (.getServiceId info) + :thumbnail-url (.getThumbnailUrl info) + :duration (.getDuration info) + :tags (.getTags info) + :category (.getCategory info) + :view-count (.getViewCount info) + :like-count (when-not (= (.getLikeCount info) -1) (.getLikeCount info)) + :dislike-count (when-not (= (.getDislikeCount info) -1) (.getDislikeCount info)) + :subscriber-count (when-not (= (.getUploaderSubscriberCount info) -1) (.getUploaderSubscriberCount info)) + :audio-streams (j/from-java (.getAudioStreams info)) + :video-streams (j/from-java (.getVideoStreams info)) + :hls-url (.getHlsUrl info) + :dash-mpd-url (.getDashMpdUrl info) + :related-streams (items/get-items (.getRelatedStreams info))})) |