Page 1 of 7 123 ... LastLast
Results 1 to 15 of 101

Thread: Editing SeriesFSID

  1. #1
    Join Date
    Apr 2004
    Posts
    10

    Editing SeriesFSID

    Quick history. I have an RCA DVR39 with 4.0 on it. It has the HMO superpatch applied, the wishlist grouping patch applied, and has been named using the set_mrv script. It is using an lba48 aware kernel with a 250GB drive (side question, anyone know how to use more than 127MB of swap?). I previously had a Hughes DVR40. I installed mfs_ftp onto both, and was able to successfully move all the shows over that I needed to. However, the old shows are not grouping correctly, though the new shows are (so I know everything's working correctly).

    From searching, I've found that I need to change the Series ID, also called the Series FSID in TivoWebPlus. I do realize that after I change it, I'll need to delete the programs then undelete to re-index them, and get them grouped. What I'm not able to do, is figure out exactly how to change the Series FSID. I looked in the TivoWebPlus source code, and it looks like it calls several things to generate it. Anyways, I have modified TivoWebPlus enough so on the edit screen it will show me the Series FSID, lets me change it, and submit...but of course the submit fails as I don't know how to actually update this. My poor coding is currently hung at this line I added, which is obviously wrong (I was grasping at straws):

    dbobj $rec set Seriesfsid $newseriesfsid

    Does anyone know what to change "Seriesfsid" to? It'd be much appreciated. If I can figure this out, I think I can make a script that would do a mass Series FSID update based on title. Unfortunately, I don't know enough to reliably make a script that would delete, then undelete the affected programs.

  2. #2
    Join Date
    Oct 2003
    Location
    Charlottesville, VA
    Posts
    152
    Quote Originally Posted by f-reality
    Does anyone know what to change "Seriesfsid" to? It'd be much appreciated.
    By looking at the "correct" recordings (the new ones), you can find the correct fsid. Once you get that, you need to then get the fsid for the "Program" object related to the recording that was inserted using mfs_ftp. (The program object is linked to from the showing object, which is linked to from the recording object...)

    So now you have the mfs_ftp Program's FSID (pfsid), and the proper series fsid (sfsid):

    dbobj [db $db openid $pfsid] set Series [db $db openid $sfsid]

    Should properly link that particular recording to that Series. Deleting and undeleting, like you said, will properly reindex it. Again, though, the caveat remains to not delete something older than the oldest thing in your undelete list.

    Edit:
    Also, you can get the current target by using the code:
    dbobj [db $db openid $pfsid] gettarget Series
    Last edited by drnull; 07-18-2004 at 11:43 PM.
    Philips DSR7000 - ~200 hours, killhdinitrd'd 6.2a w/ NutKase's superpatch_67all

  3. #3
    Join Date
    Apr 2004
    Posts
    10
    Thanks, still no go though. Still scratching my head over this one. I think the Series attribute I want to edit is under the Program one. It will not let me edit it, possibly because it branches out too. Here's an example of a new program, this is what's under /Recording/Active/Showing/Program:

    Program 264542/10 {
    Version = 7
    ServerId = A0000c4d8
    ServerVersion = 6
    ApgProgram = 264542/11
    Genre = 378 124
    RootServerId = A0000c4d7
    Series = 264541/-1
    TmsId = SH0201780000
    Title = {Music Videos}
    EpisodeTitle = {No Episode Title}
    EpisodeNum = 0
    AltEpisodeNum = 0
    Description = {}
    OriginalAirDate = 10957
    ShowType = 5
    IndexPath = /Server/A0000c4d8:3:6:0
    }

    The "264541/-1" part of the Series line is clickable, which gives this:

    Series 264541/10 {
    Version = 6
    ServerId = ATSH020178
    ServerVersion = 0
    Genre = 378 124
    Title = {Music Videos}
    TmsId = SH020178
    ThumbData = 268632319
    Episodic = 1
    IndexPath = /Server/ATSH020178:4:0:0
    }

    I believe it's not editable, since it expands out (not sure what it's called in TiVo land, but I guess it'd be called an array).

    Now, I have a tcl script that will edit these attributes, and I know I'm pointing it in the right direction. I can edit a variable under Program as long as it itself is not an array. I then checked some old programmings, and notice that there is no Series variable/array at all under Program. If I try to set the Series value, it still doesn't show up.

    Am I way off base? I've been working on this for days, read numerous threads, but this is as close as I've come. I feel that I'm almost there, but still just can't get it.

  4. #4
    Join Date
    Oct 2003
    Location
    Charlottesville, VA
    Posts
    152
    Quote Originally Posted by f-reality
    Thanks, still no go though. Still scratching my head over this one. I think the Series attribute I want to edit is under the Program one. It will not let me edit it, possibly because it branches out too.
    Yes, you want to modify the Series attribute under the Program object. I think I said that.

    It's an object reference. And the way I posted does work, if I remember correctly. Basically, you need to

    dbobj [db $db openid 264542] set Series [db $db openid 264541]

    The /10 or /-1 or whatever is the subobject id. It's not necessary to specify that here.

    If it doesn't work for you in your script, you might be scripting something wrong. Try running tivosh then typeing:
    Code:
    --incorrect code removed.  See below--
    Do try to NOT hit ctrl-c while inside tivosh. Bad Things (tm) will happen.
    Last edited by drnull; 07-19-2004 at 02:59 PM. Reason: Incorrect instructions.... see below
    Philips DSR7000 - ~200 hours, killhdinitrd'd 6.2a w/ NutKase's superpatch_67all

  5. #5
    Join Date
    Sep 2001
    Posts
    29
    Typed it exactly (well I changed the fsid, since I deleted that program, but otherwise it's the exact same). Here's what I got:

    tivo:/var$ tivosh

    % %
    % set db [dbopen]
    db1
    % dbobj [db $db openid 260255] set Series [db $db openid 264541]
    ambiguous command name "db": dbclose dbhandles dbhasrefcounts dbindex dbload dbloadmfs dbloadschema dbopen dbunload
    % exit
    tivo:/var$


    First I just started typing, and the % character showed up after the s...doesn't seem to make a difference. This time I hit enter a couple times, but still got the same output.

  6. #6
    Join Date
    Oct 2003
    Location
    Charlottesville, VA
    Posts
    152
    Quote Originally Posted by josetann
    % dbobj [db $db openid 260255] set Series [db $db openid 264541]
    ambiguous command name "db": dbclose dbhandles dbhasrefcounts dbindex dbload dbloadmfs dbloadschema dbopen dbunload
    Sorry, forgot to mention that all db commands have to be inside a transaction.

    try
    Code:
    set db [dbopen]
    transaction { dbobj [db $db openid 260255] set Series [db $db openid 264541] }
    exit
    Philips DSR7000 - ~200 hours, killhdinitrd'd 6.2a w/ NutKase's superpatch_67all

  7. #7
    Join Date
    Apr 2004
    Posts
    10
    Just an update, I was able to get this to work at least somewhat. I think part of my previous problem was that I was testing this out on a spare recording, and it doesn't seem to change the Series ID if it's already set. I tried that on a different program but with the series id I posted...now it thinks "5 Days to Midnight" should be grouped with "Music Videos". Any idea how to change that? No biggie, I could just delete and re-upload. You don't see a problem with me making up Series IDs do you? Some of the recordings were miniseries that my wife recorded, and I tried searching for them in the guide to re-record but no joy. I figured I could start at "10" and create Series IDs for those orphan programs.

    Thanks!

  8. #8
    Join Date
    Apr 2004
    Posts
    10
    Kinda answering my own question here I think...I might or might not be able to edit the Series ID on a program that already has it set, I'm not sure. What I have found out, is that if there isn't already a program recorded with the Series ID you want to use, then you can't use it.

    Took me a while to figure out why it was working on some programs and not on others. I put my old DVR40 back together and was able to get the Series ID for everything, but many things just weren't changing like they should. Then I noticed the ones that I couldn't edit, are ones that I haven't recorded a new episode of. Oh well, so there'll be a few things that aren't grouped, and a few more that I have to wait until the next recording. No big deal I guess.

    Thanks!

  9. #9
    Join Date
    Oct 2003
    Location
    Charlottesville, VA
    Posts
    152
    Quote Originally Posted by f-reality
    Just an update, I was able to get this to work at least somewhat. I think part of my previous problem was that I was testing this out on a spare recording, and it doesn't seem to change the Series ID if it's already set. I tried that on a different program but with the series id I posted...now it thinks "5 Days to Midnight" should be grouped with "Music Videos". Any idea how to change that? No biggie, I could just delete and re-upload.
    Hehe, Funny, 5 Days to Midnight was one of the shows I was going to mfs-ftp back onto my dtivo after I put 4.0 on it. But it was coming on again, so I didn't have to worry about it. Pretty cool movie, actually. I was impressed - didn't expect that much from a sci-fi miniseries.

    Back to the question: Not sure exactly, no, but you might try something like:
    dbobj [db $db openid <id>] removeat Series

    After the attribute (Series) is the index, and I don't know if it should be left off, or set to 0 or 1. Try all three. One of 'em might work. Maybe.

    Quote Originally Posted by f-reality
    You don't see a problem with me making up Series IDs do you? Some of the recordings were miniseries that my wife recorded, and I tried searching for them in the guide to re-record but no joy. I figured I could start at "10" and create Series IDs for those orphan programs.
    As far as making up SeriesID's goes, I don't think you should be doing that, because I believe tivoapp expects the seriesID to be valid so it can get information from it. Course, if you were planning on making a new Series object, well, that's a different story. Also, again, it might work fine. Let us know.
    Philips DSR7000 - ~200 hours, killhdinitrd'd 6.2a w/ NutKase's superpatch_67all

  10. #10
    Join Date
    Apr 2004
    Posts
    10
    Quote Originally Posted by drnull
    As far as making up SeriesID's goes, I don't think you should be doing that, because I believe tivoapp expects the seriesID to be valid so it can get information from it. Course, if you were planning on making a new Series object, well, that's a different story. Also, again, it might work fine. Let us know.
    That's probably why it won't let me change it to a non-existant ID. If I had known that earlier...man I would have saved a lot of time. I decided to just delete those shows and re-upload. There's only three of them, and if my wife decides to finally watch them today, well I have the old TiVo back up too.

    I was more worried about my MAD TV and Dragonball GT recordings, as there are literally pages of those. With 3.1.1c I would have it listed alphabetically to kinda group shows together, which drove my wife crazy (finally broke down and showed her how to resort the list). With folders, everything's much better now.

    Anyways, for anyone interested here's the code I used. Found it elsewhere (don't know who to credit, sorry), modified by myself and with help of drnull:

    Code:
    #!/tvbin/tivosh
    set matchstr $argv
    set db [dbopen]
    ForeachMfsFile fsid name type /Recording/Active "" {
     RetryTransaction {
      set rec [db $db openid $fsid]
      if { [dbobj $rec get State] == 4 } {
       set Showing [dbobj $rec get Showing]
       set Program [dbobj $Showing get Program]
    set Series [dbobj $Program get Series]
       set Title [string trim [dbobj $Program get Title] "\{\}"]
       puts stdout "checking $fsid \"$Title\""
        if { $matchstr == $Title } {
            puts "matched, changing"
    catch { dbobj $Program set Series [db $db openid 272058] }
        }
      }
     }
    }
    Since it can accept spaces in the title, I don't know how to let you put the Series ID on the command line. Where it says 272058 above, substitute the correct Series ID there. Also, I've only gotten this to work if a show of the same series has been recorded on the TiVo in question, and not just transferred via mfs_ftp. And there's some useless code in there I was using for debugging, feel free to clean it up some or whatever. To use, just type "./group.tcl Name of Program" after editing the Series ID in the script.

  11. #11
    Join Date
    Jun 2003
    Posts
    55
    is there a technical limitation as to why mfs_ftp couldn't add the fsid in itself when it does an insert? This doesn't really affect me since i only had to manually add the fsid for about 10 shows but it could be a handy feature for people who are constantly scraping their tivo to start over with a fresh reload of the os.

  12. #12
    Join Date
    Dec 2001
    Posts
    587
    I modifed your program to allow cmd line input, it works like this:

    ./group.tcl 1234567 "The Program Name"

    And it attempts to set the series id. It finds them, it says it is setting them, but they do not show up, a reboot or delete/undelete and they still do not show up.

    Was the final consensus that the id has to exist on the new tivo to set programs to it's number, or can I make one up and all currently recorded will get that number?

    Here is the code:
    #!/tvbin/tivosh
    set seriesID [lindex $argv 0]
    set matchstr [lindex $argv 1]
    set db [dbopen]
    puts "Setting Group for $matchstr to $seriesID - please wait"

    ForeachMfsFile fsid name type /Recording/Active "" {
    RetryTransaction {
    set rec [db $db openid $fsid]
    if { [dbobj $rec get State] == 4 } {
    set Showing [dbobj $rec get Showing]
    set Program [dbobj $Showing get Program]
    set Series [dbobj $Program get Series]
    set Title [string trim [dbobj $Program get Title] "\{\}"]
    puts stdout "checking $fsid \"$Title\""
    if { $matchstr == $Title } {
    puts "matched, changing"
    catch { dbobj $Program set Series [db $db openid $seriesID] }
    }
    }
    }
    }

  13. #13
    Join Date
    Dec 2001
    Posts
    587
    Quote Originally Posted by Fletch319
    is there a technical limitation as to why mfs_ftp couldn't add the fsid in itself when it does an insert? This doesn't really affect me since i only had to manually add the fsid for about 10 shows but it could be a handy feature for people who are constantly scraping their tivo to start over with a fresh reload of the os.
    After some playing, yes I think there is. The program above only works if a program of the same name was actually recorded by the tivo. Otherwise, the change is ignored, so even if mfs_ftp did send the seriesid, it would probably be ignored.

    The tivo must write a series record or something the first time it records a show. Then all programs under that name use the same series id.

    I'll know more after my tivo records about 5 shows tomorrow, and I'll set series id on mfs_ftp copied old ones.

  14. #14
    Join Date
    Mar 2002
    Posts
    1,339
    series id are mostly unique to each tivo

    fully automatic linking requires a LOT of searching (time) & doesn't do any good if you're restoring something that's not currently available (like B5 episodes when sci-fi hasn't aired them in months). if you're restoring something back to the tivo it originated in the info may be avail in /Recording/History. check there before delving into the guide data

    seems like somebody did a tivoweb module adressing this and parental ratings issues a few months back

    if anybody wants to write a mfs_ftp patch for auto-link I'd suggest triggering it right after the set_rec_csos procedure. simply spawning these scripts to check /Recording/NowShowing, /Recording/NowShowingByClassic & /Recording/History would probably cover it 80% of the time

  15. #15
    Join Date
    Dec 2001
    Posts
    587
    Quote Originally Posted by rc3105
    series id are mostly unique to each tivo

    fully automatic linking requires a LOT of searching (time) & doesn't do any good if you're restoring something that's not currently available (like B5 episodes when sci-fi hasn't aired them in months). if you're restoring something back to the tivo it originated in the info may be avail in /Recording/History. check there before delving into the guide data

    seems like somebody did a tivoweb module adressing this and parental ratings issues a few months back

    if anybody wants to write a mfs_ftp patch for auto-link I'd suggest triggering it right after the set_rec_csos procedure. simply spawning these scripts to check /Recording/NowShowing, /Recording/NowShowingByClassic & /Recording/History would probably cover it 80% of the time
    SeriesId is stored in the slices that are sent down by the tivo mothership.

    If program abcdef is on 4 boxes from 4 different providers, the series id will still be the same - if they all load from the tivo mothership.

    I think you are thinking about ProgramID, which is a completely different animal, and should not be restored.

    I wrote parsexmlguide_dd for the Canadian users, so it keeps track of seriesID and they are the same between boxes loaded from the same database that builds the slice.

    Saying all that, you are right that if there is no seriesID in the new tivo matching the old tivo's seriesID, it is ignored anyway. That is the wierd question about what can cause this behavior
    Last edited by philhu; 08-09-2004 at 12:23 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •