function ItemsList(params = {} as object) ' Gets items based on a query. resp = APIRequest("Items", params) data = getJson(resp) ' TODO - parse items return data end function function UserItems(params = {} as object) ' Gets items based on a query resp = APIRequest(Substitute("Items/{0}/Items", get_setting("active_user")), params) data = getJson(resp) ' TODO - parse items return data end function function UserItemsResume(params = {} as object) ' Gets items based on a query resp = APIRequest(Substitute("Items/{0}/Items/Resume", get_setting("active_user")), params) data = getJson(resp) ' TODO - parse items return data end function ' List of available libraries function LibraryList() url = Substitute("Users/{0}/Views/", get_setting("active_user")) resp = APIRequest(url) data = getJson(resp) results = [] for each item in data.Items tmp = CreateObject("roSGNode", "LibraryData") tmp.json = item results.push(tmp) end for data.Items = results return data end function ' Search across all libraries function SearchMedia(query as string) ' This appears to be done differently on the web now ' For each potential type, a separate query is done: ' varying item types, and artists, and people resp = APIRequest(Substitute("Users/{0}/Items", get_setting("active_user")), { "searchTerm": query, "IncludePeople": true, "IncludeMedia": true, "IncludeGenres": false, "IncludeStudios": false, "IncludeArtists": false, ' "IncludeItemTypes: "Movie", "EnableTotalRecordCount": false, "ImageTypeLimit": 1, "Recursive": true }) data = getJson(resp) results = [] for each item in data.Items tmp = CreateObject("roSGNode", "SearchData") tmp.image = PosterImage(item.id) tmp.json = item results.push(tmp) end for data.SearchHints = results return data end function ' List items from within a library function ItemList(library_id = invalid as string, params = {}) if params["limit"] = invalid params["limit"] = 30 end if if params["page"] = invalid params["page"] = 1 end if params["parentid"] = library_id url = Substitute("Users/{0}/Items/", get_setting("active_user")) resp = APIRequest(url, params) data = getJson(resp) results = [] for each item in data.Items imgParams = {} if item.ImageTags.Primary <> invalid then ' If Primary image exists use it param = { "Tag" : item.ImageTags.Primary } imgParams.Append(param) end if param = { "AddPlayedIndicator": item.UserData.Played } imgParams.Append(param) if item.UserData.PlayedPercentage <> invalid then param = { "PercentPlayed": item.UserData.PlayedPercentage } imgParams.Append(param) end if print version if item.type = "Movie" tmp = CreateObject("roSGNode", "MovieData") tmp.image = PosterImage(item.id, imgParams) tmp.json = item results.push(tmp) else if item.type = "Series" if item.UserData.UnplayedItemCount > 0 then param = { "UnplayedCount" : item.UserData.UnplayedItemCount } imgParams.Append(param) end if tmp = CreateObject("roSGNode", "SeriesData") tmp.image = PosterImage(item.id, imgParams) tmp.json = item results.push(tmp) else if item.type = "BoxSet" if item.UserData.UnplayedItemCount > 0 then param = { "UnplayedCount" : item.UserData.UnplayedItemCount } imgParams.Append(param) end if tmp = CreateObject("roSGNode", "CollectionData") tmp.image = PosterImage(item.id, imgParams) tmp.json = item results.push(tmp) else print item.type ' Otherwise we just stick with the JSON results.push(item) end if end for data.items = results return data end function ' MetaData about an item function ItemMetaData(id as string) url = Substitute("Users/{0}/Items/{1}", get_setting("active_user"), id) resp = APIRequest(url) data = getJson(resp) if data.type = "Movie" tmp = CreateObject("roSGNode", "MovieData") tmp.image = PosterImage(data.id) tmp.json = data return tmp else if data.type = "Series" tmp = CreateObject("roSGNode", "SeriesData") tmp.image = PosterImage(data.id) tmp.json = data return tmp else if data.type = "Episode" tmp = CreateObject("roSGNode", "TVEpisodeData") tmp.image = PosterImage(data.id) tmp.json = data return tmp else if data.type = "BoxSet" tmp = CreateObject("roSGNode", "CollectionData") tmp.image = PosterImage(data.id) tmp.json = item return tmp else print data.type ' Return json if we don't know what it is return data end if return data end function ' Seasons for a TV Show function TVSeasons(id as string) url = Substitute("Shows/{0}/Seasons", id) resp = APIRequest(url, { "UserId": get_setting("active_user") }) data = getJson(resp) results = [] for each item in data.Items tmp = CreateObject("roSGNode", "TVEpisodeData") tmp.image = PosterImage(item.id) tmp.json = item results.push(tmp) end for data.Items = results return data end function function TVEpisodes(show_id as string, season_id as string) url = Substitute("Shows/{0}/Episodes", show_id) resp = APIRequest(url, { "seasonId": season_id, "UserId": get_setting("active_user") }) data = getJson(resp) results = [] for each item in data.Items tmp = CreateObject("roSGNode", "TVEpisodeData") tmp.image = PosterImage(item.id) tmp.image.posterDisplayMode = "scaleToFit" tmp.json = item results.push(tmp) end for data.Items = results return data end function ' The next up episode for a TV show function TVNext(id as string) url = Substitute("Shows/NextUp", id) resp = APIRequest(url, { "UserId": get_setting("active_user"), "SeriesId": id }) data = getJson(resp) for each item in data.Items item.image = PosterImage(item.id) end for return data end function