blob: 4243a32ff8f173cbe98cfcf42fed116ef5a2bb80 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
(ns tau.api.kiosk
(:require
[clojure.java.data :as j]
[ring.util.codec :refer [url-decode]]
[tau.api.result :as result])
(:import
org.schabi.newpipe.extractor.StreamingService
org.schabi.newpipe.extractor.Page
org.schabi.newpipe.extractor.kiosk.KioskInfo
org.schabi.newpipe.extractor.NewPipe))
(defrecord KioskList
[default-kiosk available-kiosks])
(defrecord Kiosk
[id url next-page related-streams])
(defrecord KioskPage
[next-page related-streams])
(defn get-info
([kiosk-id service-id]
(let [service (NewPipe/getService service-id)
extractor (.getExtractorById (.getKioskList service) kiosk-id nil)
info (KioskInfo/getInfo extractor)]
(map->Kiosk
{:id (.getId info)
:url (.getUrl info)
:next-page (j/from-java (.getNextPage info))
:related-streams (result/get-results (.getRelatedItems info))})))
([kiosk-id service-id page-url]
(let [service (NewPipe/getService service-id)
extractor (.getExtractorById (.getKioskList service) kiosk-id nil)
url (url-decode page-url)
kiosk-info (KioskInfo/getInfo extractor)
info (KioskInfo/getMoreItems service (.getUrl kiosk-info) (Page. url))]
(map->KioskPage
{:next-page (j/from-java (.getNextPage info))
:related-streams (result/get-results (.getItems info))}))))
(defn get-kiosks
[service-id]
(let [service (NewPipe/getService service-id)
kiosks (.getKioskList service)]
(map->KioskList
{:default-kiosk (.getDefaultKioskId kiosks)
:available-kiosks (.getAvailableKiosks kiosks)})))
|