Forum Discussion

keeptalking's avatar
9 years ago

Using xml from remote server

Hi all,

I am trying to understand and alter the sample code from the "videolist" example. I want to change it so it gets the xml video listing from my own remote server rather than having it hard coded into the app. I know I need to change this section to point to my server:

      m.readVideoContentTask = createObject("RoSGNode","VideoContentReader")
      m.readVideoContentTask.observeField("videocontent","showvideolist")
      m.readVideoContentTask.videocontenturi = "pkg:/server/videocontent.xml"
      m.readVideoContentTask.control = "RUN" 


Unfortunately my level of understanding is still poor and I cannot figure out how to alter the code.

I will be eternally grateful if someone can help!

Many thanks,

Mark

8 Replies

  • renojim's avatar
    renojim
    Community Streaming Expert
    Change:
    m.readVideoContentTask.videocontenturi = "pkg:/server/videocontent.xml"

    to:
    m.readVideoContentTask.videocontenturi = "http://yourserver/yourcontennt.xml"

    where yourserver and yourcontent are obviously dependent on your situation.

    -JT
  • For some reason this doesn't work - Roku fails to load the xml. The server is working fine (I'm also streaming the test videos from it), and the path to the xml file is definitely right.

    Any ideas welcome!

    Thanks,

    Mark
  • "keeptalking" wrote:
    Hi all,
    I am trying to understand and alter the sample code from the "videolist" example. I want to change it so it gets the xml video listing from my own remote server rather than having it hard coded into the app.

    What "videolist" example? Give exact URL! This is important.

    PS. I looked inside the VideoListExample.zip from RTFM https://sdkdocs.roku.com/display/sdkdoc/Media+Playback+Markup#MediaPlaybackMarkup-VideoListMarkup and that is NOT what you are using. What are you using?!
  • "keeptalking" wrote:
    I am using this example:
    https://sdkdocs.roku.com/download/attac ... 629&api=v2

    Good grief, yet another copy of that - but slightly different. Why are RokuCo's examples such a mess?!
    Why are there multiple copies in multiple places - how is one to know which is what, where is the consistency, where is  a "catalog" to pick and choose?

    keeptalking - look inside videoContentReader.xml of "your" zip:
          ' uncomment/conditionalize for development package XML transfers (pkg:/server/foo.xml)'
          xmlstring = ReadAsciiFile(m.top.videocontenturi)
          videocontentxml.parse(xmlstring)

          ' uncomment/conditionalize for published channel Internet XML transfers (http://serverdomain/foo.xml)'
          ' readInternet = createObject("roUrlTransfer")'
          ' readInternet.setUrl(m.top.foocontentxmluri)'
          ' foocontentxml.parse(readInternet.GetToString())'

    Comment out the first part, un-comment the 2nd. 
    Oh, and change foocontentxml -> videocontentxml, foocontentxmluri -> videocontenturi
    Oh, and it's up to you to add code to check if the URL xfer has failed.
    The Story of O... 
  • Hi,

    Many thanks for this - it now works perfectly. Maybe Roku can offer you a job rewriting their docs?  😉

    Your help is greatly appreciated.

    Mark
  • This unfortunately does not work for me. Im stumped. Sadly, this is why so many use sample templates untouched because docs are outdated, depreciated or flat out do not work. Sighs....

    Ok. So for me,
     djusting these lines worked.
    readInternet.setUrl(m.top.videocontenturi)
    videocontentxml.parse(readInternet.GetToString())

          m.readVideoContentTask.observeField("videocontent","showvideolist")
          m.readVideoContentTask.videocontenturi = "http://your-domain/videocontent.xml"
          m.readVideoContentTask.control = "RUN"
    • xwilly's avatar
      xwilly
      Reel Rookie

      Hi, I am using the VideoListExample as well and I need to add a Http Header when I call the URLs of the streams stored in the XML.

      The Http Header is the user agent and will be the same for each stream.

      Can someone help me with the right piece of code to add?

      Thanks