API/interface to pull recorded show listings, metadata, and files off of the Tablo

@TabloTV No problem with plex, I don’t plan to use plex to control the Tablo, but plan to just extract recordings from the Tablos to store on the plex server (which has an absurd amount of storage), and use the Tablos for live TV, ipad streaming, and for and scheduled recording.  I’ll just update my scripts that download/reassemble the videos as you advance the system.


BTW, I love your feature that lists newly premiering shows.

Aha - well that’s good then :) 


And thanks! Glad you like that one! It’s a nice feature to have so you don’t miss out on a cool new show. 

@TabloTV, I just opened a support message with just that question. I know there’s a show premiering on Monday, August 4th, but it’s not listed in the guide under new shows, or anywhere for that matter. I thought the guide showed two weeks of programming?

I love this feature also (premiering shows), just don’t understand why it isn’t listing this particular show.

@MsMetaP - the ‘premiering’ screen is generated by the metadata provided to us by our guide data provider. So, if for some reason it’s not tagged as ‘premiering’ it won’t show up in that screen.


Long story short they do their best to be as accurate as possible, and we try to work with them to make sure we flag any ‘weird’ issues like this, but given the sheer amount of data there may be an error or two. 

So, if you do see any guide errors or oddities, fire a message off to @TabloSupport and we’ll work with them to get it updated. 

With regards to Plex and multiple tablos, not only not supported, it actually causes problems (beware).  I had to get Nuvyyo to manually delete one of my Tablos off of their servers (they’re tracked and used for the directory service I imagine??).  That was the only way to get the Plex app to behave somewhat.  When it goes to get the private ip of your Tablo, it comes back with all of your Tablo entries and in my case it was picking the IP of one that I no longer own.

(they're tracked and used for the directory service I imagine??)

That’s correct! 


This issue should be resolved once we get the subscription service portal up & running. On there you’ll be able to ‘delete’ and add a Tablo from your list. 

@jskenney tried your script today. One issue, I left out the path to ffmpeg so conversion failed and then if I tried to run it again it thought it was already done so it cancels itself. 


Had to delete the db file for it to start downloading again

Oh, and unless the DB is there I cannot do a -list. SO as long as I download one I can do a list, otherwise it does not work

thanks this script is just the thing I was looking for to pull files until the official method is out… 

@jestep thanks for the notes, I will put in a few checks the next time I update the script (probably over the weekend).

Going to see if I can pull this together and get this running on my server running Plex - Being able to have the shows natively within Plex would be fantastic!

@mtuckman - this is actually my use case.  I currently have two tivo roamios (ota) and two tablo’s, the files are pulled off and put into the appropriate directories for plex.  As soon as the tablo’s can do multi-channel sound the tivo’s will go away.

As soon as the tablo’s can do multi-channel sound…


Don’t hold you breath. It is no longer scheduled for this year and there are no promises it will ever be addressed.

@jskenney


Got this working pretty well and forked it and made some changes.  I had to post it to my Github since it was originally hosted on a Google Site. Hope you don’t mind.

I added some parms to help with debugging and testing, allowed you to pass the temp working directory, time to sleep, etc.

https://github.com/miketuckman/TabloExtract/blob/master/TabloToGo.v1.py

It also works with Windows directories now as it couldn’t handle the drive letter, etc.  I also temporarily turned off loading up the previous configuration from the db as it overwrote anything that was passed.

Tablo Extractor (Version 0.23)
 Usage: C:\TabloTV\TabloToGo.v1.py “search regex”
 Options:    -tablo:IP_ADDR        tablo ip address (multiple tablos seperated by a colon)
             -ffmpeg:PATH          path to ffmpeg (ex /bin/ffmpeg)
             -db:file              Tablo Extractor Database File
             -output:dir           Save final files here
             -temp:dir             Temporary working directory for received files
             -a                    Reprocess ever 30 minutes, do not exit
             -list                 List videos on Tablo(s)
             -csv                  List videos on Tablo(s) in a script readable format
                                   note: this sets debug/printing to off.
             -handbrake            Post process with handbrake (and delete .mp4 file)
             -tv                   Process only TV shows
             -movies               Process only Movies
             -proc:IP_ADDR:VIDEOID Process only specified file (only one)
             -c                    Mark matched videos as complete/transfered
             -debug                Display all msgs
             -testing              Only processes 1 segmant from Tablo - to test directories, etc - Faster
             -sleep                Number of seconds to sleep, used with -a
 Note: Search Terms are optional and should be in a quote if more than one word.

This is the command I am running:

TabloToGo.v1.py -db:tablo2go.db -Tablo:192.168.1.110 -ffmpeg:ffmpeg -output:“V:\TabloTV” -temp:“V:/TabloTemp” -a -sleep:900

Only issue I have now is I need to move the TabloTV onto my ethernet and get it off the wireless, get that transfer time increased.

Next step - configure Plex to scan the new directory!


@mtuckman - glad it worked for you, thanks for the windows friendly mods (I use mac and linux only), I will merge them back into my source.  

I made another couple of changes:


Fixed problem with DB update

Database wasn’t being updated on subsequent runs if it was previously
recording when run.

Also changed temp ID to be the video # and not a UUID - the longer
value caused problems with the call to FFMPEG.

</div></div>

Odd … now when I run TabloToGo.v1.py on my iMac it just throws the usage back at me…


Tablo Extractor (Version 0.23)

 Usage: ./TabloToGo.v1.py "search regex"

 Options:    -tablo:IP_ADDR        tablo ip address (multiple tablos seperated by a colon)

             -ffmpeg:PATH          path to ffmpeg (ex /bin/ffmpeg)

             -db:file              Tablo Extractor Database File

             -output:dir           Save final files here

             -temp:dir             Temporary working directory for received files

             -a                    Reprocess ever 30 minutes, do not exit

             -list                 List videos on Tablo(s)

             -csv                  List videos on Tablo(s) in a script readable format

                                   note: this sets debug/printing to off.

             -handbrake            Post process with handbrake (and delete .mp4 file)

             -tv                   Process only TV shows

             -movies               Process only Movies

             -proc:IP_ADDR:VIDEOID Process only specified file (only one)

             -c                    Mark matched videos as complete/transfered

             -debug                Display all msgs

             -testing              Only processes 1 segmant from Tablo - to test directories, etc - Faster

             -sleep                Number of seconds to sleep, used with -a

 Note: Search Terms are optional and should be in a quote if more than one word.

I figured out the issue… seems -temp is required in the new version


now I am getting this error

Traceback (most recent call last):

  File "./TabloToGo.v1.py", line 433, in

    DB, found_count, add_count, del_count, proc_count = db_update(TABLOS, DB)

  File "./TabloToGo.v1.py", line 228, in db_update

    DB[IP][ID] = get_meta(IP, ID)

  File "./TabloToGo.v1.py", line 88, in get_meta

    metadata = eval(metadata)

  File "", line 1

    <?xml version="1.0" encoding="iso-8859-1"?>

    ^

I rebooted my Tablo and it seems to be working now … so please disregard that previous post…


Though … it would be nice if a required command line option is missing its stated in the output when the script is envoked… might want to tweak that … 

@mtuckman - thanks for all of the changes, I am going to work to merge your updates back into mine.  I will need to figure something out about the UUID, if someone has multiple tablo’s the video-ids could be the same.