Developers

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
railfan
Channel Surfer

How do I split this into to separate lists.

Hello,

I am trying to figure out how to have two RSS's one for each row. Based on the code it looks like I need to have a second. "oneRow = GetApiArray()" but not sure how to call it "twoRow = GetApiArray()" Just not sure how to rename the "GetApiArray()" part of the code.

Thanks for the help,

Mike




Sub RunUserInterface()
screen = CreateObject("roSGScreen")
scene = screen.CreateScene("HomeScene")
port = CreateObject("roMessagePort")
screen.SetMessagePort(port)
screen.Show()

oneRow = GetApiArray()
list = [
{
TITLE : "Live Cameras"
ContentList : oneRow
}
{
TITLE : "Video Library"
ContentList : oneRow
}
]
scene.gridContent = ParseXMLContent(list)

while true
msg = wait(0, port)
print "------------------"
print "msg = "; msg
end while

if screen <> invalid then
screen.Close()
screen = invalid
end if
End Sub
Tags (1)
0 Kudos
3 REPLIES 3
joetesta
Roku Guru

Re: How do I split this into to separate lists.

To me it's not clear what you're asking. You have a function GetApiArray() and you want to create a parallel function, or you want to split your 'list' into multiple lists?
aspiring
Tags (1)
0 Kudos
railfan
Channel Surfer

Re: How do I split this into to separate lists.

To different lists driven by a rss list. What do I need to change to support a each row driven by there own RSS file.

Sub RunUserInterface()
screen = CreateObject("roSGScreen")
scene = screen.CreateScene("HomeScene")
port = CreateObject("roMessagePort")
screen.SetMessagePort(port)
screen.Show()

oneRow = GetApiArray()
list = [
{
TITLE : "Live Cameras"
ContentList : oneRow
}
{
TITLE : "Video Library"
ContentList : oneRow
}
]
scene.gridContent = ParseXMLContent(list)

while true
msg = wait(0, port)
print "------------------"
print "msg = "; msg
end while

if screen <> invalid then
screen.Close()
screen = invalid
end if
End Sub


Function ParseXMLContent(list As Object)
RowItems = createObject("RoSGNode","ContentNode")

for each rowAA in list
'for index = 0 to 1
row = createObject("RoSGNode","ContentNode")
row.Title = rowAA.Title

for each itemAA in rowAA.ContentList
item = createObject("RoSGNode","ContentNode")
' We don't use item.setFields(itemAA) as doesn't cast streamFormat to proper value
for each key in itemAA
item[key] = itemAA[key]
end for
row.appendChild(item)
end for
RowItems.appendChild(row)
end for

return RowItems
End Function


Function GetApiArray()
url = CreateObject("roUrlTransfer")
url.SetUrl("http://www.railstream.net/*************/media.rss")
rsp = url.GetToString()

responseXML = ParseXML(rsp)
responseXML = responseXML.GetChildElements()
responseArray = responseXML.GetChildElements()

result = []

for each xmlItem in responseArray
if xmlItem.getName() = "item"
itemAA = xmlItem.GetChildElements()
if itemAA <> invalid
item = {}
for each xmlItem in itemAA
item[xmlItem.getName()] = xmlItem.getText()
if xmlItem.getName() = "media:content"
item.stream = {url : xmlItem.url}
item.url = xmlItem.getAttributes().url
item.streamFormat = "mp4"

mediaContent = xmlItem.GetChildElements()
for each mediaContentItem in mediaContent
if mediaContentItem.getName() = "media:thumbnail"
item.HDPosterUrl = mediaContentItem.getattributes().url
item.hdBackgroundImageUrl = mediaContentItem.getattributes().url
end if
end for
end if
end for
result.push(item)
end if
end if
end for

return result
End Function


Function ParseXML(str As String) As dynamic
if str = invalid return invalid
xml=CreateObject("roXMLElement")
if not xml.Parse(str) return invalid
return xml
End Function
Tags (1)
0 Kudos
joetesta
Roku Guru

Re: How do I split this into to separate lists.

Sorry I don't have the answer to your question but I strongly suggest you use the "Code" tag (at the top of the comment box) to make the code in your comments more readable.
aspiring
Tags (1)
0 Kudos
Community is Being Upgraded!

We’re upgrading Roku Community to bring you a faster, more mobile-friendly experience. You may notice limited functionality or read-only access during this time. Read more here.

Planned Downtime:
Community will be unavailable for up to 24–48 hours during the upgrade window during the week of May 19th and you may notice reduced functionality. In the meantime, for additional assistance, visit our Support Site.

We're sorry for this disruption — we’re excited to share what’s next!