' ********** Copyright 2015 Roku Corp. All Rights Reserved. **********
Sub RunUserInterface()
screen = CreateObject("roSGScreen")
scene = screen.CreateScene("HomeScene")
port = CreateObject("roMessagePort")
screen.SetMessagePort(port)
screen.Show()
oneRow = GetApiArray()
list = [
{
TITLE : "First row"
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("[url=http://griffingatv.website/xml/categories.xml]http://griffingatv.website/xml/categories.xml[/url]")
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.PlayContentWithFullRAFIntegration().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
item[xmlItem.getName()] = xmlItem.getText() <---- on this line 'item' is an roArray
if xmlItem.getName() = "media:content"
item.stream = {url : xmlItem.url} <----- on this line you try to use it as roAssociativeArray, goes boom
"joetesta" wrote:item[xmlItem.getName()] = xmlItem.getText() <---- on this line 'item' is an roArray
item.PlayContentWithFullRAFIntegration().url
********** Copyright 2015 Roku Corp. All Rights Reserved. **********
Library "Roku_Ads.brs"
Sub RunUserInterface()
screen = CreateObject("roSGScreen")
scene = screen.CreateScene("HomeScene")
port = CreateObject("roMessagePort")
screen.SetMessagePort(port)
screen.Show()
oneRow = GetApiArray()
list = [
{
TITLE : GetApiArray.category() 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("[url=http://api.delvenetworks.com/xml/categories.xml]http://api.delvenetworks.com/xml/categories.xml[/url]")
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
shouldPlayContent = true
adBreakIndex = 0
while shouldPlayContent
videoMsg = wait(0, mediaContent.GetMessagePort())
if videoMsg.isPlaybackPosition()
curPos = videoMsg.GetIndex()
nextPod = scheduledPods[adBreakIndex]
if curPos > nextPod.renderTime and not nextPod.viewed
contentVideoScreen.Close() ' stop playback of content
mediaContent = RAF.showAds(nextPod) ' render next ad pod
adBreakIndex = adBreakIndex + 1
end if
end if
end while
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
@Blackhawk. If you're serious about getting other people to do your debugging for you, then the least you could do is cut and paste the debugger output -- the WHOLE debugger output, not just a single line from it, and include the debugger listing that shows the LINE NUMBERS of your code.
********** Copyright 2015 Roku Corp. All Rights Reserved. **********
"RokuMarkn" wrote:
Please read again what belltown posted back on April 6:
@Blackhawk. If you're serious about getting other people to do your debugging for you, then the least you could do is cut and paste the debugger output -- the WHOLE debugger output, not just a single line from it, and include the debugger listing that shows the LINE NUMBERS of your code.
Instead, you said "I keep getting Syntax Error (compile error &h02) on 1, 3, 5, 21, 22". That one line is not the WHOLE debugger output, is it? No one can help you if you keep hiding the debugger output from us.
--Mark