diff options
author | Miguel Ángel Moreno <mail@migalmoreno.com> | 2022-12-29 01:53:08 +0100 |
---|---|---|
committer | Miguel Ángel Moreno <mail@migalmoreno.com> | 2022-12-29 01:53:08 +0100 |
commit | dfcc61063822dfb0fe699896da312249e93d5439 (patch) | |
tree | c1dc29de45cfe4ae67f104510dc3c4b6d858aa46 /src/backend/tau/api/playlists.clj | |
parent | 6382ec24c5bbbf93ced1e587103a52b3a63e6045 (diff) |
feat(backend): Remove records and simplify API
Diffstat (limited to 'src/backend/tau/api/playlists.clj')
-rw-r--r-- | src/backend/tau/api/playlists.clj | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/backend/tau/api/playlists.clj b/src/backend/tau/api/playlists.clj new file mode 100644 index 0000000..92e8e8d --- /dev/null +++ b/src/backend/tau/api/playlists.clj @@ -0,0 +1,30 @@ +(ns tau.api.playlists + (:require + [clojure.java.data :as j] + [ring.util.codec :refer [url-decode]] + [tau.api.items :as items]) + (:import + org.schabi.newpipe.extractor.playlist.PlaylistInfo + org.schabi.newpipe.extractor.Page + org.schabi.newpipe.extractor.NewPipe)) + +(defn get-playlist + ([url] + (let [service (NewPipe/getServiceByUrl (url-decode url)) + info (PlaylistInfo/getInfo service (url-decode url))] + {:id (.getId info) + :name (.getName info) + :playlist-type (j/from-java (.getPlaylistType info)) + :thumbnail-url (.getThumbnailUrl info) + :banner-url (.getBannerUrl info) + :uploader-name (.getUploaderName info) + :uploader-url (.getUploaderUrl info) + :uploader-avatar (.getUploaderAvatarUrl info) + :stream-count (.getStreamCount 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 (PlaylistInfo/getMoreItems service url (Page. (url-decode page-url)))] + {:next-page (j/from-java (.getNextPage info)) + :related-streams (items/get-items (.getItems info))}))) |