# List series ID's



## wmcbrine (Aug 2, 2003)

In case anyone's interested, here's a little Python program I wrote to dump the list of series ID's currently in your Now Playing list. More of a programming exercise for myself, but anyway...


```
#!/usr/bin/env python

''' 
Grabs the Series IDs of current recordings from your TiVo and lists 
them, together with the titles of the series. You need your Media Access 
Key and the IP address of your TiVo.
'''

def open_tivo(address, mak):
    "Open the Now Playing page at 'address', with Media Access Key 'mak'"
    import urllib2
    url = 'https://&#37;s/TiVoConnect?Command=QueryContainer&Container=/NowPlaying&Recurse=Yes'
    pm = urllib2.HTTPPasswordMgrWithDefaultRealm()
    pm.add_password(None, address, 'tivo', mak)
    opener = urllib2.build_opener(urllib2.HTTPDigestAuthHandler(pm))
    return opener.open(url % address)

def get_mak():
    "Return tivodecode's record of the MAK, if available; otherwise prompt"
    import os.path
    makfile = os.path.join(os.path.expanduser('~'), '.tivodecode_mak')
    if os.path.isfile(makfile):
        try:
            return open(makfile).read().strip()
        except:
            pass
    return raw_input('Media Access Key? ')

def get_id_list(source):
    "XML -> dict of titles and series ID's"
    from xml.dom import minidom
    xmldoc = minidom.parse(source)
    items = xmldoc.childNodes[0].getElementsByTagName('Item')

    # Build a dictionary of the titles and series ID's for every item
    # that has a series ID.

    return dict([
           (i.getElementsByTagName('Title')[0].childNodes[0].data,
            i.getElementsByTagName('SeriesId')[0].childNodes[0].data)
            for i in items if i.getElementsByTagName('SeriesId')
        ])

def report(ids):
    "Print a title-sorted list from a dict of titles and series ID's"
    titles = ids.keys()
    titles.sort()

    for i in titles:
        print ids[i].ljust(9), i

if __name__ == '__main__':
    print __doc__

    tivoaddress = raw_input('TiVo address? ')
    tivomak = get_mak()

    print '\nOpening...'

    source = open_tivo(tivoaddress, tivomak)

    print 'Parsing...\n'

    series_ids = get_id_list(source)
    source.close()

    report(series_ids)
```
If you like, post your lists in this thread. I'm a little curious if the IDs are the same for all boxes or not...


----------



## wmcbrine (Aug 2, 2003)

Example of using this as a module -- merged list from two Tivos:


```
import seriesids

mak = seriesids.get_mak()
s1 = seriesids.open_tivo('dhcp2', mak)
list1 = seriesids.get_id_list(s1)
s1.close()
s2 = seriesids.open_tivo('dhcp4', mak)
list2 = seriesids.get_id_list(s2)
s2.close()

seriesids.report(dict(list1.items() + list2.items()))
```


----------



## Enrique (May 15, 2006)

I am not 100&#37; how to do this, but I did put in my Tivo IP then Tivo mak then it show this:

SH963097 A Shot at Love With Tila Tequila
SH753786 Ghost Whisperer
SH797834 Is It Real?
SH931008 K-Ville
SH931177 Moonlight
SH930981 Pushing Daisies
SH696201 The Biggest Loser
SH951139 The Steve Wilkos Show
SH767257 The Tyra Banks Show

I am only missing one show off of that list.


----------



## dlfl (Jul 6, 2006)

wmcbrine said:


> In case anyone's interested, here's a little Python program I wrote to dump the list of series ID's currently in your Now Playing list. More of a programming exercise for myself, but anyway...
> 
> ......................
> 
> If you like, post your lists in this thread. I'm a little curious if the IDs are the same for all boxes or not...


Works as advertised, thanks! I just hard-coded in my IP and MAK in the main function.

Here's my list:

SH818666 10 Days That Unexpectedly Changed America
SH524061 CSI: Miami
SH079723 Civil War Journal
TS1318011 Cranky Geeks
SH017479 Great Performances
SH726133 The Office

Note the Cranky Geeks ID is one char longer than the others. This is a TiVo Cast program which is protected.

And thanks for the great example for learning http access via Python.


----------



## armooo (Feb 2, 2003)

SH457051 Access Granted
SH575702 America's Next Top Model
SH550252 America's Test Kitchen From Cook's Illustrated
SH593047 Animal Cops Houston
SH710749 Battlestar Galactica
SH910397 Blood Plus
SH237920 Champions of the Wild
SH597231 Clean Sweep
TS1318011 Cranky Geeks
SH929309 Critical Situation
SH959565 Death Note
SH753529 Decoding the Past
SH625603 Designed to Sell
SH611442 Dirty Jobs
SH927779 Ergo Proxy
SH867320 Everest: Beyond the Limit
SH679852 Exploraciones
SH667618 Find & Design
SH303483 Futurama
SH838748 Gokusen
SH273928 Good Eats
SH137975 H.G. Wells' Invisible Man
SH848361 Heroes
SH625051 How Do I Look?
SH277665 If Walls Could Talk
SH647153 Iron Chef America
SH017617 Law & Order
SH726130 Law & Order: Trial by Jury
SH337496 Lexx
SH400025 MTV Cribs
SH552974 Made
SH769884 Mirage of Blaze
SH103115 Modern Marvels
SH960782 Moonphase
SH557678 MythBusters
SH683074 Naked Science
SH003138 Nightline
SH925647 Noein
SH807675 Parental Control
SH899881 Planet Earth
SH593272 Profiles of Nature
SH705529 Project Runway
SH767508 Rezoned
SH864685 Saiyuki Reload
SH814966 Samurai 7
SH760882 Small Space, Big Style
SH003985 Star Trek
SH446583 Star Trek: Enterprise
SH685627 Survivorman
SH598805 Tactical to Practical
SH927781 Tenjho Tenge
SH508952 The Dead Zone
SH380343 The District
SH211446 The Practice
SH052522 The Real World
SH290992 The Sopranos
SH711080 The Ultimate Fighter
SH919501 The Universe
SH080955 The X-Files
SH393384 Trading Spaces
SH231685 Trauma: Life in the ER
SH848057 Trinity Blood
SH645952 Untold Stories of the E.R.
SH446477 Unwrapped
SH962738 Virus Buster Serge
SH476707 What Not to Wear


----------



## wmcbrine (Aug 2, 2003)

dlfl said:


> Note the Cranky Geeks ID is one char longer than the others. This is a TiVo Cast program which is protected.


Yeah, the regular series ID's are "SH" followed by six digits, and the TivoCasts are "TS" followed by seven digits. I was surprised that they seem to have reserved ten times as much space for TivoCast ID's.

Anyway, here are mine:

SH848357 30 Rock
SH445113 Alias
SH466293 Aqua Teen Hungerforce
SH393237 At the Movies With Ebert & Roeper
SH062528 Beavis and Butt-head
SH506521 Blue Gender
TS1000631 CNET
SH380341 CSI: Crime Scene Investigation
SH524061 CSI: Miami
SH679714 CSI: NY
SH658623 Case Closed
TS2060461 Channel Frederator
SH019177 Charlie Rose
TS1002251 Circuits
TS1317131 DL.TV
SH649011 Danny Phantom
SH672318 Desperate Housewives
SH686098 Drawn Together
TS1014971 El Callejon de los Milagros
SH665420 Entourage
SH840179 Eureka
SH296001 Family Guy
SH945608 Flash Gordon
SH018042 Frank TV
SH303483 Futurama
SH842020 Galaxy Railways
SH732283 Grey's Anatomy
SH860665 Hidden Potential
SH415402 How It's Made
TS1014971 Inspiracion
SH926063 Live From Abbey Road
SH154796 MAD TV
SH962243 Mars Rising
SH657011 Mike and Mike in the Morning
SH669838 NFL Total Access
SH585876 Reno 911!
SH899947 Robin Hood
SH003732 Scientific American Frontiers
SH446160 Scrubs
SH016916 Seinfeld
SH586790 Sell This House!
SH229827 South Park
SH432225 Special Unit 2
SH578678 Sports Reporters
SH003985 Star Trek
SH666541 Stargate Atlantis
SH579364 Subterranean
SH846730 Tenchi Muyo! GXP
SH277598 That '70s Show
SH684279 The Batman
SH508952 The Dead Zone
SH424998 The Fairly OddParents
SH155564 The NewsHour With Jim Lehrer
SH726133 The Office
SH018693 The Simpsons
SH451469 The Suze Orman Show
SH019110 The Twilight Zone
SH476707 What Not to Wear
SH004762 Wheel of Fortune
SH827464 Wild Things
SH882710 Wired Science
SH524080 Without a Trace
SH854373 Yin Yang Yo!
TS1007411 wmcbrine's TiVo Channel

...and I see that "Futurama", "Star Trek" and "What Not to Wear" match armoo's ID's, "The Office" matches dlfl's, and armoo and dlfl's "Cranky Geeks" match. So I guess we can safely say that they're universal.


----------



## greg_burns (May 22, 2004)

SH586260 48 Hours Mystery
SH931010 Back to You
SH930788 Bionic Woman
TS1007641 Break.com
SH861889 CBS Evening News With Katie Couric
TS1000631 CNET
SH380341 CSI: Crime Scene Investigation
SH524061 CSI: Miami
SH679714 CSI: NY
SH592727 Cold Case
SH508651 Cold Case Files
SH753791 Criminal Minds
TS1317131 DL.TV
SH019155 Dateline NBC
SH796119 Deal or No Deal
SH517851 Dr. Phil
SH848361 Heroes
SH688359 House
MV009888 House on Haunted Hill
SH930774 Journeyman
SH931618 Kid Nation
SH932409 Kitchen Nightmares
SH592616 Las Vegas
SH076838 Late Show With David Letterman
SH672362 Lost
SH681911 NCIS
SH536592 Paula's Home Cooking

MV must be Amazon Unbox.

Wondering why this skipped a lot of my shows?


----------



## wgw (May 16, 2007)

thanks for the utility. I manually built a series id list yesterday, but this is sooooo much easier.

I have an MV as well but Broken Trail was recorded from AMC.

SH930788 Bionic Woman
SH672369 Boston Legal
SH930987 Cavemen
SH930779 Chuck
SH672318 Desperate Housewives
SH225826 Dharma & Greg
SH848361 Heroes
SH930774 Journeyman
SH173109 Kindred: The Embraced
SH484723 Last Call With Carson Daly
SH080187 Late Night With Conan O'Brien
SH076838 Late Show With David Letterman
SH932208 Life Is Wild
SH931177 Moonlight
SH380827 Movies
SH681911 NCIS
SH712872 NUMB3RS
SH963115 Pageant Place
SH754199 Prison Break
SH733773 Ready, Set, Change!
SH932210 Reaper
SH446160 Scrubs
SH848759 Shark
SH754231 Supernatural
SH931182 The Big Bang Theory
SH004397 The Tonight Show With Jay Leno
SH753792 The Unit
SH592733 Two and a Half Men
SH931169 Viva Laughlin
SH930986 Women's Murder Club
SH790978 All Star Workouts
SH898877 Blood Ties
SH960717 Blue Planet
SH480422 Blue Planet: Seas of Life
MV178361 Broken Trail
SH830603 Brotherhood
TS1000631 CNET
SH378317 Coupling
TS1318011 Cranky Geeks
SH391978 Curb Your Enthusiasm
TS1317131 DL.TV
SH388853 Dark Angel
SH225330 Dead Man's Gun
SH750178 Doctor Who
SH960860 Five Days
SH945608 Flash Gordon
SH469459 Forecast Earth
SH868991 It's All Geek to Me
SH762956 It's Always Sunny in Philadelphia
SH859980 Man vs. Wild
SH511651 Monk
SH380827 Movies
SH002995 Murder, She Wrote
SH712872 NUMB3RS
SH683074 Naked Science
SH003134 Night Court
SH837834 Psych
SH899947 Robin Hood
TS1002401 Rocketboom
SH432225 Special Unit 2
SH446583 Star Trek: Enterprise
SH666541 Stargate Atlantis
SH685627 Survivorman
SH665214 The 4400
SH508952 The Dead Zone
SH004279 The Gene Autry Show
SH453168 The Office
SH019110 The Twilight Zone
SH947230 Torchwood
SH679777 Vacation Home Search
SH759395 Weeds


----------



## wmcbrine (Aug 2, 2003)

greg_burns said:


> MV must be Amazon Unbox.


I have a couple of Unbox entries in my list (free "purchases"), and they're both "TS1014971". I hadn't seen "MV" before. I'd guess that "MV" is for "Movie", "SH" for "Show", and "TS" maybe for "TivoCast Show"? But I have several movies in my Now Playing list, and they don't have any ID's.

Hmm... I wonder if it could be that an "MV" entry will hang around as long as the movie is in the guide data, and then disappear?



> _Wondering why this skipped a lot of my shows?_


It only covers shows that are currently in the Now Playing list (not shows that you just have Season Passes for); some entries don't have Series ID's; and I've read that the "&Recurse=Yes" lookup will stop after 128 entries, which I didn't bother to work around. If it's not one of those reasons, I don't know.


----------



## wgw (May 16, 2007)

I did a Universal Swivel on Broken Trail and found that it is also available as an Unbox download. The relation to Unbox may be why the cable recording has the MV ID.


----------



## greg_burns (May 22, 2004)

wmcbrine said:


> It only covers shows that are currently in the Now Playing list (not shows that you just have Season Passes for); some entries don't have Series ID's; and I've read that the "&Recurse=Yes" lookup will stop after 128 entries, which I didn't bother to work around. If it's not one of those reasons, I don't know.


Yeah, I thought about the 128 issue. But I have less than 100 in my NPL.

Guess I should take a look a python. Is this an interpreted language (ie, not complied). How do you look at the source? Is PythonWin the editor? When I try to run that I get an error about MFC71.DLL not being found. Time to reinstall. 

 don't go to python.com! 

http://www.python.*org*/


----------



## CuriousMark (Jan 13, 2005)

greg_burns said:


> Guess I should take a look a python. Is this an interpreted language (ie, not complied). How do you look at the source? Is PythonWin the editor?


Unlike languages that use beginning and ending delimiters for nesting and allow you to add indenting, python uses the indenting explicitly for nesting. This makes it cleaner and easier to read.

It is interpreted, but does "compile" the raw code to tokens in a PYC file that it can run a bit faster. That feature can be turned off if desired.

The source is the *.py file. You can edit it with any text editor. There are many that are python aware. I currently use Textpad, but PyWin and about a dozen others are good too. I personally prefer the active state version for installation on a PC since it includes PyWin and a couple of other additions that you will always end up getting on your own anyway. It also includes the complete Python docs in a nice windows help file.

Since Python is fully interactive, you can simply start the interpreter and type python directly into and it will run, just like *Basic* did in my youth.


----------



## greg_burns (May 22, 2004)

CuriousMark said:


> I currently use Textpad


Thanks Mark. Tried at first with Notepad and it didn't recognize the CR LF. Scared me, thought I was looking at a binary.


----------



## wmcbrine (Aug 2, 2003)

greg_burns said:


> Thanks Mark. Tried at first with Notepad and it didn't recognize the CR LF.


Indeed, there are no CRLF sequences -- just LF's. That's because I typed it in nano, under Linux, where plain LF is the standard line ending. Sorry. 

I think most editors nowadays will recognize CRLF, LF, or even CR (old Mac standard) as line endings, but notepad is an annoying CRLF-only holdout, even as it's gained the ability to read UTF-8, UTF-16, and huge files.


----------



## windracer (Jan 3, 2003)

Wow, pretty cool. I've got to jump back into the pyTiVo thread ... I've been watching (but not really reading) all the progress being made over there.

Here's my list:

SH847517	Ace of Cakes
SH445113	Alias
SH565783	American Chopper
SH317395	Angel
SH598470	Arrested Development
SH710749	Battlestar Galactica
SH876404	Challenge
SH550283	Chappelle's Show
SH446167	Crossing Jordan
SH380341	CSI: Crime Scene Investigation
SH679714	CSI: NY
SH649011	Danny Phantom
SH203444	Denise Austin's Daily Workout
SH291777	Denise Austin's Fit & Lite
SH225826	Dharma & Greg
SH883566	Dinner: Impossible
SH611442	Dirty Jobs
SH115131	ER
SH840179	Eureka
SH190061	Everybody Loves Raymond
SH633487	Extreme Makeover: Home Edition
SH296001	Family Guy
SH841570	Feasting on Asphalt
SH524463	Firefly
SH115127	Friends
SH303483	Futurama
SH720935	Go Baby
SH273928	Good Eats
SH963734	Gourmet Next Door
SH732283	Grey's Anatomy
SH835935	Guy's Big Bite
SH848361	Heroes
SH298935	Home Movies
SH415402	How It's Made
SH084554	How to Boil Water
SH778976	I Love the '80s: 3D
SH358427	Inhale
SH647153	Iron Chef America
SH762956	It's Always Sunny in Philadelphia
SH002348	Jeopardy!
SH508607	Kim Possible
SH207002	King of the Hill
SH080187	Late Night With Conan O'Brien
SH017617	Law & Order
SH446173	Law & Order: Criminal Intent
SH316978	Law & Order: Special Victims Unit
SH925303	Lil' Bush
SH836453	Lou and Lou: Safety Patrol
SH859980	Man vs. Wild
SH713516	Medium
SH851909	Metalocalypse
SH511651	Monk
SH557678	MythBusters
SH173694	Nash Bridges
SH338961	NewsChannel 8 Today
SH003134	Night Court
SH589658	Nip/Tuck
SH899881	Planet Earth
SH930971	Private Practice
SH837834	Psych
SH610633	Repo Men: Stealing for a Living
SH725962	Robot Chicken
SH003650	Rockford Files
*MV024517	Rosencrantz and Guildenstern Are Dead*
SH003710	Saturday Night Live
SH446160	Scrubs
SH462576	Sealab 2021
SH265438	Sex and the City
SH003837	Simon & Simon
SH438626	Six Feet Under
SH229827	South Park
SH446583	Star Trek: Enterprise
SH666541	Stargate Atlantis
SH225421	Stargate SG-1
SH661415	Stroker and Hoop
SH753827	Surface
SH685627	Survivorman
SH775388	The Boondocks
SH293053	The Daily Show With Jon Stewart
SH453168	The Office
SH492273	The Shield
SH018693	The Simpsons
SH681066	The Soup
SH004397	The Tonight Show With Jay Leno
SH560454	The Venture Brothers
SH317016	Third Watch
SH947230	Torchwood
SH446477	Unwrapped
SH273673	Whose Line Is It Anyway?

There's the MV prefix for an Unbox movie again. Obviously a lot of those listed above are Suggestions ... I don't have _that_ many SPs.


----------



## PaulS (Sep 16, 2002)

Just thinking out loud here...

Wouldn't you think that there would be a way to glean these values from TiVo's on-line scheduling web site ? It just makes too much sense to me.

[edit]

YES! Although not where I was expecting it to be. If you look up a show in zap2it.com (not tivo.com), you'll see the SeriesID embedded in the URL. Examples :

SH830603 Brotherhood
http://tvlistings.zap2it.com/tvlistings/ZCProgram.do?method=getDetail&pgmId=EP00*830603*0022

SH303483 Futurama
http://tvlistings.zap2it.com/tvlistings/ZCProgram.do?method=getDetail&pgmId=EP00*303483*0015

SH611442 Dirty Jobs
http://tvlistings.zap2it.com/tvlistings/ZCProgram.do?method=getDetail&pgmId=EP00*611442*0016


----------



## HDTiVo (Nov 27, 2002)

What ID do you get if the recording is from a Wishlist? Say "Movies & Lassie" ...

Wondering about WL grouping vs. Series grouping ...


Also, I downloaded the file, but I don't have whatever it is that it runs in, python?


----------



## PaulS (Sep 16, 2002)

HDTiVo said:


> What ID do you get if the recording is from a Wishlist? Say "Movies & Lassie" ...
> 
> Wondering about WL grouping vs. Series grouping ...


That would be an interesting test to try out.



HDTiVo said:


> Also, I downloaded the file, but I don't have whatever it is that it runs in, python?


You need to install python : DOWNLOAD PYTHON


----------



## PaulS (Sep 16, 2002)

Here are the complete SeriesID lists, sorted by name and by ID. Enjoy!


----------



## billb914 (Jan 3, 2005)

I'm and old perl hack but know nothing of python. I think I did something wrong:

Opening...
Traceback (most recent call last):
File "seriesids.py", line 60, in ?
source = open_tivo(tivoaddress, tivomak)
File "seriesids.py", line 16, in open_tivo
return opener.open(url % address)
File "c:\Python22\lib\urllib2.py", line 333, in open
'unknown_open', req)
File "c:\Python22\lib\urllib2.py", line 307, in _call_chain
result = func(*args)
File "c:\Python22\lib\urllib2.py", line 837, in unknown_open
raise URLError('unknown url type: %s' % type)
urllib2.URLError: <urlopen error unknown url type: https>


----------



## wmcbrine (Aug 2, 2003)

Yeah, you might want to upgrade your Python; I don't think it will run on 2.2. I have 2.5, and I made no effort at backwards-compatibility.


----------



## reneg (Jun 19, 2002)

Attached is a link to additional Series IDs I was able to gleam off the Internet. This list is a superset of the list posted earlier by PaulS. There are over 10,000 Series in this list. The linked zip file contains a comma separated text file.

Download Series IDs from here.

In addition, I did a rudimentary mapping between the Series IDs that Tivo recognizes and the TVDB IDs. There are over 2,000 series that map directly on title compares. The linked zip file is also a comma separated text file.

Download TVDBMap here


----------



## MasterCephus (Jan 3, 2005)

Just so everyone knows, I am using PaulS's list of series IDs in the MetaGenerator I wrote for pyTivo. There are some missing IDs, but I think PaulS said it was about 90&#37; complete.


----------



## PaulS (Sep 16, 2002)

MasterCephus said:


> Just so everyone knows, I am using PaulS's list of series IDs in the MetaGenerator I wrote for pyTivo. There are some missing IDs, but I think PaulS said it was about 90% complete.


Well, that 90% was a guestimate, which appears to be *FAR* off the mark in comparison to reneg's list. I have no idea why my searches didn't turn up more entries.

It looks like reneg's list is a far more comprehensive listing. Well done!


----------



## MasterCephus (Jan 3, 2005)

so then I should produce an update with Reneg's list then?

I think you are right...I am going to make an update with this list instead of what I am using now...I have some other things that I am going to add to it as well so it might take me a couple of days...


----------



## PaulS (Sep 16, 2002)

MasterCephus said:


> so then I should produce an update with Reneg's list then?
> 
> I think you are right...I am going to make an update with this list instead of what I am using now...I have some other things that I am going to add to it as well so it might take me a couple of days...


Why can't you make a slight modification that will allow a user to specify a text file (or files) that contains a list of SeriesID's, to supplement or replace your current db3 file ? Or, include a tool to allow a user to generate the db3 themselves ?

That way, whenever a new entry is discovered, or new shows start popping back up after the WGA strike is over, you don't have to spin a new version ?


----------



## MasterCephus (Jan 3, 2005)

I could try something like that, but I would have to specify the exact way the file would have to be formatted...

This was also a programming exercise and I had never used SQLite so I wanted to try that out.

I could just default mine, but then allow you to use a different file if you wanted....

I might end up doing that, but for right now, I think I will stick to this method...but I'll put it on my list of updates though!

Thanks for the input!


----------



## reneg (Jun 19, 2002)

With a few more days of data, I have another 872 series IDs identified. I'm sure I won't discover as many new series IDs as the number found increases, but what PaulS suggested about a user modified text file sounds like a decent enhancement for your metadata generator program.


----------



## reneg (Jun 19, 2002)

I have identified another 1190 Tivo Series IDs since my 12/20 post. They are posted on mediafire as follows:
Tivo Series IDs rel 2
TVDB Mapping to Series IDs rel 2
New series IDs added to rel 2 (delta from release number 1)

There is a problem in my listings with the handling of umlauts and other world accent markings. I'm looking at how to correct it.


----------



## Narf54321 (Mar 30, 2005)

Not sure how much this helps, but one 'generic' folder folks may want to use for grouping is the initial *Tivo Video Tours* folder (which I'm sure gets deleted by everyone fairly quickly). May be useful for storing occasional oddball series, and I can't see it being re-used for anything else:


```
TmsId[16]=SH728618
Title[17]=TiVo Video Tours
```


----------



## orangeboy (Apr 19, 2004)

Any chance of getting an updated list? I'd like to not step on valid seriesIds if I generate a new seriesId based on directory name(s). I'd hate to assume that SH990001-SH999999 are all "free" for personal use...


----------



## reneg (Jun 19, 2002)

orangeboy said:


> Any chance of getting an updated list? I'd like to not step on valid seriesIds if I generate a new seriesId based on directory name(s). I'd hate to assume that SH990001-SH999999 are all "free" for personal use...


I don't have any plans to update the series id list because it used scripted screen scraping to collect the series ids.

I think it would be pretty safe from conflict using an 8 digit series id in the 9xxxxxxx range. New series seem to be falling into the 01xxxxxx range and they seem to be allocated somewhat sequentially. I haven't tested this out myself to see if the Tivo will accept it, but it should.


----------



## orangeboy (Apr 19, 2004)

reneg said:


> I don't have any plans to update the series id list because it used scripted screen scraping to collect the series ids.
> 
> I think it would be pretty safe from conflict using an 8 digit series id in the 9xxxxxxx range. New series seem to be falling into the 01xxxxxx range and they seem to be allocated somewhat sequentially. I haven't tested this out myself to see if the Tivo will accept it, but it should.


Cool. Sounds reasonable. superflysocal was interested in a metadata generator for (for lack of a better term) non-indexed content, which is something I've been wanting to work on (or improve) myself for awhile. I have something in place already that uses hardcoded directory names associated with seriesIds to group content into folders, but that makes it pretty much inflexible. My idea is to set a base seriesId starting at SH90000000, and increment and store that by 1 for every directory metadata is generated. A ".SERIESID" file will be created similar to pyTivoMetaThis, so it can be used as a source for subsequent files found in the directory. I'll see how it goes.

Thanks for your input!


----------



## wmcbrine (Aug 2, 2003)

orangeboy, I'm confused by your last couple of posts. My understanding has always been that you can't just make up a seriesId -- they have to already be in the TiVo's database. Invalid ID's are ignored (i.e., they don't group). Have you found otherwise?

The exception is Pushes, but in that case the seriesId is generated for you automatically, so you don't have to worry about setting it -- you can't, anyway. (pyTivo will use it for grouping with Push if you set it in metadata, but the TiVo will never even see it.)


----------



## orangeboy (Apr 19, 2004)

wmcbrine said:


> orangeboy, I'm confused by your last couple of posts. My understanding has always been that you can't just make up a seriesId -- they have to already be in the TiVo's database. Invalid ID's are ignored (i.e., they don't group). Have you found otherwise?
> 
> The exception is Pushes, but in that case the seriesId is generated for you automatically, so you don't have to worry about setting it -- you can't, anyway. (pyTivo will use it for grouping with Push if you set it in metadata, but the TiVo will never even see it.)


It's quite probable that the unique seriesId I assign _isn't_ playing a part, but rather the unique titles, seriesTitle, and/or episodeTitles are setting the correct grouping in NPL. I specify the following keywords, with the hope that all will be eventually honored:


```
title : 
seriesID : 
seriesTitle : 
episodeTitle : 
description : 
isEpisode : 
isEpisodic : 
vProgramGenre : 
vSeriesGenre :
```
Currently, title and seriesTitle are populated using the directory name, while episodeTitle is populated using file name (sans extension). Everything else is just fluff (I have a python script that populates those fields via web scraping for some of my more "risqué" files ).

And confirmed: A file of a different title but same seriesId as another item in NPL grouped in the correctly _named_ folder in NPL, ignoring the seriesId completely. So title or seriesTitle plays a bigger part in pushed content than seriesId.

Omitting the seriesId and relying on one of the title keywords still grouped correctly as well. I now have a better understanding of the role of metadata when it comes to push.

Edit: and yes, push is my exclusive method for transfer.


----------



## orangeboy (Apr 19, 2004)

wmcbrine said:


> orangeboy, I'm confused by your last couple of posts. My understanding has always been that you can't just make up a seriesId -- they have to already be in the TiVo's database. Invalid ID's are ignored (i.e., they don't group). Have you found otherwise?
> 
> The exception is Pushes, but in that case the seriesId is generated for you automatically, so you don't have to worry about setting it -- you can't, anyway. (pyTivo will use it for grouping with Push if you set it in metadata, but the TiVo will never even see it.)


I just pushed two videos with the same title, seriesTitle, different episodeTitle, and no seriesId whatsoever in the metadata. They correctly grouped into the same folder in the NPL. So now I'm confused when you say "pyTivo will use it for grouping with Push if you set it in metadata". Pushing a third file with no seriesId but different titles correctly did NOT group into the same/existing folder. So what seriesId is being generated automatically?


----------



## wmcbrine (Aug 2, 2003)

I'm confused as to what you're confused about. 

pyTivo never generates a seriesId. That's done by the TiVo Mind server (mind.tivo.com), which does it automatically for all TiVoCasts (which is what pushes really are). What pyTivo does is this:


```
title = file_info['seriesTitle']
            if not title:
                title = file_info['title']

            source = file_info['seriesId']
            if not source:
                source = title
```
"source" is an arbitrary string which is used by mind.tivo.com to generate the seriesId. The string itself is not passed to the TiVo, AFAICT. This is the _only_ way that pyTivo uses a seriesId in a push. So, if two files have the same seriesId in their metadata, they will be grouped on the TiVo. But, it doesn't matter one iota _what_ that seriesId is -- only that it's the same between the two files. "seriesId: FOOBAR", "seriesId: Qwerty", whatever. Having a proper seriesId is only relevant for pulls, not pushes.

P.S. It needs to be "seriesId", not "seriesID".


----------



## orangeboy (Apr 19, 2004)

Ok, so my typo with seriesId appears to have negated any valid results to the tests, since the values were ignored, and title fell through to supply "source". I'll fix that bit and push again, because I'm curious as to what would happen when files with differing titles but the same seriesId are pushed, and how they would be grouped. My guess would be that title will supersede the seriesId, and like titled files would be grouped in their own respective folders.


----------



## wmcbrine (Aug 2, 2003)

You don't have to guess; the answer is in the code I posted.


----------



## orangeboy (Apr 19, 2004)

wmcbrine said:


> You don't have to guess; the answer is in the code I posted.


Pardon my ignorance, but I'm not seeing it. I see values being assigned to both "title" and "source", with both variables having the ability of having the same values (in the case that file_info['seriesId'] is false, and the value of "title" is then also assigned to the variable "source"). I have no idea what priority either title or source has relating to grouping, hence my guess that title would supersede seriesId.

Edit: example to follow


----------



## orangeboy (Apr 19, 2004)

Metadata file 1

```
title : Show One
seriesId : SH990001
seriesTitle : Show One
episodeTitle : Episode One
description : First episode of Show One
isEpisode : true
isEpisodic : true
```
Metadata file 2:

```
title : Show Two
seriesId : SH990001
seriesTitle : Show Two
episodeTitle : Episode One
description : First episode of Show Two
isEpisode : true
isEpisodic : true
```
Given the above 2 metadata files, would grouping work if the videos were pushed? Both have the same seriesId, but differing titles. My guess is no, no grouping with both titles as single entries in the NPL.

Metadata file 3

```
title : Show One
seriesId : SH990001
seriesTitle : Show One
episodeTitle : Episode Two
description : Second episode of Show One
isEpisode : true
isEpisodic : true
```
Metadata file 4:

```
title : Show Two
seriesId : SH990001
seriesTitle : Show Two
episodeTitle : Episode Two
description : Second episode of Show Two
isEpisode : true
isEpisodic : true
```
Two more files. My guess is that now grouping would take effect since there are more than 1 video with the same _title_ in the NPL.

I may be flaunting my ignorance if this has all been covered before, and I can easily find out the results with some (valid) testing on my own.


----------



## orangeboy (Apr 19, 2004)

And I've got my answer. seriesId supersedes title. Fixing my typos allowed pyTivo to correctly identify the seriesId values set in the metadata file, and all like seriesIds found were indeed grouped together, regardless of title. Quite the opposite of what I had guessed.

I think it's time to delete all my metadata files and regenerate with correctly cased keywords.


----------



## wmcbrine (Aug 2, 2003)

orangeboy said:


> I have no idea what priority either title or source has relating to grouping


"source" is the _only_ determinant of grouping for pushes.


----------



## orangeboy (Apr 19, 2004)

wmcbrine said:


> "source" is the _only_ determinant of grouping for pushes.


Thanks. So depending on how the metadata is constructed, it may just behoove someone to completely omit the seriesId keyword, and allow the title to fall through and be used for that value to group like videos that would otherwise not be found through pyTivoMetaThis or other metadata generators resources. For example, I have several Led Zeppelin "home videos" sorted into folders for the years they were shot, and would never be found in IMDB. Using the title "1970" would group all the 1970 recordings, the title "1971" would group all the 1971 recordings, etc...


----------



## wmcbrine (Aug 2, 2003)

Yes -- if (as in your case) your only concern is pushes.

For pulls, the seriesId is the only grouping mechanism.


----------



## drewdonohue (Apr 16, 2011)

Ok, Im reading these threads and I am understand some of it, but a bunch of it goes over my head. Im wondering if you guys can help me out.

I am putting my dvd collection onto my tivo premier from my mac book pro. I would love to be able to have all the movies organized in the NPL in a folder called something like"dvd collection". I think I understand that if I were to push a file called "dvd collection.mpg" along with a file called "dvd collection.mpg.txt" it could start a folder called the same name as long as all following files in their accompanying .txt files have the same seriesId?

Also if anyone knows a good meta compiler for the mac would be great, the pymetagetter doesn't seem to work at all.


----------



## orangeboy (Apr 19, 2004)

drewdonohue said:


> Ok, Im reading these threads and I am understand some of it, but a bunch of it goes over my head. Im wondering if you guys can help me out.
> 
> I am putting my dvd collection onto my tivo premier from my mac book pro. I would love to be able to have all the movies organized in the NPL in a folder called something like"dvd collection". I think I understand that if I were to push a file called "dvd collection.mpg" along with a file called "dvd collection.mpg.txt" it could start a folder called the same name as long as all following files in their accompanying .txt files have the same seriesId?
> 
> Also if anyone knows a good meta compiler for the mac would be great, the pymetagetter doesn't seem to work at all.


Using a "default.txt" file may help in your situation. From http://pytivo.sourceforge.net/wiki/index.php/Metadata:



> Optionally, if a metadata file named default.txt exists, the settings in it will be used as defaults for all of the video files within that directory/folder. And if you don't like the .txt files cluttering your video directory, you may create a .meta subfolder within each directory and move your txt to the .meta subfolder.
> 
> For example, if you have a folder dedicated to a series, it'd be desirable to have the following fields in default.txt: seriesTitle, isEpisode (true), seriesId, displayMajorNumber, callsign, tvRating, showingBits, vProgramGenre, vActor, vExecProducer, vProducer, vHost. With those stored as defaults, one could add minimal episode-specific overrides such as episodeTitle, episodeNumber, tvRating, showingBits; additional vActor and vProducer fields; and fields without defaults such as vGuestStar.


----------



## Spenner (Mar 28, 2006)

Have you ever seen the tivo "forget" series IDs used for pushes to a folder? I used pyTivo to push a bunch of movies into a folder "Kids Movies" using this default.txt (I removed the "title" parameter after I named the folder with some dummy videos):
isEpisode : true
episodeNumber : 1
seriesId : SH999901

It was then about 10 months until I went to push there again, and the tivo created a new folder with the title of the first of the new batch of movies.

It just wouldn't push to the existing "Kids Movies" folder. I wound up creating a new folder with seriesId : SH999902 and title : More Kids Movies, and things go there now.

What do you think?


----------



## txporter (Sep 18, 2006)

Spenner said:


> Have you ever seen the tivo "forget" series IDs used for pushes to a folder? I used pyTivo to push a bunch of movies into a folder "Kids Movies" using this default.txt (I removed the "title" parameter after I named the folder with some dummy videos):
> isEpisode : true
> episodeNumber : 1
> seriesId : SH999901
> ...


If you used the folder 10 months ago and had subsequently deleted all of the files in the folder (say more than 2-3 weeks ago), then Tivo drops the seriesId from its list. That is why a new folder was created. If you keep something around in the folder, it should stay in the list and continue to push into the same folder you originally made.


----------



## Spenner (Mar 28, 2006)

txporter said:


> If you used the folder 10 months ago and had subsequently deleted all of the files in the folder (say more than 2-3 weeks ago), then Tivo drops the seriesId from its list. That is why a new folder was created. If you keep something around in the folder, it should stay in the list and continue to push into the same folder you originally made.


Nope the old folder is indeed still there with about 20 programs in it. Hmmm.

A few months ago my HDTivo was getting the S03 error, and I had to do kickstarts 57 & 58 to fix it (no programs were lost), but I wonder if that could have affected it?


----------



## txporter (Sep 18, 2006)

Hmm. I don't know. I have a 'Movies' folder on my Tivo for pushing movies to. I don't use it very much since my wife and I tend to watch series, but I don't remember long periods of time causing the push to create new folders.


----------



## orangeboy (Apr 19, 2004)

I wonder if SH999901 was used by somebody else that in turn updated TiVo's database relating to title/seriesTitle/whatever. When you pushed using that seriesId, it didn't match what was in the database and determined that it was a "new" series (for you). After your push, the other person would also experience the same problem? Dunno.


----------



## merrickw (Jul 29, 2002)

wmcbrine said:


> In case anyone's interested, here's a little Python program I wrote to dump the list of series ID's currently in your Now Playing list. More of a programming exercise for myself, but anyway...
> 
> If you like, post your lists in this thread. I'm a little curious if the IDs are the same for all boxes or not...


Hi,

I know this script is four years old now, but I have a particular request about SeriesId's. I am interesting in viewing all the SeriesId's on an old Series2. It had a disk crash a couple of years ago, and since that point new shows would not group with old shows (no change to program guide). I am curious to print out all the SeriesId's to see if that is causing this odd grouping problem. Not a critical problem just a major curiousity.

This script somehow stops at a handful of shows - is there another quick & dirty way to view the SeriesId (when available) of every program on the box?

Thanks,
Merrick


----------



## reneg (Jun 19, 2002)

merrickw said:


> Hi,
> 
> I know this script is four years old now, but I have a particular request about SeriesId's. I am interesting in viewing all the SeriesId's on an old Series2. It had a disk crash a couple of years ago, and since that point new shows would not group with old shows (no change to program guide). I am curious to print out all the SeriesId's to see if that is causing this odd grouping problem. Not a critical problem just a major curiousity.
> 
> ...


You can view the xml version of the Now Playing List from a browser which shows the series ids for shows in the Now Playing List:


```
https://<ipaddress>/TiVoConnect?Command=QueryContainer&Container=%2FNowPlaying&Recurse=Yes
```
Look for the <SeriesId> in the details of each show.


----------



## merrickw (Jul 29, 2002)

reneg said:


> You can view the xml version of the Now Playing List from a browser which shows the series ids for shows in the Now Playing List:
> 
> Look for the <SeriesId> in the details of each show.


Hi - Thanks for that link. However, the same limitation is kicking in. The oldest programs that it returns are about a month old. I'd really like to compare the ids from some of the oldest shows on the box.

I see the line:
<ItemCount>128</ItemCount> 
in the results. Is there a work-around for that?


----------



## merrickw (Jul 29, 2002)

merrickw said:


> Hi - Thanks for that link. However, the same limitation is kicking in. The oldest programs that it returns are about a month old. I'd really like to compare the ids from some of the oldest shows on the box.
> 
> I see the line:
> <ItemCount>128</ItemCount>
> in the results. Is there a work-around for that?


I just found the answer from earlier posts:
http://archive2.tivocommunity.com/tivo-vb/showthread.php?t=235563


----------



## bobfrank (Mar 17, 2005)

I may be way off topic, but I think this little tidbit might help some of the above posters.

The seriesId does not have to be in the format

seriesId : SH999901

it can be almost anything. Such as

seriesId : Netflix
seriesId : Movies
seriesId : Vacations

This keeps you from having id's that conflict with other TiVo Programs.

Bob


----------



## lpwcomp (May 6, 2002)

bobfrank said:


> I may be way off topic, but I think this little tidbit might help some of the above posters.
> 
> The seriesId does not have to be in the format
> 
> ...


Well, I suppose your on topic for the posts made in April but off topic for the ones made yesterday.


----------



## lpwcomp (May 6, 2002)

merrickw said:


> Hi,
> 
> I know this script is four years old now, but I have a particular request about SeriesId's. I am interesting in viewing all the SeriesId's on an old Series2. It had a disk crash a couple of years ago, and since that point new shows would not group with old shows (no change to program guide). I am curious to print out all the SeriesId's to see if that is causing this odd grouping problem. Not a critical problem just a major curiousity.
> 
> ...


I'm curious. Are you saying that shows you recorded, say a year ago, are not grouping with episodes of the same series recorded more recently?


----------



## merrickw (Jul 29, 2002)

lpwcomp said:


> I'm curious. Are you saying that shows you recorded, say a year ago, are not grouping with episodes of the same series recorded more recently?


Yes. Now this did happen after I replaced the hard disk and power supply. But the shows do have the same SeriesId and name. I've analyzed the data and think there something hidden in the database that keeps these from grouping.

Other odd behaviour on the old shows - Upcoming Episodes always comes up blank, and there's no option to 'get a season pass'. But on the new versions of those same shows, those options work. It's just weird.


----------



## lpwcomp (May 6, 2002)

merrickw said:


> Yes. Now this did happen after I replaced the hard disk and power supply. But the shows do have the same SeriesId and name. I've analyzed the data and think there something hidden in the database that keeps these from grouping.
> 
> Other odd behaviour on the old shows - Upcoming Episodes always comes up blank, and there's no option to 'get a season pass'. But on the new versions of those same shows, those options work. It's just weird.


It is indeed weird. I could understand it if you had pushed the old recordings to the TiVo but this makes no sense whatsoever.


----------



## saberman (May 4, 2004)

reneg said:


> In addition, I did a rudimentary mapping between the Series IDs that Tivo recognizes and the TVDB IDs. There are over 2,000 series that map directly on title compares. The linked zip file is also a comma separated text file.
> 
> Download TVDBMap here


The link above gives a page that says the file is no longer there.


----------



## HerronScott (Jan 1, 2002)

saberman said:


> The link above gives a page that says the file is no longer there.


Not surprised after 9 years. 

This would be the pre-Rovi guide data update so wouldn't be relevant to current SeriesId values.

Scott


----------



## wmcbrine (Aug 2, 2003)

HerronScott said:


> Not surprised after 9 years.


Wow, nine years. Where does the time go?


----------



## xberk (Dec 3, 2011)

Since push seems to be broken, I've been trying to get PULL to group items into folders. seriesID TS0000000011 works in the metadata but SH999666 does not. In this thread from long ago, you mentioned that TS was for TivoCasts ?? I don't even know what that is .. but wondering why TS seriesID's work when SH's don't for PULL ??


----------



## lpwcomp (May 6, 2002)

xberk said:


> Since push seems to be broken, I've been trying to get PULL to group items into folders. seriesID TS0000000011 works in the metadata but SH999666 does not. In this thread from long ago, you mentioned that TS was for TivoCasts ?? I don't even know what that is .. but wondering why TS seriesID's work when SH's don't for PULL ??


Because TiVo changed something in conjunction with the switch to Rovi data.


----------



## sjmyst (Apr 24, 2004)

xberk said:


> Since push seems to be broken, I've been trying to get PULL to group items into folders. seriesID TS0000000011 works in the metadata but SH999666 does not. In this thread from long ago, you mentioned that TS was for TivoCasts ?? I don't even know what that is .. but wondering why TS seriesID's work when SH's don't for PULL ??


xberk,

You say "seriesId TS0000000011" (I assume you meant 'seriesId' and not 'seriesID') "works".

I am in the same boat as you where with push broken, I would very much like to use pull. But, I need grouping to work.

I have a Premiere and everything I've tried (and I've tried a fair amount) isn't working for my Premiere. Where did you see this "work" (using TS##########)? On your Roamio? Another TiVo? I wouldn't mind seeing your steps if they are different than one of the tests I did here:

pytivo: Session cannot be authenticated; try login again

If you did see grouping "work", have you tried the same thing using one of your Premiere's? What were the results?

Regards,
sjmyst


----------



## wmcbrine (Aug 2, 2003)

xberk said:


> In this thread from long ago, you mentioned that TS was for TivoCasts ?? I don't even know what that is


There used to be a feature where you could subscribe to selected video podcasts, which they called TiVoCasts. It was pretty sweet (although kind of annoying that you couldn't get the full functionality with arbitrary vodcasts, only the ones on the list). They'd be downloaded to the TiVo and displayed in the NPL (as we called it then), like other shows. This was actually the core functionality behind "Push", too.


----------

