TiVo Community
TiVo Community
TiVo Community
Go Back   TiVo Community > Underground Playground > TiVo Underground
TiVo Community
Reply
Forum Jump
 
Thread Tools
Old 06-17-2011, 01:09 PM   #91
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
Quote:
Originally Posted by innocentfreak View Post
I guess the next question is there anything us non programmers can do to help?
Post ideas about what ya want!

I have a feeling moyekj will have a java version of something out before long. I'm struggling with (personally) interpreting JSON nomenclature, and getting useful Requests put together. For example, when querying the (local) To Do List, I can only get the first item in the list. I'm sure there's something to say "get the rest", but for the time being, I'm just trying to get a grasp of all the things that can be had, and will worry about the details later....
__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
orangeboy is offline   Reply With Quote
Old 06-17-2011, 01:11 PM   #92
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
Quote:
Originally Posted by ckrames1234 View Post
I love the API documentation, great work arantius. I will definitely try to contribute to it. There are so many things I could do with this, projects I could make, the possibilities are literally endless.

I never posted sample code on here because in my sample, I tried using a random X-ApplicationSessionId, which I now know is not a good idea. :P

(For some reason I never got notified when someone posted on here :/)
Nice to hear! More eyes on it could/should mean quicker development of stuff!
__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
orangeboy is offline   Reply With Quote
Old 06-17-2011, 02:26 PM   #93
innocentfreak
Registered User
 
Join Date: Aug 2001
Location: Florida
Posts: 8,407
Quote:
Originally Posted by orangeboy View Post
Post ideas about what ya want!
LOL
For example, does this mean potentially we could actually transfer and automatically rename shows so they end up in the SxxExx format in the name since the current way is hit or miss on season and episode information even though the Premiere screen will display it properly?
__________________
1 - TiVo Roamio Pro
2 - TiVo Premiere XL

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.
innocentfreak is offline   Reply With Quote
Old 06-17-2011, 03:06 PM   #94
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
Quote:
Originally Posted by innocentfreak View Post
LOL
For example, does this mean potentially we could actually transfer and automatically rename shows so they end up in the SxxExx format in the name since the current way is hit or miss on season and episode information even though the Premiere screen will display it properly?
With proper formatting of the information retrieved from the Premiere, I would think that yes, SxxExx could be added to the subtitle (episode name). I'll have to see if Search capabilities extend to sources like Netflix or Amazon for movies and/or documentaries.
__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
orangeboy is offline   Reply With Quote
Old 06-17-2011, 03:10 PM   #95
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
OK, got past the To Do List search only returning one item by including a "count=" option:
Code:
    def ToDoSearch(self):
        req = RpcRequest('recordingSearch', 
                         levelOfDetail='low', 
                         bodyId='-', 
                         count='50',
                         state=['scheduled'])
Setting a count too high results in:
Code:
{'debug': '', 'text': 'Count is out of range. 1 <= count <= 50', 'code': 'badArgument', 'type': 'error'}
I'm looking for some type of "Anchor" statement that could continue listing beyond the first 50 items.

Adding an offset seems to do the trick:
Code:
    def ToDoSearch(self):
        req = RpcRequest('recordingSearch', 
                         levelOfDetail='low', 
                         bodyId='-', 
                         count='50',
                         offset='50',
                         state=['scheduled'])

__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.

Last edited by orangeboy : 06-17-2011 at 04:04 PM.
orangeboy is offline   Reply With Quote
Old 06-17-2011, 03:50 PM   #96
tomhorsley
Registered User
 
Join Date: Jul 2010
Posts: 573
The thing I'm most interested in is correcting rotten bits of the native tivo interface, like by having a cron job to download schedule info off the tivo and schedule recording of alternate showings of episodes you missed due to a conflict (but which are now not "new" anymore, so the tivo won't automatically record them).

Or a way to correct the "new" flag by recording the descriptions of the shows and scheduling recordings for any show with a new description and cancelling recordings of shows marked new that have a description I already remember.

I can also imagine using the tivo to get schedule info, then using it in a myth TV setup to get an additional tuner that will at least work on unencrypted channels.
tomhorsley is offline   Reply With Quote
Old 06-17-2011, 04:55 PM   #97
arantius
Registered User
 
Join Date: Jul 2009
Posts: 60
Quote:
Originally Posted by ckrames1234 View Post
I never posted sample code on here because in my sample, I tried using a random X-ApplicationSessionId, which I now know is not a good idea.
I'm generally mystified by that value yet. It just seemed strange that they seemed to be large numbers in a small range, for what samples I had, so I just did random within that range.

Quote:
Originally Posted by ckrames1234 View Post
(For some reason I never got notified when someone posted on here :/)
As far as I can tell, (depending on options) you get one notification, then no more until you visit the site (thread?).
arantius is offline   Reply With Quote
Old 06-17-2011, 09:34 PM   #98
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
Just got to "uiNavigate". Nice. Set a URI gathered from "uiDestinationInstanceSearch", and instantly jump to that (HME) app, just like hitting LiveTV or TiVo button.

URIs:
Code:
Amazon:             x-tivo:hme:uuid:35FE011C-3850-2228-FBC5-1B9EDBBE5863
Blockbuster:        x-tivo:hme:uuid:63ED0C3D-D49C-9602-C322-E0A3D3EA5A3D
Browse Web Videos:  x-tivo:hme:uuid:19452283-D00B-C411-595D-447ABF62F37C
Browse Web Videos:  x-tivo:hme:uuid:6784571A-016C-8A46-DF2F-FD842D78006F
Fandango:           x-tivo:hme:uuid:B9DDBECF-BC6D-5E33-388A-4CF840068D79
Music Choice:       x-tivo:hme:uuid:7FDF1BEB-AF92-B8B6-6269-FAE44C8F887D
Netflix:            x-tivo:hme:uuid:7edeb291-0db8-487f-b842-6b97bc71ad9a
One True Media:     x-tivo:hme:uuid:D1AF7BED-325E-5E6E-B087-72381C92D077
Swivel:             x-tivo:hme:uuid:2BD40EF7-D9D2-3CD4-0130-6C18855CE898
TiVoCast RSS:       x-tivo:hme:uuid:863cb78f-efdd-4106-b572-51733983dc76
Youtube:            x-tivo:hme:uuid:9AA364C9-CF8A-1E1D-B50F-CC65C40D4A96
The function:
Code:
    def uiNavigate(self):
        req = RpcRequest('uiNavigate',
                         uri='x-tivo:hme:uuid:2BD40EF7-D9D2-3CD4-0130-6C18855CE898',
                         bodyId='-')
        self.Write(req)

__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
orangeboy is offline   Reply With Quote
Old 06-17-2011, 10:52 PM   #99
arantius
Registered User
 
Join Date: Jul 2009
Posts: 60
Quote:
Originally Posted by innocentfreak View Post
I guess the next question is there anything us non programmers can do to help?
Dump more traffic (with my mdns daemon and tcpcatcher) to find out any details missing from my doc. E.g.how do i make a season pass? How do i cancel it? Etc.
arantius is offline   Reply With Quote
Old 06-17-2011, 11:13 PM   #100
innocentfreak
Registered User
 
Join Date: Aug 2001
Location: Florida
Posts: 8,407
Quote:
Originally Posted by arantius View Post
Dump more traffic (with my mdns daemon and tcpcatcher) to find out any details missing from my doc. E.g.how do i make a season pass? How do i cancel it? Etc.
Ok I will have to look into it tomorrow and see if I can figure it out. Never messed with any of these tools.
__________________
1 - TiVo Roamio Pro
2 - TiVo Premiere XL

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.
innocentfreak is offline   Reply With Quote
Old 06-17-2011, 11:28 PM   #101
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
Taking the information that is found from "subscriptionSearch", I've come up with these values that should work with "subscribe" (to create a new Season Pass):

Code:
'keepBehavior' : 'forever',         KUID
'keepBehavior' : 'fifo',            Space Needed

'showStatus' : 'everyEpisode',      All with Duplicates
'showStatus' : 'rerunsAllowed',     First Run & Reruns
'showStatus' : 'firstRunOnly',      First Run Only

'startTimePadding' : 0,             On time
'startTimePadding' : 60,            One minute early    

'endTimePadding' : 0                On time
'endTimePadding' : 60               One minute late

"maxRecordings": 0                  All episodes
"maxRecordings": 25                 Keep at Most 25 episodes

'recordingQuality' : 'best',        *Maybe* basic, medium, high, best, device_default if 'isDigital' : False,
The rest I think would have to come from "contentSearch" "gridRowSearch".
gridRowSearch allows searching by Series title.
__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.

Last edited by orangeboy : 06-17-2011 at 11:55 PM.
orangeboy is offline   Reply With Quote
Old 06-17-2011, 11:37 PM   #102
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
More keyword discoveries through trial-n-error:
Code:
mixMappingSearch
'You must specify exactly one of: childMixId, parentMixId, mixMappingId, mixServiceGroup or minUpdateDate'

tunerConflictEventRegister
'This handler only support monitoring.'

tunerStateEventRegister
'Must specify monitoring.'

__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
orangeboy is offline   Reply With Quote
Old 06-18-2011, 08:09 AM   #103
puffdaddy
Registered User
 
Join Date: Mar 2006
Posts: 291
Good work. Here are some additional supported MRPC/2 requests. Note that some of these may not be implemented in the iPad app.
Code:
BodyAuthenticate
BodyConfigSearch
ChannelSearch
ChannelUpdate
CheckParentalControlsPinRequest
CheckPurchaseControlPinRequest
ControllerIdVctIdGet
EndUserMessageEventRegister
EndUserMessageRemove
EndUserMessageSearch
EndUserMessageUpdate
IdSearch
KeyEventSend
KnownHostItemRemove
KnownHostItemSearch
KnownHostItemStore
LocalApplicationDataRemove
LocalApplicationDataSearch
LocalApplicationDataStore
OfferSearch
OptStatusGet
PartnerLogging
PartnerTicketRemove
PartnerTicketRenewE
PartnerTicketStatus
PartnerTicketStore
Ping
PromotionalMenuItemGet
RecordingFolderItemEmpty
RecordingFolderItemSearch
RecordingSearch
RecordingUpdate
ServiceStateEventRegister
SetParentalControlsPinRequest
SetPurchaseControlPinRequest
SettingsGet
SettingsStore
ShowcaseStateSearch
Subscribe
SubscriptionSearch
SubscriptionsReprioritize
SyncRequest
SystemDiagnosticSearch
TransportStreamIdMappingsCacheUpdate
TransportStreamIdMappingsGet
TransportStreamIdMappingsScanConfigurationGet
TransportStreamIdMappingsScanConfigurationStore
TransportStreamIdMappingsScanControl
TunerConflictEventRegister
TunerConflictResolve
TunerStateEventRegister
UiNavigate
Unsubscribe
UserContentSearch
UserContentStore
VideoPlaybackInfoEventRegister
VideoPlaybackPositionSet
VideoProviderListGet
WhatsOnSearch
CandyBarGet
ClassicUiSegue
FlashSegue
HmeSegue
ReturnSegue

puffdaddy is offline   Reply With Quote
Old 06-18-2011, 08:28 AM   #104
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
Quote:
Originally Posted by puffdaddy View Post
Good work. Here are some additional supported MRPC/2 requests. Note that some of these may not be implemented in the iPad app.
Code:
BodyAuthenticate
BodyConfigSearch
ChannelSearch
ChannelUpdate
CheckParentalControlsPinRequest
CheckPurchaseControlPinRequest
ControllerIdVctIdGet
EndUserMessageEventRegister
EndUserMessageRemove
EndUserMessageSearch
EndUserMessageUpdate
IdSearch
KeyEventSend
KnownHostItemRemove
KnownHostItemSearch
KnownHostItemStore
LocalApplicationDataRemove
LocalApplicationDataSearch
LocalApplicationDataStore
OfferSearch
OptStatusGet
PartnerLogging
PartnerTicketRemove
PartnerTicketRenewE
PartnerTicketStatus
PartnerTicketStore
Ping
PromotionalMenuItemGet
RecordingFolderItemEmpty
RecordingFolderItemSearch
RecordingSearch
RecordingUpdate
ServiceStateEventRegister
SetParentalControlsPinRequest
SetPurchaseControlPinRequest
SettingsGet
SettingsStore
ShowcaseStateSearch
Subscribe
SubscriptionSearch
SubscriptionsReprioritize
SyncRequest
SystemDiagnosticSearch
TransportStreamIdMappingsCacheUpdate
TransportStreamIdMappingsGet
TransportStreamIdMappingsScanConfigurationGet
TransportStreamIdMappingsScanConfigurationStore
TransportStreamIdMappingsScanControl
TunerConflictEventRegister
TunerConflictResolve
TunerStateEventRegister
UiNavigate
Unsubscribe
UserContentSearch
UserContentStore
VideoPlaybackInfoEventRegister
VideoPlaybackPositionSet
VideoProviderListGet
WhatsOnSearch
CandyBarGet
ClassicUiSegue
FlashSegue
HmeSegue
ReturnSegue
Wow! "SubscriptionsReprioritize" sounds interesting! I'm going to run the 47 or so new Requests to see what the Premiere spits out.

ETA: It appears the Requests are case-sensitive. When the proper case is provided, I get an error indicating "badArgument" if I don't supply the required or correct keywords. When the proper case isn't supplied, I get an error indicating "routingError". Is the list above properly cased?
__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.

Last edited by orangeboy : 06-18-2011 at 09:11 AM.
orangeboy is offline   Reply With Quote
Old 06-18-2011, 09:40 AM   #105
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
Request for those with iPad and capture capabilities:

Looking at the images supplied with the iPad app, I'm seeing "Thumbs" ratings. Can you give Thumbs Up/Down preferences with the app? If so, can you capture what is being Requested?

From the iPad app:



Attached Images
File Type: png ThumbsDown1_BoD_icon.png (2.7 KB, 255 views)
File Type: png ThumbsDown2_BoD_icon.png (3.5 KB, 254 views)
File Type: png ThumbsDown3_BoD_icon.png (4.6 KB, 254 views)
__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
orangeboy is offline   Reply With Quote
Old 06-18-2011, 11:17 AM   #106
arantius
Registered User
 
Join Date: Jul 2009
Posts: 60
In the app I've seen it display thumbs ratings already made (on the TiVo), but I've never found a place to set them in app.
arantius is offline   Reply With Quote
Old 06-18-2011, 11:18 AM   #107
arantius
Registered User
 
Join Date: Jul 2009
Posts: 60
Quote:
Originally Posted by puffdaddy View Post
Good work. Here are some additional supported MRPC/2 requests. Note that some of these may not be implemented in the iPad app.
Awesome. How did you find these? Can we discover valid request formats also?
arantius is offline   Reply With Quote
Old 06-18-2011, 12:30 PM   #108
puffdaddy
Registered User
 
Join Date: Mar 2006
Posts: 291
Those came directly from the tivo software itself (e.g., run strings against tivoapp). The case may well be incorrect (lowercase first letter), and I'd have to poke a bit more to see if anything about the request format can be divined from the disassembly.
puffdaddy is offline   Reply With Quote
Old 06-18-2011, 04:53 PM   #109
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
This one was scary:

recordingFolderItemEmpty
'success'

I had the TV turned off, and didn't know if My Shows was going to be emptied! Oddly, my FSI (sitting at 100%) disappeared while checking out my recordings. This may be a "Delete Folder/Group" function, opposed to recordingUpdate... I'll play with that later!

Edit: Looking at Recording History, it does look like 5 recordings were deleted. They all appear to have been Suggestions. Interesting...
__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.

Last edited by orangeboy : 06-18-2011 at 05:30 PM.
orangeboy is offline   Reply With Quote
Old 06-19-2011, 10:56 AM   #110
arantius
Registered User
 
Join Date: Jul 2009
Posts: 60
Quote:
Originally Posted by puffdaddy View Post
Those came directly from the tivo software itself (e.g., run strings against tivoapp).
Ah. How did you get that? I certainly am not in the mood to take apart mt TiVo.
arantius is offline   Reply With Quote
Old 06-19-2011, 11:31 AM   #111
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
Quote:
Originally Posted by arantius View Post
Ah. How did you get that? I certainly am not in the mood to take apart mt TiVo.
It sounds like it came from a hacked TiVo, a Series 3 or earlier?
__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
orangeboy is offline   Reply With Quote
Old 06-19-2011, 01:27 PM   #112
moyekj
Registered User
 
Join Date: Jan 2006
Location: Mission Viejo, CA
Posts: 8,506
Quote:
Originally Posted by puffdaddy View Post
Those came directly from the tivo software itself (e.g., run strings against tivoapp).
I'd be very interested in looking at tivoapp binary from a Premiere for other reasons as well. Can you make a download available somewhere?
__________________
Roamio Pro (GigE)
Elite (MoCA)
Premiere (MoCA adapter)
Cox - Motorola CableCards & TAs
Slingbox 350 via TiVo Mini & TiVo Stream for remote viewing

To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
moyekj is offline   Reply With Quote
Old 06-19-2011, 03:08 PM   #113
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
Quote:
Originally Posted by orangeboy View Post
It sounds like it came from a hacked TiVo, a Series 3 or earlier?
Whoops - I checked the forum who shall not be named. I was thinking tivoapp was yet to be had. I should have realized that with JMFS expansion, my thinking was incorrect...
__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
orangeboy is offline   Reply With Quote
Old 06-19-2011, 08:31 PM   #114
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
FWIW, I added a new project into Google Code: http://code.google.com/p/tivopremiereremote/

It's YATR - Yet Another TiVo remote. But it solely utilizes the iPad interface to send the commands. It's also the first I used tkinter, so it looks a bit different!


You'll note along the top left side I included "jumps" to the various VOD providers in place of TV power/volume control. Edit the Remote.pyw file to include the IP Address of your TiVo, as well as the MAK. I plan on expanding this project to include "scrub" functionality.

ETA: Let me know if the window "Geometry" gives you issues. I used that feature to place my prototype exactly over the iPad "full" background template, so I could match the button positioning more accurately:


ETA: started new thread.
Attached Images
File Type: jpg YATR.jpg (28.6 KB, 603 views)
File Type: jpg iPad Template.jpg (28.4 KB, 242 views)
__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.

Last edited by orangeboy : 06-20-2011 at 10:12 AM.
orangeboy is offline   Reply With Quote
Old 06-20-2011, 03:20 PM   #115
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
Quote:
Originally Posted by moyekj View Post
Note that the 'offset' argument of 'videoPlaybackPositionSet' is the time you want to jump to in milliseconds. i.e. To jump to 5 minute mark it would be 60*1000*5. i.e. It's easy to jump exactly to any point in a program that you want.

One can use 'videoPlaybackInfoEventRegister' to get current position information. So based on the above 2 it's simple to implement a simple means of jumping forwards/backwards n minutes with a slight modification to the Key method in remote.py. Below is a sample implementation (with no error checking at all, but just for proof of concept):
Code:
  def Key(self, key, offset=0):
    """Send a key.

    Supported:
      Letters 'a' through 'z'.
      Numbers '0' through '1'.
      Named keys:
        actionA, actionB, actionC, actionD, advance, channelDown,
        channelUp, clear, down, enter, forward, guide, info, left, liveTv,
        pause, play, record, replay, reverse, right, select, slow,
        thumbsDown, thumbsUp, tivo, up, zoom
    """
    if key == ' ':
      key = 'forward'
    elif key == 'jump':
      result = self.Key('position')
      pos = int(result['response']['position'])
      pos += 60000*offset
      req = RpcRequest('videoPlaybackPositionSet', offset=pos)
    elif key == 'position':
      req = RpcRequest('videoPlaybackInfoEventRegister', throttleDelay=1000)
    elif key.lower() in 'abcdefghijklmnopqrstuvwxyz':
      req = RpcRequest('keyEventSend', event='ascii', value=ord(key))
    elif key in '0123456789':
      req = RpcRequest('keyEventSend', event='num' + key)
    else:
      req = RpcRequest('keyEventSend', event=key)

    self.Write(req)
    result = self.Read()
    return result
Then as examples the following work:

# Jump 5 minutes ahead
remote.Key('jump', offset=5)

# Jump 7 minutes backwards
remote.Key('jump', offset=-7)

i.e. There seems to be enough uncovered already to mimic telnet based remotes as well as adding additional functionality such as above.
I made a (rough) python/tkinter Scale widget that does "scrubbing":

<Code snipped, see scrubber.pyw.txt attachment>



Like I say, it's rough, but I like the functionality. Currently it displays minutes in float, so 15 minutes 30 seconds will show up as 15.5000. There's something odd too, where when the app launches, it repositions a few milliseconds before or after the current position. The TiVo responds very quickly though, and can navigate to any position in the recording! More work to be had before I go "prime time" with it.
Attached Images
File Type: jpg Scrubber.JPG (10.0 KB, 239 views)
Attached Files
File Type: txt scrubber.pyw.txt (2.8 KB, 8 views)
__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.

Last edited by orangeboy : 06-20-2011 at 04:05 PM.
orangeboy is offline   Reply With Quote
Old 06-20-2011, 07:18 PM   #116
moyekj
Registered User
 
Join Date: Jan 2006
Location: Mission Viejo, CA
Posts: 8,506
What I would really like is a means to access the Recording History, specifically for items that will *NOT* record. As it is now one has to wade through a huge list of useless reasons on the TiVo itself (usually firstRun or 28 day rule) why something will not record to find 1 or 2 that won't record because of tuner conflicts. It would be nice to:
1. First detect such conflicts
2. If other Premieres are available then possibly attempt to schedule a recording on another Premiere and if failing to do so then email about it.

i.e. A first step at cooperative scheduling, but just conflict monitoring.

In rpcs2 there is only 1 response to a "recordingSearch" request that offers some hope, a cancellationReason that is not "unknown":

111637-1212-2-response-recordingList.txt
Code:
"cancellationReason": "notFirstRun",

__________________
Roamio Pro (GigE)
Elite (MoCA)
Premiere (MoCA adapter)
Cox - Motorola CableCards & TAs
Slingbox 350 via TiVo Mini & TiVo Stream for remote viewing

To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
moyekj is offline   Reply With Quote
Old 06-20-2011, 09:21 PM   #117
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
Quote:
Originally Posted by moyekj View Post
What I would really like is a means to access the Recording History, specifically for items that will *NOT* record. As it is now one has to wade through a huge list of useless reasons on the TiVo itself (usually firstRun or 28 day rule) why something will not record to find 1 or 2 that won't record because of tuner conflicts. It would be nice to:
1. First detect such conflicts
2. If other Premieres are available then possibly attempt to schedule a recording on another Premiere and if failing to do so then email about it.

i.e. A first step at cooperative scheduling, but just conflict monitoring.

In rpcs2 there is only 1 response to a "recordingSearch" request that offers some hope, a cancellationReason that is not "unknown":

111637-1212-2-response-recordingList.txt
Code:
"cancellationReason": "notFirstRun",
I have a few ideas for using a combination of subscriptionSearch (SPM), gridRowSearch (upcoming) and recordingSearch (To Do List). I'm thinking a few fields from those should give an idea of what's desired, what's available to record, and what is actually scheduled to record. Importing datetime as dtm, I'm able to dynamically set some required fields in gridRowSearch to look for specific "collections" coming up:

Code:
    # gridRowSearch
    def gridRowSearch(self):
        req = RpcRequest('gridRowSearch',
                         orderBy='channelNumber',
                         maxStartTime=(dtm.datetime.now() + dtm.timedelta(days=14)).strftime("%Y-%m-%d %H-%M-%S"),
                         minEndTime=dtm.datetime.now().strftime("%Y-%m-%d %H-%M-%S"),
                         collectionId=['tivo:cl.78241342'],
                         levelOfDetail='high',
                         bodyId='-')
        self.Write(req)
The following works as well, but may create ambiguity if there are similarly titled shows:

Code:
    # gridRowSearch
    def gridRowSearch(self):
        req = RpcRequest('gridRowSearch',
                         orderBy='channelNumber',
                         maxStartTime=(dtm.datetime.now() + dtm.timedelta(days=14)).strftime("%Y-%m-%d %H-%M-%S"),
                         minEndTime=dtm.datetime.now().strftime("%Y-%m-%d %H-%M-%S"),
                         title='30 Rock',
                         levelOfDetail='high',
                         bodyId='-')
        self.Write(req)
I'll get started!
__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.

Last edited by orangeboy : 06-20-2011 at 09:28 PM.
orangeboy is offline   Reply With Quote
Old 06-20-2011, 10:03 PM   #118
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
The more I look, the more I find:

Code:
    {
      u 'recordingQuality' : u 'best',
      u 'maxRecordings' : 5,
      u 'keepBehavior' : u 'fifo',
      u 'folderingRules' : u 'subscriptionOnly',
      u 'startTimePadding' : 0,
      u 'title' : u 'UNDERCOVER BOSS',
      u 'bodyId' : u 'tsn:746000000000001',
      u 'priority' : 2525,
      u 'bodyGeneratesCandidates' : True,
      u 'showStatus' : u 'rerunsAllowed',
      u 'idSetSource' :
      {
        u 'titleKeywordOp' : [u 'required'],
        u 'titleKeyword' : [u 'Undercover Boss'],
        u 'type' : u 'wishListSource'
      },
      u 'subscriptionId' : u 'tivo:sb.689',
      u 'levelOfDetail' : u 'high',
      u 'type' : u 'subscription',
      u 'endTimePadding' : 0
    },
Could this mean exporting Wishlists?!
__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
orangeboy is offline   Reply With Quote
Old 06-21-2011, 09:32 AM   #119
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
Explain JSON to python like I'm an idiot

OK, why am I having such a hard time figuring out how to construct a responseTemplate? Given an example of a JSON response:

Code:
"responseTemplate": [
  {
    "fieldName": [
      "gridRow"
    ],
    "type": "responseTemplate",
    "typeName": "gridRowList"
  },
  {
    "fieldName": [
      "offer"
    ],
    "type": "responseTemplate",
    "typeName": "gridRow"
  },
  {
    "fieldName": [
      "title",
      "contentId",
      "startTime",
      "duration",
      "offerId",
      "collectionId"
    ],
    "type": "responseTemplate",
    "typeName": "offer"
  },
  {
    "fieldName": [
      "channelNumber",
      "sourceType",
      "logoIndex",
      "callSign",
      "isDigital"
    ],
    "type": "responseTemplate",
    "typeName": "channel"
  }
]
how do I turn that into python lists and/or dictionaries? My Google-fu is failing me; I'm only finding reference to the actual json or simplejson modules, which is fine because it lets me know JSON <> python translations can occur, but doesn't really help me translate what I'm seeing into something I can interpret.
__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
orangeboy is offline   Reply With Quote
Old 06-21-2011, 12:14 PM   #120
orangeboy
yes, I AM orangeboy!
 
Join Date: Apr 2004
Location: Moline, IL
Posts: 4,075
Nevermind, figured it out. It's a dictionary of lists of dictionaries that can contain lists (or is it a list of lists that contain dictionaries that can contain lists?). Regardless, the above turns into this:

Code:
responseTemplate=[{"fieldName":["gridRow"], "typeName": "gridRowList"},
                  {"fieldName":["offer"], "typeName": "gridRow"},
                  {"fieldName":["title", "contentId", "startTime", "duration", "offerId", "collectionId"], "typeName": "offer"},
                  {"fieldName":["channelNumber", "sourceType", "logoIndex", "callSign", "isDigital"], "typeName": "channel"}],
One thing to note: omit "type": "responseTemplate" and use only typeName if using arantius' RpcRequest function. TiVo's servers got angry at me, giving back:

Code:
type field of dictionary should have been 'gridRowSearch', but was 'error'
-or-
com.tivo.trio.schema.SchemaException: must specify either typeName or typeNumber

__________________

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.


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.


To view links or images in signatures your post count must be 10 or greater. You currently have 0 posts.
orangeboy is offline   Reply With Quote
Reply
Forum Jump




Thread Tools


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Advertisements

TiVo Community
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
vBulletin Skins by: Relivo Media

(C) 2013 Magenium Solutions - All Rights Reserved. No information may be posted elsewhere without written permission.
TiVoŽ is a registered trademark of TiVo Inc. This site is not owned or operated by TiVo Inc.
All times are GMT -5. The time now is 04:11 PM.
OUR NETWORK: MyOpenRouter | TechLore | SansaCommunity | RoboCommunity | MediaSmart Home | Explore3DTV | Dijit Community | DVR Playground |