Move all API calls off the render thread
This commit is contained in:
parent
29acf04dc6
commit
3a003d6361
|
@ -6,32 +6,24 @@
|
|||
<field id="movieID" type="string" />
|
||||
<field id="description" type="string" />
|
||||
<field id="favorite" type="boolean" />
|
||||
<field id="seasons" type="associativearray" />
|
||||
<field id="full_data" type="associativearray" onChange="setFields" />
|
||||
<function name="favorite_toggle" />
|
||||
</interface>
|
||||
<script type="text/brightscript" uri="pkg:/source/config.brs" />
|
||||
<script type="text/brightscript" uri="pkg:/source/JellyfinAPI.brs" />
|
||||
<script type="text/brightscript" uri="pkg:/source/api_userlibrary.brs" />
|
||||
<script type="text/brightscript">
|
||||
<![CDATA[
|
||||
sub setFields()
|
||||
datum = m.top.full_data
|
||||
m.top.title = datum.name
|
||||
m.top.movieID = datum.id
|
||||
m.top.posterURL = ImageURL(datum.id)
|
||||
if datum.posterURL <> invalid
|
||||
m.top.posterURL = datum.posterURL
|
||||
else
|
||||
m.top.posterURL = ""
|
||||
end if
|
||||
m.top.description = datum.overview
|
||||
m.top.favorite = datum.UserData.isFavorite
|
||||
end sub
|
||||
|
||||
sub favorite_toggle()
|
||||
if m.top.favorite
|
||||
UnmarkItemFavorite(m.top.full_data.id)
|
||||
else
|
||||
MarkItemFavorite(m.top.full_data.id)
|
||||
end if
|
||||
m.top.favorite = not m.top.favorite
|
||||
|
||||
end sub
|
||||
]]>
|
||||
</script>
|
||||
</component>
|
||||
|
|
|
@ -8,15 +8,17 @@
|
|||
<field id="full_data" type="associativearray" onChange="setFields" />
|
||||
<function name="getPoster" />
|
||||
</interface>
|
||||
<script type="text/brightscript" uri="pkg:/source/config.brs" />
|
||||
<script type="text/brightscript" uri="pkg:/source/JellyfinAPI.brs" />
|
||||
<script type="text/brightscript">
|
||||
<![CDATA[
|
||||
sub setFields()
|
||||
datum = m.top.full_data
|
||||
m.top.title = datum.name
|
||||
m.top.showID = datum.id
|
||||
m.top.posterURL = ImageURL(datum.id)
|
||||
if datum.posterURL <> invalid
|
||||
m.top.posterURL = datum.posterURL
|
||||
else
|
||||
""
|
||||
end if
|
||||
m.top.description = datum.overview
|
||||
end sub
|
||||
]]>
|
||||
|
|
|
@ -10,25 +10,21 @@
|
|||
<field id="full_data" type="associativearray" onChange="setFields" />
|
||||
<function name="loadSeasons" />
|
||||
</interface>
|
||||
<script type="text/brightscript" uri="pkg:/source/config.brs" />
|
||||
<script type="text/brightscript" uri="pkg:/source/JellyfinAPI.brs" />
|
||||
<script type="text/brightscript">
|
||||
<![CDATA[
|
||||
sub setFields()
|
||||
datum = m.top.full_data
|
||||
m.top.title = datum.name
|
||||
m.top.showID = datum.id
|
||||
m.top.posterURL = ImageURL(datum.id)
|
||||
if datum.posterURL <> invalid
|
||||
m.top.posterURL = datum.posterURL
|
||||
else
|
||||
m.top.posterURL = ""
|
||||
end if
|
||||
m.top.description = datum.overview
|
||||
'm.top.seasons = TVSeasons(datum.id)
|
||||
'm.top.nextup = TVNext(datum.id)
|
||||
end sub
|
||||
|
||||
sub loadSeasons()
|
||||
datum = m.top.full_data
|
||||
m.top.seasons = TVSeasons(datum.id)
|
||||
end sub
|
||||
|
||||
]]>
|
||||
</script>
|
||||
</component>
|
||||
|
|
|
@ -27,16 +27,7 @@ sub itemContentChanged()
|
|||
if itemData.taglines.count() > 0
|
||||
setFieldText("tagline", itemData.taglines[0])
|
||||
end if
|
||||
|
||||
setSeasons()
|
||||
end sub
|
||||
|
||||
sub setSeasons()
|
||||
itemData = m.top.itemContent
|
||||
itemData.callFunc("loadSeasons")
|
||||
row = m.top.findNode("TVSeasonSelect")
|
||||
|
||||
row.TVSeasonData = itemData.seasons
|
||||
m.top.findNode("TVSeasonSelect").TVSeasonData = m.top.itemContent.seasons
|
||||
end sub
|
||||
|
||||
sub setFieldText(field as string, value)
|
||||
|
|
|
@ -198,24 +198,40 @@ function ItemList(library_id=invalid as String, params={})
|
|||
params["parentid"] = library_id
|
||||
url = Substitute("Users/{0}/Items/", get_setting("active_user"))
|
||||
resp = APIRequest(url, params)
|
||||
return getJson(resp)
|
||||
data = getJson(resp)
|
||||
for each item in data.Items
|
||||
item.posterURL = ImageURL(item.id)
|
||||
end for
|
||||
return data
|
||||
end function
|
||||
|
||||
function ItemMetaData(id as String)
|
||||
url = Substitute("Users/{0}/Items/{1}", get_setting("active_user"), id)
|
||||
resp = APIRequest(url)
|
||||
return getJson(resp)
|
||||
data = getJson(resp)
|
||||
data.posterURL = ImageURL(data.id)
|
||||
return data
|
||||
end function
|
||||
|
||||
function TVSeasons(id as String)
|
||||
url = Substitute("Shows/{0}/Seasons", id)
|
||||
resp = APIRequest(url, {"UserId": get_setting("active_user")})
|
||||
return getJson(resp)
|
||||
|
||||
data = getJson(resp)
|
||||
for each item in data.Items
|
||||
item.posterURL = ImageURL(item.id)
|
||||
end for
|
||||
return data
|
||||
end function
|
||||
|
||||
|
||||
function TVNext(id as String)
|
||||
url = Substitute("Shows/NextUp", id)
|
||||
resp = APIRequest(url, {"UserId": get_setting("active_user"), "SeriesId": id})
|
||||
return getJson(resp)
|
||||
|
||||
data = getJson(resp)
|
||||
for each item in data.Items
|
||||
item.posterURL = ImageURL(item.id)
|
||||
end for
|
||||
return data
|
||||
end function
|
||||
|
|
|
@ -293,6 +293,8 @@ sub ShowTVShowDetails(show_id)
|
|||
content = createObject("roSGNode", "TVShowData")
|
||||
content.full_data = ItemMetaData(show_id)
|
||||
scene.itemContent = content
|
||||
x = TVSeasons(show_id)
|
||||
scene.itemContent.seasons = TVSeasons(show_id)
|
||||
|
||||
'buttons = scene.findNode("buttons")
|
||||
'buttons.observeField("buttonSelected", port)
|
||||
|
|
Loading…
Reference in New Issue
Block a user