SurLaTablo.py - Python program to query and convert Tablo recordings

PM sent.

Posting this here too as others might have the same problem…

The aac on your ffmpeg requires this option (or -strict experimental can be used)

so… you could edit the source code of surlatablo.py and in the TRANSCODER_OPTS extend the audiooptions array to add ‘-strict’, ‘experimental’.

'audiooptions': [ '-metadata:s:a:0', 'language=${lang3}', '-strict', 'experimental' ],

You want to do this for any Mp4 variant transcoder.

The alternative would be to extend and/or override with your own TRANSCODER_OPTS[‘myMp4’]= etc… in your surlatablo.conf file. It’s weird because at the end of 2015 ffmpeg said you no longer would need -strict experimental… and now perhaps it’s needed again (?) I know my ffmpeg doesn’t need it, but can’t say for sure what aac encoder I’m using at the moment by default on my ffmpeg.

oh… and I didn’t test this… :slight_smile:

Because of the way I’m handling options, option values need to be strings, e.g.:

options['no_utf8_names'] = 'true'
options['postscript'] = 'true'

That fixed it.

All is working now. Thanks!

SurLaTablo 1.9p1 Released

1.9p1

Minor patch to fix some potential unicode character issues.

SuLaTablo is broken with the latest beta release. It appears the internal URLs have changed.

home:~ miniserver$ /usr/local/bin/lockrun --verbose --lockfile=/var/tmp/surlatablo.lockrun -- /usr/local/bin/runsurlatablo
Waiting for process 1691
Traceback (most recent call last):
  File "/usr/local/bin/surlatablo.py", line 2486, in <module>
    jch_ids = urllib2.urlopen(ch_ids_url)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 154, in urlopen
    return opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 437, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 550, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 475, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 409, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 558, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found
pid 1691 exited with status 256 (time=1 sec)
Exiting rc=1

Beta 5 dropped support for the old API…

Yeah, I remember seeing you mention something about that. So there’s no longer any HTTP access? Or is it just different now?

The current API still uses HTTP, but you need to sign up as a developer to get at the docs.

I’m not trying to hijack this thread from @cjcox. Just thought I’d share the news and move along. I’m sure he’ll weigh in.

Somewhat true… you have to sign a very restrictive NDA that prohibits open source development. It could be the end of the road for me… sigh…

I am no longer able to use this program at all nor can I use Tablo Exporter.

Did the latest firmware beta update break this?

Traceback (most recent call last):
File “/root/Drive/Linux/bin/surlatablo-1.9-py”, line 2506, in
jch_ids = urllib2.urlopen(ch_ids_url)
File “/usr/lib/python2.7/urllib2.py”, line 154, in urlopen
return opener.open(url, data, timeout)
File “/usr/lib/python2.7/urllib2.py”, line 437, in open
response = meth(req, response)
File “/usr/lib/python2.7/urllib2.py”, line 550, in http_response
‘http’, request, response, code, msg, hdrs)
File “/usr/lib/python2.7/urllib2.py”, line 475, in error
return self._call_chain(*args)
File “/usr/lib/python2.7/urllib2.py”, line 409, in _call_chain
result = func(*args)
File “/usr/lib/python2.7/urllib2.py”, line 558, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found

It would appear that Tablo has closed the open doors… Choose a closed source alternative. I haven’t given up totally yet… but doesn’t look good.

Wow. That would really really suck. I use this daily!!

The pains of closed companies… but what if you could get an 8 tuner box that can stream and optionally become a frontend with games, apps, surround sound and costs less than Tablo and is “open”?

That would be very interesting indeed. If this is the way Tablo wants to play now I’ll have no loyalty for them.

Well to be honest this app was the only thing keeping using my Tablo. Seems awfully crappy of them if you ask me. Boo!!! Hiss!!!

Seriously what the heck! I can’t even watch it in chrome or anything either. Just sits there spinning over and over. What a hunk of jumk now!

Running into problem and I was wondering if there is a switch that can be used to specify the converted file location.

command:
python surlatablo.py --noupdate --convert --rec_id 70639 --zapcommercials

Error I am getting is:
Retrieving Tablo Data (70639): [ ] 2%
Traceback (most recent call last):
File “surlatablo.py”, line 3053, in
doConvert(sl, options, basedirs, filename_pats, transcoder_names)
File “surlatablo.py”, line 1677, in doConvert
temp_f.write(ts_response.read())
IOError: [Errno 28] No space left on device

I am running “surlatablo.py” on QNAP NAS and I have 5 TB on a different location on NAS than where this is running.

I was hoping I could do -c /share/MD0_DATA/Public/

which is where my PLEX server is looking for my “stuff”. I was reading the thread but did not see anything like this mentioned.

just do a “cd /share/MD0_DATA/Public/” before you run the command. You’ll need to specify the full path to the surlatablo.py file when you do that.

There’s also a way to specify the full path by editing the surlatablo.py file, but that’s more complicated.

Thank you. That is what I needed. I will have to set on up for each TV and Movies to run from time to time. I did not realize that it used . as where to place files.

I may update the config file to use it as a param.