Tivo Hacks. 100 Industrial-strength Tips Tools 2003
Hack 89 Inspecting MFS Objects
Embedded in the tyDirs are the tyDbs . This is where the real data is actually hiding out .
While poking through the MFS [Hack #88] you are inevitably going to run into objects. The objects, or tyDb s as they are called, are the database objects holding the real information that the filesystem directories ( tyDir s) are just organizing into a simple hierarchy.
You can peek at an object using the TiVo shell's dumpobj command. dumpobj does exactly as its name suggests: reach into the MFS database for a specified filesystem ID (FSID), extract appropriate metadata, and dump it to the screen in human-readable form.
Let's take a look at a rundown of the first television show in my /Recording/NowShowingByTitle directory. From the TiVo shell (type tivosh at the Bash prompt if you're not already in tivosh ), run it on one of your FSIDs, like so:
% dumpobj 1717520 Recording 1717520/10 { ActualShowing = 1717520/16 BitRate = 0 Bookmark = 1717520/19 DeletionDate = 24855 ExpirationDate = 12213 ExpirationTime = 9000 IndexPath = /Recording/Active/1:12211:08998:1717520 /Recording/ NoReRecord/12919640:2:99999:01717520 /Recording/TmsId/SH5785730000:87788: 91001:1717520 /Recording/NowShowingByClassic/2:87788:91001:1717520 / Recording/NowShowingByExpiration/2:12213:09000:1717520 {/Recording/ NowShowingByTitle/1:2003 MTV MOVIE AWARDS:87788:91001:1717520} /Recording/ DiskUsed/10/1717520:2842624 IndexUsed = 1717520/11 1717520/12 NSecondsWatched = 3539 NVisit = 1 Part = 1717520/13 1717520/15 1717520/17 1717520/18 1717520/20 1717520/21 RecordQuality = 75 RecordingBehavior = 1717520/12 Score = 0 SelectionType = 3 Showing = 1717520/11 StartDate = 12211 StartTime = 8998 State = 4 StopDate = 12211 StopTime = 16200 StreamFileSize = 2842624 UsedBy = 1 Version = 56 }
Out comes all the attributes associated with this television show. Notice the title fragment "MTV MOVIE AWARDS" ( /Recording/NowShowingByTitle/1:2003 MTV MOVIE AWARDS ), the number of seconds I've already watched ( NSecondsWatched = 3539 ), and other assorted details.
It's also worth mentioning that our friend TiVoWeb will do the same thing. Use the web-based MFS browser to click your way to one of the tyDb objects, and you should see something like Figure 7-2.
Figure 7-2. Looking at the same tyDB object through TiVoWeb
That said, if all data about the show is in the MFS database, where's the full title of the show? The guest stars? Television channel from which it was recorded? If you look closely at the object dump, you may well see what appear to be FSIDs; in fact, that's what they are.
This is where the TiVo shell and command line has one leg up on TiVoWeb. You could go through and dumpobj each of the associated FSIDs, but you'll no doubt find even more to comb through. You could also click through on TiVoWeb, but that is just going to get frustrating. There is a short cut: dumpobj takes a closure flag, telling it to dump all the FSIDs it finds along the way, starting with the FSID you provide. It's a long list but a pirate's booty of information:
% dumpobj -closure 1717520 Recording 1717520/10 { ActualShowing = 1717520/16 BitRate = 0 Bookmark = 1717520/19 DeletionDate = 24855 ExpirationDate = 12213 ExpirationTime = 9000 IndexPath = /Recording/Active/1:12211:08998:1717520 /Recording/ NoReRecord/129196 40:2:99999:01717520 /Recording/TmsId/SH5785730000:87788:91001:1717520 / Recording/NowSho wingByClassic/2:87788:91001:1717520 /Recording/NowShowingByExpiration/2: 12213:09000:171 7520 {/Recording/NowShowingByTitle/1:2003 MTV MOVIE AWARDS:87788:91001: 1717520} /Record ing/DiskUsed/10/1717520:2842624 IndexUsed = 1717520/11 1717520/12 NSecondsWatched = 3539 NVisit = 1 Part = 1717520/13 1717520/15 1717520/17 1717520/18 1717520/20 1717520/21 RecordQuality = 75 RecordingBehavior = 1717520/12 Score = 0 SelectionType = 3 Showing = 1717520/11 StartDate = 12211 StartTime = 8998 State = 4 StopDate = 12211 StopTime = 16200 StreamFileSize = 2842624 UsedBy = 1 Version = 56 } Showing 1717520/16 { Bits = 2 Date = 12211 Duration = 7200 Program = 1691635/-1 Station = 2086/-1 Time = 9000 } Bookmark 1717520/19 { TimeMs = 4171221 } Showing 1717520/11 { Bits = 2 Date = 12211 Duration = 7200 IndexUsedBy = 1717520/10 Program = 1691635/-1 Station = 2086/-1 Time = 9000 } RecordingBehavior 1717520/12 { DiskBehavior = 5 IndexUsedBy = 1717520/10 PresentationBehavior = 1 ProgramGuideBehavior = 1 TunerBehavior = 1 } RecordingPart 1717520/13 { Begin = 0 CommercialSkipOffset = 0 End = 1318759 File = 1717637 } RecordingPart 1717520/15 { Begin = 1319259 CommercialSkipOffset = 0 End = 2652833 File = 1717645 } RecordingPart 1717520/17 { Begin = 2653334 CommercialSkipOffset = 0 End = 3984672 File = 1717665 } RecordingPart 1717520/18 { Begin = 3985172 CommercialSkipOffset = 0 End = 5316511 File = 1717666 } RecordingPart 1717520/20 { Begin = 5317011 CommercialSkipOffset = 0 End = 6646248 File = 1717667 } RecordingPart 1717520/21 { Begin = 6646848 CommercialSkipOffset = 0 End = 7201392 File = 1717668 } Program 1691635/11 { ColorCode = 4 DescLanguage = English Description = {The Shrine Auditorium in Los Angeles; hosts Justin Timberlake and Seann William Scott.} Genre = 9 100 1000 IndexPath = /Server/12919640 IsEpisode = 1 OriginalAirDate = 12208 Series = 1691634/-1 ServerId = 12919640 ServerVersion = 4 ShowType = 3 SourceType = 1 Title = {2003 MTV Movie Awards} TmsId = SH5785730000 Version = 1 } Station 2086/15 { Affiliation = Satellite AffiliationIndex = 39 CallSign = MTV City = {New York} Country = {United States} DmaNum = 0 IndexPath = /StationTms/10986:826 /Server/928 LogoIndex = LogoSpace=Tivo LogoIndex=0 Name = {MTV - Music Television} ServerId = 928 ServerVersion = 80 State = NY TmsId = 10986 Version = 10 ZipCode = 10036 } Series 1691634/11 { Episodic = 0 Genre = 9 100 1000 IndexPath = /Server/12919853 ServerId = 12919853 ServerVersion = 2 }
The Program node (FSID 1691635 ) holds the title and full description of the show. The Station node (FSID 2086 ) tells us that the show was recorded off MTV. And that's absolutely everything TiVo knows about the object we asked for. The question is, what do you do with it? See the following hacks for some answers.
|
Top |