Forum Discussion

railfan's avatar
railfan
Channel Surfer
10 years ago

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

3 Replies

  • 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?
  • railfan's avatar
    railfan
    Channel Surfer
    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
  • 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.