TiVo Community Forum banner
741 - 760 of 957 Posts

·
Premium Member
Joined
·
448 Posts
Still not working for me. It's never been down for this long, so I suspect a change was made on the TiVo side that broke the functionality, intentionally or unintentionally.

@dlfl I also noticed some RPC functions are broken in kmttg, but not all?

Examples:
kmttg has a function (Episode Info [n]) that can grab all the episodes for a series. When executed it gives the following RPC error:
Code:
RPC error response:
{
   "code": "authenticationFailed",
   "text": "Failed calling IT mind with 'login': ProcessITMindRequest caught 'PostString failed: Curl error: Failure when receiving data from the peer (56). Url: https://www8.tivo.com/authinternal/mindLite2?type=login'",
   "type": "error"
}

rpc Auth error - null
Another kmttg function, that still works, is "Display Data [j]" which displays a bunch of details about a show including programId and seriesId:
Code:
Kajillionaire
Recorded Fri 07/02/2021 10:30 PM on 1802=HBOHD-E, Duration=106 mins, originalAirDate=2020-12-23, movieYear=2020
Old Dolio, the 26-year-old homeschooled daughter to a dysfunctional pair of Los Angeles scam artists, begins to question her unconventional upbringing and her identity after her parents invite a credulous stranger to participate in an upcoming scheme.
CopyProtected = Yes
ExpirationImage = save-until-i-delete-recording
HD = Yes
ProgramId = MV0423866774-0423866775
ProgramId_unique = MV0423866774-0423866775_1625286600000
SeriesId = MV0423866774
channel = HBOHD-E
channelNum = 1802
collectionId = tivo:cl.423866774
contentId = tivo:ct.423866775
date = Fri 07/02/2021
date_long = Fri 07/02/2021 10:30 PM
description = Old Dolio, the 26-year-old homeschooled daughter to a dysfunctional pair of Los Angeles scam artists, begins to question her unconventional upbringing and her identity after her parents invite a credulous stranger to participate in an upcoming scheme.
duration = 6355000
gmt = 1625286600000
kuid = yes
movieYear = 2020
offerId = tivo:of.ctd.888066.1802.cable.2021-07-03-04-30-00.6300
originalAirDate = 2020-12-23
recordingId = tivo:rc.1470489
size = 3166699520
sizeGB = 2.95 GB
title = Kajillionaire
titleOnly = Kajillionaire
tivoName = Media Room
url = removed
url_TiVoVideoDetails = removed
kmttg search still works, so if a show is available linearly in the next 10-14 days or available through one of the available streaming services a user would be able to find individual programIds and copy and paste them into MG3.

Another kmttg function that still works is "Display RPC data [j]" which displays even more details about a show also including programId and seriesId:
Code:
Betty - Sweet Tooth
Recorded Fri 07/02/2021 09:00 PM on 1802=HBOHD-E, Duration=31 mins, EpisodeNumber=205, originalAirDate=2021-07-02
Kirt enlists Shelby on a mission; Honeybear and Camille have second thoughts; Indigo looks to make a buck by any means; Janay and Sylvester are kind of a thing.
{
   "episodic": true,
   "subscriptionForCollectionIdAndChannel": [{
      "useOfferStartPadding": false,
      "useOfferEndPadding": false,
      "bodyId": "",
      "type": "subscription"
   }],
   "channel": {
      "logoIndex": 65553,
      "isDigital": true,
      "channelNumber": "1802",
      "isDiscovered": false,
      "isReceived": true,
      "isBlocked": false,
      "bitrate": "4185996132352",
      "levelOfDetail": "medium",
      "isHdtv": true,
      "isKidZone": false,
      "type": "channel",
      "callSign": "HBOHD-E",
      "isHidden": false,
      "isEntitled": true,
      "sourceType": "cable",
      "name": "HBOHD-E",
      "serviceId": "15152",
      "channelId": "tivo:ch.9",
      "isFavorite": false,
      "stationId": "tivo:st.888066"
   },
   "rating": [{
      "type": "typedTvRating",
      "value": "ma"
   }],
   "levelOfDetail": "medium",
   "mimeType": "video/mpg2",
   "type": "recording",
   "suggestionScore": 0,
   "remindUser": false,
   "isEpisode": true,
   "originalAirdate": "2021-07-02",
   "deletionPolicy": "neverDelete",
   "state": "complete",
   "subscriptionIdentifier": [{
      "subscriptionType": "seasonPass",
      "subscriptionId": "tivo:sb.15004221",
      "type": "subscriptionIdentifier"
   }],
   "contentType": "video",
   "tvRating": "ma",
   "drm": {
      "cgms": "copyNoMore",
      "multiRoomStream": true,
      "tivoToGo": false,
      "multiRoomView": false,
      "type": "drm",
      "recordingPlaybackPolicy": "allowed",
      "mrsPlaybackPolicy": "allowed"
   },
   "requestedEndPadding": 60,
   "scheduledEndTime": "2021-07-03 03:31:00",
   "colorType": "color",
   "quality": "best",
   "requestedEndTime": "2021-07-03 03:30:00",
   "size": 911360,
   "subtitle": "Sweet Tooth",
   "actualEndTime": "2021-07-03 03:31:01",
   "offerId": "tivo:of.ctd.888066.1802.cable.2021-07-03-03-00-00.1800",
   "desiredDeletion": "2038-01-01 00:00:00",
   "internalRating": [{
      "ratingTypeId": "tivo:rt.6",
      "type": "internalRating",
      "ratingValueId": "tivo:rv.6"
   }],
   "partnerCollectionId": "EP0414830902-0442565279",
   "actualStartTime": "2021-07-03 02:59:58",
   "episodeNum": [5],
   "contentId": "tivo:ct.442565279",
   "description": "Kirt enlists Shelby on a mission; Honeybear and Camille have second thoughts; Indigo looks to make a buck by any means; Janay and Sylvester are kind of a thing.",
   "title": "Betty",
   "hdtv": true,
   "collectionTitle": "Betty",
   "duration": 1857,
   "scheduledStartTime": "2021-07-03 03:00:00",
   "startTime": "2021-07-03 03:00:00",
   "transportType": "stream",
   "bodyId": "tsn:84900019023EFE5",
   "collectionId": "tivo:cl.414830902",
   "isAdult": false,
   "watchedTime": 0,
   "cc": true,
   "diskPartition": "user",
   "requestedStartPadding": 0,
   "seasonNumber": 2,
   "isNew": true,
   "collectionType": "series",
   "requestedStartTime": "2021-07-03 03:00:00",
   "descriptionLanguage": "English",
   "expectedDeletion": "2038-01-19 03:14:00",
   "videoResolution": "hd",
   "recordingId": "tivo:rc.1464499"
}
Can you tell how kmttg is getting the "Display Data" or "RPC data"? is there any way to use that technique with MG3?
 

·
Cranky old novice
Joined
·
9,508 Posts
Discussion Starter · #744 ·
………….
Can you tell how kmttg is getting the "Display Data" or "RPC data"? is there any way to use that technique with MG3?
For a variety of reasons, really not worth discussing in detail, this is not going to happen. I just can't see a way to do this that has a reasonable probability of success with a reasonable amount of effort. Sorry!

I guess I will just be ripping the RPC stuff out of MG3 eventually since it appears to be dead forever.
 

·
Premium Member
Joined
·
448 Posts
No worries @dlfl! I thought it was worth asking.

As I think I mentioned earlier, I've switched to downloading content from my TiVos and playing it back on JRiver Media Center, which doesn't require an external metadata file.

I've stopped downloading metadata files with kmttg and pyTivo, since I no longer need them to pull back to my TiVos.

I'm sorry to see the functionality broken, because I'm sure people would still still like to use it.

That being said ... I still use MG3 multiple time daily to look up shows and movies and rename them.
 

·
leswar
Joined
·
240 Posts
No worries @dlfl! I thought it was worth asking.

As I think I mentioned earlier, I've switched to downloading content from my TiVos and playing it back on JRiver Media Center, which doesn't require an external metadata file.

I've stopped downloading metadata files with kmttg and pyTivo, since I no longer need them to pull back to my TiVos.

I'm sorry to see the functionality broken, because I'm sure people would still still like to use it.

That being said ... I still use MG3 multiple time daily to look up shows and movies and rename them.
So how does JRMC compare to just using PLEX would you say?
 

·
Premium Member
Joined
·
448 Posts
So how does JRMC compare to just using PLEX would you say?
Sorry to be slow in replying!

TBH - I've never used Plex, so I can't compare.

I started using JRMC many years ago to manage my media files (music, TV shows and movies).

It is a great app that is constantly being developed and improved. It is very powerful and customizable. Lots of ways to tag and group things.

When I saw the writing on the wall about TiVo moving away from being able to download and upload shows, I started down the path of using JRMC as my main way to play downloaded or ripped media (as opposed to using JRMC only as a management tool and TiVo as the player).

Now that we can't search for programIds, this became much more important. JRMC looks up metadata based on tagging series or movies with a TMDB ID.

If I can answer any more specific questions, please send me a PM. Happy to help, but I don't want to turn this thread into a JRMC thread. :)
 

·
Premium Member
Joined
·
448 Posts
@dlfl - I found a search bug.

Using MG3 to search for the TV show "Secrets" using TVDB produces the correct results: 2 shows with that single word title show at the top of the search results. :thumbsup:

Searching for the TV show "Secrets" using TMDB doesn't produce the show at all. In fact, no single word results appear at all. :thumbsdown:

The show is at: Secrets
and: Secrets - TheTVDB.com

I also noticed when I search the TMDB web site directly, the show doesn't appear until near the bottom of the 2nd page of results.

Can you work your magic and fix it?
 

·
Cranky old novice
Joined
·
9,508 Posts
Discussion Starter · #749 ·
@dlfl - I found a search bug.

Using MG3 to search for the TV show "Secrets" using TVDB produces the correct results: 2 shows with that single word title show at the top of the search results. :thumbsup:

Searching for the TV show "Secrets" using TMDB doesn't produce the show at all. In fact, no single word results appear at all. :thumbsdown:

The show is at: Secrets
and: Secrets - TheTVDB.com

I also noticed when I search the TMDB web site directly, the show doesn't appear until near the bottom of the 2nd page of results.

Can you work your magic and fix it?
Doesn't seem fixable. TMDB is only returning 20 results to MG3 using that search term and none of them are the right one. Strange!
 

·
Premium Member
Joined
·
448 Posts
Doesn't seem fixable. TMDB is only returning 20 results to MG3 using that search term and none of them are the right one. Strange!
Hmmm ... so nothing you can do on your end if TMDB limits to 20 results.

This seems like a pretty big TMDB bug, especially for shows with common names like "Secrets".

IIRC, we had a similar issue with MG3 and TVDB and you forced exact matches to show at the top of the results. You can't do that here, because you don't have the results to prioritize.

Could you bring the issue up in the TMDB forum (I don't know enough or I would do it)? See if there's a way to return exact matches only? Or, have them prioritize results to include exact matches?
 

·
Cranky old novice
Joined
·
9,508 Posts
Discussion Starter · #751 ·
Hmmm ... so nothing you can do on your end if TMDB limits to 20 results.

This seems like a pretty big TMDB bug, especially for shows with common names like "Secrets".

IIRC, we had a similar issue with MG3 and TVDB and you forced exact matches to show at the top of the results. You can't do that here, because you don't have the results to prioritize.

Could you bring the issue up in the TMDB forum (I don't know enough or I would do it)? See if there's a way to return exact matches only? Or, have them prioritize results to include exact matches?
See first post for download of new release Version 3.96

Turns out TMDB returns multiple pages of (about?) 20 results each for some series searches, including "Secrets". Why the item exactly matching the search query isn't in the first 20 results seems very strange, Anyway I have modified MG3 to get the first 2 pages (if 2 are available). BTW, for "Secrets" there are 15 pages of results! As always MG3 sorts the results based on their closeness to the search query and displays a maximum of the 23 best matches. For "Secrets" this puts it at the top of the list.

If I get ambitious I may bring it up on their forum but this seems to be a fix and was pretty easy. I would be reluctant to have MG3 getting 15 pages of results as the sort times based on similarity might get rather long (or not).
 

·
Cranky old novice
Joined
·
9,508 Posts
Discussion Starter · #755 ·
The new auth type looks like the link below. The hard part is getting the token as there are a hand full of requests that you need to make to exchange a username/password for a domainToken cookie the good news is the token looks like it should be valid for a week.
tivo-scripts/tivo-ws.js at master · lart2150/tivo-scripts
Very interesting, and I've also read your posts on this in the kmttg thread. MG3 uses only the remote RPC portal. MG3 is written in C# but the RPC code is in a Python program that is run as a process by MG3. Results of RPC calls are obtained by capturing the stdout stream of the python program. The authorization code in the Python program (which no longer works) was provided by @moyekj (kmttg author). You can see this by downloading MG3 (see first post here). The Python file is rpcSearch128.py and the certificate is in the .pem file. The authorization code is near the top of the file.

I'm not a Java programmer and also don't really follow everything you've posted about the domain token, etc. Even if java code to perform the authorization could be devised, I doubt that I would want to port my entire Python program to java code. If it is possible to devise Python code to get the token and perform the authorization then it should be feasible to modify the python program so as to get RPC searches working again in MG3.
 

·
Cranky old novice
Joined
·
9,508 Posts
Discussion Starter · #756 ·
Additional about RPC authorization:

If someone would help me devise C# (.NET) code to perform the “domain-token” authorization, I can probably port the python RPC code to C#, and this is something I am willing to attempt. The only reason the MG3 RPC code was done in Python was because I couldn’t figure out how to do the (old-style) authentication in C#.
 

·
Registered
Joined
·
51 Posts
If you are going to rewrite it I would also switch to the websocket so you don't need to worry about the client certificate expiring. I'm not a python developer but I think if you wanted to keep the python code beyind getting the token (you could have people pull the cookie from their browser).
Code:
    self.Write(RpcRequest('bodyAuthenticate',
        credential={
            'type': 'mmaCredential',
            'username': username,
            'password': password,
            }
        ))
would become
Code:
    self.Write(RpcRequest('bodyAuthenticate',
        credential={
            domainToken={
                'domain': 'tivo'
                'token': 'the cookie token here'
                'type': 'domainToken'
            }
        ))
I've started working on building a javascript (node) client to pull the token and you start with TiVo Online you'll get 302 redirected to another page with a form you'll need to pull the two hidden fields and the post url.

That post will 302 redirect you to the sign in page. there's another post that happens to get what all is enabled you can ignore that

the next post to
https://tivoidp.tivo.com/s/sfsites/aura?r=1&other.Tivo_idp_LightningLoginForm.login=1 does the real login. Based on my experience with salsforce aura.context does change from time to time so you'll need to extract it from the page. aura.pageURI is the same as the page you were redirected to without the domain/protocol. This will give you a frontdoor url
that should redirect you to another page that will have the saml response extract that do the saml post and you'll have your cookie.
 

·
Cranky old novice
Joined
·
9,508 Posts
Discussion Starter · #758 ·
Assuming the ‘body authenticate’ code replacement you are suggesting works with a suitable domain token cookie, are you saying that the client certificate you provided that expires 12/2022 (which is embodied in the .pem file distributed with MG3) will still be needed, unless the switch to websocket is done? Also, since the modified call does not send the user/pwd credentials does that mean the domain token is unique to each user?
 

·
Registered
Joined
·
51 Posts
You would need to use the websocket to no longer need the client certificate. I find the websocket a lot easier then the raw tls connection as you'll get a whole response in one websocket message.

The domainToken cookie is a session cookie for a given user that is good for I think a week.

If I finish my node client it would be super easy to make a rest http server that you bundel and run instead of making individual calls.
 

·
Cranky old novice
Joined
·
9,508 Posts
Discussion Starter · #760 · (Edited)
I was able to grab a domainToken in my Edge browser cookies under TiVo, but it was for online.tivo.com, not just tivo. I assume that would not be the correct token for RPC (?). If it is correct, I would try hardcoding it into my python code with your suggested mod just to see if it enabled RPC to work.

I don’t understand how the rest server would be used in conjunction with MG3. Would that be a separate java program that MG3 would call into? From python code, or from C# code? I.e., it would interface between MG3 and the middlemind server?
 
741 - 760 of 957 Posts
Top