Flesh out APIRequest, add more API methods, play a random movie

This commit is contained in:
Nick Bisby 2019-02-03 15:15:17 -06:00
parent be38bb7a21
commit 2788440d42
No known key found for this signature in database
GPG Key ID: F6E0C4E6D0B5EB36
3 changed files with 62 additions and 5 deletions

View File

@ -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")

View File

@ -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)

View File

@ -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")