Does anyone know a way of fetching valid TSN's associated with an account using the middlemind gateway?

I can now connect to the Virgin Media middlemind gateway, but to fetch the "My Shows" list I need to include the TSN as the bodyId of the request to avoid getting an error. I know my TSN, but I'm wondering how a user that didn't have their TiVo accessible on the local network would find theirs out.

FYI: (The following was worked out by badtuned - I trust he doesn't mind me posting it here)

The Virgin Media middlemind gateway is at secure-tivo-api.virginmedia.com:443

Instead of using makCredential or mmaCredential, Virgin Media has a new usernameAndPasswordCredential credential type. It uses the user's Virgin Media username & password (i.e. the one used to login to their web account).

Here in the US the TiVos broadcast using Bonjour (as well as old style TiVo Beacon) and advertise information about themselves including their TSN #s, so you can detect TiVos on your LAN and grab information from there.

Also note that when you login using "bodyAuthenticate" you get a "bodyAuthenticateResponse" from middlemind server which includes information about available TiVos on your account in a "deviceId" JSONArray, including tsn #. Here's a sample from mine listing my S3 unit (my other 2 TiVos also were listed but I yanked them out of this posting):

Here in the US the TiVos broadcast using Bonjour (as well as old style TiVo Beacon) and advertise information about themselves including their TSN #s, so you can detect TiVos on your LAN and grab information from there.

At least the mDNS/Bonjour advertising is happening on the VM TiVO, but with slightly different content. Unfortunately there's no way to do mDNS on Windows Phone (my target platform). Anyway, that's a separate question that I'm working around by getting users to enter the IP address themselves, and then getting the TSN from the TLS server certificate.

Quote:

Originally Posted by moyekj

Also note that when you login using "bodyAuthenticate" you get a "bodyAuthenticateResponse" from middlemind server which includes information about available TiVos on your account in a "deviceId" JSONArray, including tsn #.

That was exactly what I was looking for. Thanks! I should now be able to support "Away Mode" in my app(s), which will make them useful to loads more people.

Note that the standard configuration in the UK is for the TiVo NOT to be connected to the LAN. It has it's own internal cable modem which it uses for EPG data, VoD, apps, etc. Even if you are using Virgin as your ISP the TiVo has it's own IP address and there is no routing between the TiVo IP and your LAN.

I'm pretty sure that getting this "Away Mode" (i.e. middlemind) working was what made Virgin wait for 12-18 months before releasing an iPad app, as it would have been worthless to the majority of their customers without the "Away Mode" support.

Well, it doesn't autoplay, but it opens the selected content, which is good enough.

That's what happens when launching Netflix from HDUI search as well. What's worse is for episodic shows you are taken to the top of the series instead of a particular episode, so then you have to find it again within Netflix among all seasons and episodes. With the older HME Netflix app TiVo would launch you directly into it and start playing it.

BTW, how exactly are you searching for Netflix titles and getting the needed "asin" data?

That's what happens when launching Netflix from HDUI search as well. What's worse is for episodic shows you are taken to the top of the series instead of a particular episode, so then you have to find it again within Netflix among all seasons and episodes. With the older HME Netflix app TiVo would launch you directly into it and start playing it.

BTW, how exactly are you searching for Netflix titles and getting the needed "asin" data?

Never mind, I found out how. "offerSearch" with Netflix partnerId returns offers with "partnerOfferId" field.

Netflix search via RPC is not very useful, at least for episodic shows. Below is an episode of Star Trek found with "offerSearch" (Star Trek Season 1, episode 9 - Dagger of the Mind). But attempting to use uri with ?partnerOfferId=programs/0000/70109444 doesn't work.

Code:

{"isEpisode":true,"episodic":true,"title":"Star Trek","objectIdAndType":"465102061163341","checksum":"0x3B0DA11791F6F6CB35C17F324DF2B40F","partnerContentId":"epgProvider:ct.EP0039850002","transportType":"partnerStream","seasonNumber":1,"noGiftCardPurchase":false,"type":"offer","contentId":"tivo:ct.252519","purchasableFrom":["dvr"],"levelOfDetail":"low","contentType":"video","hdtv":false,"partnerId":"tivo:pt.3455","collectionId":"tivo:cl.22439","partnerCollectionId":"epgProvider:cl.SH003985","offerId":"tivo:of.ts.52679501","episodeNum":[9],"audioLanguage":["en"],"subscribable":false,"duration":0,"subtitle":"Dagger of the Mind","collectionType":"series","partnerOfferId":"programs/0000/70109444"},

Also as I mentioned searching on TiVo for above episode the episode is found but it only starts Netflix with keyword search "Star Trek" which doesn't help to narrow in much on a specific episode. Can't believe what a lousy mess TiVo allows Netflix integration to be with series 4 platform.

I finally have to second the last comments. The premiere came out YEARS ago now, and still isn't finished. No complete, fast HDUI. The apps are falling apart and are slow. The upgrade cycle is slow and clunky. (How about a tivo app store? )

Every new release fixes 3 items, makes 1 new one and breaks *4*. Every new release does something behind the scenes, like screw up metadata, not allow metadata pieces, display something wrong, break folders. Something!

Do they not regression test the system (Hey, ever hear of ICE)?)? How many developers do they have? Come on, its been 2+ YEARS and HDUI is still broken.

I am starting to think it has all gotten away from them. They have 10+ year old code they are still using and just patching in pieces as they see fit with no rhyme or reason except to kludge it to work. The ultimate sphagetti code, which gets harder and harder to support or upgrade. No long term strategy except to sue someone else over patent infringment.

I was going to upgrade to 2 new tivo premier4 (replacing 3 tivoHD units) and a stream, but instead I will keep one premiere and get 2 FIOS DVR units. Might not be as good as tivo, but they do work and the screens are now hdand do On Demand on fios.

schemaNumberListGet using middlemind server is also interesting and takes a single parameter "what" whose value is either "allTypes" or "allMembers". Unfortunately for me the "allMembers" query which sounds like the more interesting one to get full set of operation names errors out for some reason. "allTypes" query does work and returns a huge list of all mind object types.

Cool. Both those look really handy. Especially for getting up-to-date schema information without having to extract it from one of the official apps.

Schema Parsing
Speaking of which... The other day I wrote a powershell script to pull all the mind operations described in a set of schema files into an Excel spreadsheet, along with their descriptions. If anyone is interested I can post a copy (I'm at work at the moment).

I ran it on the schema extracted from an old copy of the android app that I had lying around. I didn't immediately spot anything particularly interesting that I hadn't seen mentioned here before, but you never know.

Fetching TV Schedule
What I was looking for was a quick way to get "What's on now" information, but I'm none the wiser.

The "Guide" section of the iPad app [1] shows a list of all the available TV channels, with the currently showing program title for each. You can then select a channel and it shows you the schedule for that channel for the rest of the day.

Does anyone know how to quickly fetch that information (particularly the channel list with "what's on now")?

I can get it using "gridRowSearch", but it seems very slow compared to how quickly the iPad UI populates itself. Am I just doing it wrong? I tried reducing the time window and level of returned detail for gridRowSearch, which helped, but it still didn't approach how quickly the iPad app does it.

I don't know if you've seen kmttg Remote Guide tab? What I do there is there's a "Channels" button you click on once to get full list of all channels using "channelSearch" which I list in the table as folders. That part is not speedy but you only do it once. User can then select a 12 hour time frame to use (can be from now up to about 12 days away and defaults to current time). Then when user clicks on a channel it quickly obtains the listings for that 1 channel in a 12 hour window using "gridRowSearch" and displays the result.
The iPad app is limiting the channel range and the time range to what is displayed in visual range. I believe there has to be individual calls per channel with a very limited time window to do that.
i.e. Speeding it up is all about limiting channel and time range used.

Thanks for that. I'm just glad to know that I've not missed some other way of getting it that I could be using.

BTW: Do you (or anyone else) know if it's still possible to capture the traffic from the iPad (or Android) app? I've been assuming that it's at least "really quite hard" since they changed to authenticating the TLS certificates, but I've never looked to see whether it's actually impossible (given e.g. a jailbroken iPad, some specific network switch, etc).

The TiVo Roamio series that just launched has built in Opera web browser with HTML5 support. After some fussing around I discovered a way to display any arbitrary web page on my Roamio Plus. For example to display the TCF "TiVo Roamio DVRs" web page the RPC command would be:

Once displaying a page the remote arrow keys can be used to move around the page and the select key to follow a link. I didn't find a way to go back after clicking a link (the Back button didn't work).

Just for grins I fired up pyTivo and connected to pyTivo server via my Roamio and was able to navigate the web page to select a video to push to the Roamio:
{
"uiDestinationType":"web",
"type":"uiNavigate",
"bodyId":"tsn:xxxxxxxxxxxxxxx",
"uri":"x-tivo:web:http://192.168.10.198:9032"
}

Note that web pages with flash video do not work (missing flash plugin messages).

NOTE: This only works for series 5 TiVos - didn't work for my series 4 units.

Haven't fully explored this as I just discovered this in last hour or so, but perhaps for next kmttg release I'll add another Remote tab where user can enter arbitrary URL to jump to.

__________________
Follow @pytivo on Twitter for project updates and more! To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts. | To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts. A Web app for Roku Remote Control

Thanks for checking. And that's still good news, as far as I'm concerned.

__________________
Follow @pytivo on Twitter for project updates and more! To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts. | To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts. A Web app for Roku Remote Control

Setting up a mini web server with basic html5 video tag worked. The TiVo built in web player adds its own basic player with play/pause with "controls" as part of the video tag. As with Flash by default the resolution of the web player is 1280x720, so 720p video fills the screen.
NOTE: mp4 container with ac3 audio resulted in no audio, but aac audio worked.

It probably depends on how they are written. Obviously a HTML5 app designed for a tablet won't work on TiVo. I'm guessing TiVo is also using special tags to handle remote presses. It would be interesting to see what the Netflix and YouTube apps look like on a normal web browser.

It's the same YouTube App that launches on the Roamios so controls work well and run much faster than the Flash version on the Premieres - but that is mostly because of better hardware not because HTML5 is much faster than Flash.
Note that contrary to what has been said in TCF threads, the Netflix App TiVo is using launches as Flash, not HTML5, which explains why it didn't get user profile support automatically as some expected.