I’ve downloaded the Roku External Control Protocol and am building my software now. I’m especially interested in launching specific channels with parameters that will take me straight to content.
I’m most interested in Netflix, Hulu, Amazon VOD and Pandora - I’d love to be able to launch a movie/tv episode/station directly from my software.
Are any of these channels (or any others) published with a parameter option? If not, will they ever be? There’s a huge potential here for external interfaces with the Roku product to really kick the Apple TV into touch.
“WillEV” wrote:
I’ve downloaded the Roku External Control Protocol and am building my software now. I’m especially interested in launching specific channels with parameters that will take me straight to content.
I’m most interested in Netflix, Hulu, Amazon VOD and Pandora - I’d love to be able to launch a movie/tv episode/station directly from my software.
Are any of these channels (or any others) published with a parameter option? If not, will they ever be? There’s a huge potential here for external interfaces with the Roku product to really kick the Apple TV into touch.
WillNone of those (Netflix, Hulu, Amazon, or Pandora) have published any specs for launch parameters. There are a few channels I know that do support launch params: Shoutcast, Onion and HGTV, all from TheEndless and the MOG beta(private channel code mogbeta2), by lucasgonze.
Channels will need to be updated by the developers to accept the parameters when launched. We’re hopeful channels will start to support this, but until the functionality is added to channels, there’s not much more you can do other than launch the channel.
“RokuPatrick” wrote:
Channels will need to be updated by the developers to accept the parameters when launched. We’re hopeful channels will start to support this, but until the functionality is added to channels, there’s not much more you can do other than launch the channel.
Is Netflix player not written and maintained by Roku in collaboration with Netflix?
Because if it’s Roku’s channel, I’d hope you guys will allow that channel to accept parameters. The most pressing need there I believe is for a parameter to specify (or reset) the current position in users instant queue!
The way the channel behaves is that when started it positions cursor (selection) on the last selected movie from the instant queue. The problem is, there is no way to go to the beginning or the end of the queue, because the queue is actually a “ring” - scrolling to the left or right wraps around. While someone may have thought this convenient for a user, it does not allow for a remote control (over IP) application to position on correct flic requested. See DvpRemote for iPhone for a heroic attempt to make this work and how bad UI has to be, in essence saying “you requested movie X, to locate it i need to know where you stand right now - are you on movie Y now? and if not, could you please select from the list on which movie Z is the cursor, so i can find in Netflix channel the movie X you requested”
There should be a way by optional start parameter
to specify where in the instant queue should the selection go,
or more rudimentary, presence of param specify to go to position 1
or at least an ECP button press that will position to 1
Regarding (3), how about making “InstantReplay” button jump back to the queue beginning? This way users that have the new remote with “circle back” arrow can also enjoy this functionality!
Why not just make FF go to the last movie in the queue, and REV go to the first movie in the queue? Sounds simple enough to me for a gridscreen type display that I got to work. Right now FF/REV jump by 5 - which does absolutely no good at all especially if you have 5 movies in your queue.
“destruk” wrote:
Why not just make FF go to the last movie in the queue, and REV go to the first movie in the queue? Sounds simple enough to me for a gridscreen type display that I got to work. Right now FF/REV jump by 5 - which does absolutely no good at all especially if you have 5 movies in your queue.
It jumps one full page/screen’s worth, which I actually find quite useful… much more so than jumping to the end of my queue would be. Maybe holding down the FF or REV could scroll to the beginning or end and stop, like it does on the non-grid poster screens.
“destruk” wrote:
Why not just make FF go to the last movie in the queue, and REV go to the first movie in the queue? Sounds simple enough to me for a gridscreen type display that I got to work. Right now FF/REV jump by 5 - which does absolutely no good at all especially if you have 5 movies in your queue.
It jumps one full page/screen’s worth, which I actually find quite useful… much more so than jumping to the end of my queue would be. Maybe holding down the FF or REV could scroll to the beginning or end and stop, like it does on the non-grid poster screens.
That would work well, as long as the regular left/right buttons could still pass the zero point as they do now.
“destruk” wrote:
Why not just make FF go to the last movie in the queue, and REV go to the first movie in the queue? Sounds simple enough to me for a gridscreen type display that I got to work. Right now FF/REV jump by 5 - which does absolutely no good at all especially if you have 5 movies in your queue.
It jumps one full page/screen’s worth, which I actually find quite useful… much more so than jumping to the end of my queue would be. Maybe holding down the FF or REV could scroll to the beginning or end and stop, like it does on the non-grid poster screens.
That will be too slow for the intent i described (via ECP locating movie based on data from Netflix API) - my instant queue is 170+ shows and i timed it takes 7 seconds to FF/REV flip through those. And this is just to go to the beginning or end of the queue - positioning on specific item from there on will take another 2-3 seconds.
“destruk” wrote:
Why not just make FF go to the last movie in the queue, and REV go to the first movie in the queue? Sounds simple enough to me for a gridscreen type display that I got to work. Right now FF/REV jump by 5 - which does absolutely no good at all especially if you have 5 movies in your queue.
It jumps one full page/screen’s worth, which I actually find quite useful… much more so than jumping to the end of my queue would be. Maybe holding down the FF or REV could scroll to the beginning or end and stop, like it does on the non-grid poster screens.
That will be too slow for the intent i described (via ECP locating movie based on data from Netflix API) - my instant queue is 170+ shows and i timed it takes 7 seconds to FF/REV flip through those. And this is just to go to the beginning or end of the queue - positioning on specific item from there on will take another 2-3 seconds.
I don’t disagree, but that’s a different application than the one I was referring to with destruk, who suggested changing the current behavior of the FF/REV buttons. Maybe they could add a key sequence to jump to the beginning of the queue or something, so ECP apps could trigger it without it affecting the normal end-user behavior of the channel.
I would think the ECP could be extended to add things like this. I don’t see why it’s necessary for it to only be able to send key presses that can be sent by the remote. For example, add a “jumpFirst” and “jumpLast” command. While they’re at it, they could add a “jumpN” where N specifies a number to jump from the current location.
Having both launch parameters for the channels and also extra commands that could be sent to the channels themselves would be extremely useful.
I might be missing something, but I don’t see any way to get feedback about what the Roku is currently doing - which channel it’s in, whether it’s on the nav screen, playing a movie/song (and which one?), etc.
“WillEV” wrote:
Having both launch parameters for the channels and also extra commands that could be sent to the channels themselves would be extremely useful.
I might be missing something, but I don’t see any way to get feedback about what the Roku is currently doing - which channel it’s in, whether it’s on the nav screen, playing a movie/song (and which one?), etc.
Is this possible?
Not currently. At the moment, you’re limited to sending keys, querying for installed apps and icons, and launching apps.
I see that the v3 of the SDK has now included support for passing parameters directly to a running BrightScript app.
Is this something that could be used to control Pandora, Netflix etc with the capabilities described earlier?
Still looking for the ability to launch Netflix/Hulu/Pandora with a target playback movie/show/station; ideally would then be able to query for currently playing data as well.
“WillEV” wrote:
I see that the v3 of the SDK has now included support for passing parameters directly to a running BrightScript app.
Where’d you see that? There are the new socket components, but an app would have to explicitly implement a listener in order to accept parameters that way. I’m not aware of any other way to talk to a running app..?
“WillEV” wrote:
I see that the v3 of the SDK has now included support for passing parameters directly to a running BrightScript app.
Where’d you see that? There are the new socket components, but an app would have to explicitly implement a listener in order to accept parameters that way. I’m not aware of any other way to talk to a running app..?
Building completely proprietary protocol via sockets for each channel is brain-dead. There is (alas only partial) solution in SDK 3:
Since Firmware version 3.0:
• input enables a developer to send custom events to their Brightscript application. It takes a user defined list of name-value pairs sent as query string uri parameters. The external control server places these name-value pairs into a BrightScript associative array and passes them directly through to the currently executing channel script via a Message Port attached to a created roInput object. Please refer to Section 3.1 below for more detailed recommendations on how to pass your data. Messages of type roInputEvent have a GetInfo() method that will obtain the associative array. The arguments must be URL-encoded. This command is sent via a POST with no body.
Example: POST /input?acceleration.x=0.0&acceleration.y=0.0&acceleration.z=9.8
This ensures only one-way communication, injecting data from outside to running app. But there is no way to query status - this being the kind of synchronous invocation (http request - needs to pause and wait for result while message is passed to queue and wait to be handled and reply returned - then retuen that back) it seems against messaging implementation in brightscript (from the little i have seen). Which is a dirty shame, because i have been looking recently at the external control protocol of DirecTV DVRs - it reports status very nicely, what program is playing now, what’s next on which channel etc