mirror of
https://github.com/jellyfin/jellyfin-roku.git
synced 2025-02-21 23:41:00 +00:00
Flesh out APIRequest, add more API methods, play a random movie
This commit is contained in:
parent
be38bb7a21
commit
2788440d42
@ -1,4 +1,4 @@
|
||||
function APIRequest(url as String)
|
||||
function APIRequest(url as String, params={} as Object)
|
||||
req = createObject("roUrlTransfer")
|
||||
|
||||
server = get_var("server")
|
||||
@ -7,7 +7,25 @@ function APIRequest(url as String)
|
||||
req.setCertificatesFile("common:/certs/ca-bundle.crt")
|
||||
end if
|
||||
|
||||
req.setUrl(server + "/emby/" + url)
|
||||
full_url = server + "/emby/" + url
|
||||
if params.count() > 0
|
||||
full_url = full_url + "?"
|
||||
|
||||
param_array = []
|
||||
for each field in params.items()
|
||||
if type(field.value) = "String" then
|
||||
item = field.key + "=" + req.escape(field.value.trim())
|
||||
else if type(field.value) = "roInteger" then
|
||||
item = field.key + "=" + req.escape(str(field.value).trim())
|
||||
else
|
||||
item = field.key + "=" + req.escape(field.value)
|
||||
end if
|
||||
param_array.push(item)
|
||||
end for
|
||||
full_url = full_url + param_array.join("&")
|
||||
end if
|
||||
|
||||
req.setUrl(full_url)
|
||||
|
||||
req = authorize_request(req)
|
||||
|
||||
@ -83,12 +101,43 @@ function authorize_request(request)
|
||||
return request
|
||||
end function
|
||||
|
||||
function VideoMetaData(id as String)
|
||||
|
||||
' ServerBrowsing
|
||||
|
||||
' List Available Libraries for the current logged in user
|
||||
' Params: None
|
||||
' Returns { Items, TotalRecordCount }
|
||||
function LibraryList()
|
||||
url = Substitute("Users/{0}/Views/", get_var("user_id"))
|
||||
resp = APIRequest(url)
|
||||
return parseRequest(resp)
|
||||
end function
|
||||
|
||||
' Search for a string
|
||||
' Params: Search Query
|
||||
' Returns: { SearchHints, TotalRecordCount }
|
||||
function SearchMedia(query as String)
|
||||
resp = APIRequest("Search/Hints", {"searchTerm": query})
|
||||
return parseRequest(resp)
|
||||
end function
|
||||
|
||||
' List items from within a Library
|
||||
' Params: Library ID, Limit, Offset, SortBy, SortOrder, IncludeItemTypes, Fields, EnableImageTypes
|
||||
' Returns { Items, TotalRecordCount }
|
||||
function ItemList(library_id=invalid as String)
|
||||
url = Substitute("Users/{0}/Items/", get_var("user_id"))
|
||||
resp = APIRequest(url, {"parentid": library_id, "limit": 30})
|
||||
return parseRequest(resp)
|
||||
end function
|
||||
|
||||
function ItemMetaData(id as String)
|
||||
url = Substitute("Users/{0}/Items/{1}", get_var("user_id"), id)
|
||||
resp = APIRequest(url)
|
||||
return parseRequest(resp)
|
||||
end function
|
||||
|
||||
' Video
|
||||
|
||||
function VideoStream(id as String)
|
||||
player = createObject("roVideoPlayer")
|
||||
|
||||
|
@ -13,7 +13,15 @@ sub Main()
|
||||
screen.show()
|
||||
|
||||
get_token(get_var("username"), get_var("password"))
|
||||
player = VideoPlayer(get_var("video_id"))
|
||||
|
||||
' For now, just play whatever is the first item in the list
|
||||
' of the first folder
|
||||
libs = LibraryList().items
|
||||
items = ItemList(libs[0].Id).items
|
||||
n = Rnd(10)
|
||||
movie_id = items[n-1].Id
|
||||
|
||||
player = VideoPlayer(movie_id)
|
||||
|
||||
while(true)
|
||||
msg = wait(0, m.port)
|
||||
|
@ -17,7 +17,7 @@ end function
|
||||
function VideoContent(id) as object
|
||||
content = createObject("RoSGNode", "ContentNode")
|
||||
|
||||
meta = VideoMetaData(id)
|
||||
meta = ItemMetaData(id)
|
||||
content.title = meta.Name
|
||||
|
||||
server = get_var("server")
|
||||
|
Loading…
x
Reference in New Issue
Block a user