APL Tablo Client

Protect me from myself… I’ve swapped routers and (I’ve got my reasons) changed address from 192.168.1.x to 192.168.0.x I had unchecked the discovery option… you see where this is going. I figured I could edit SQlite, but decided to wait it out and see what happens, for the sack of others :man_shrugging:.

+ JFXPath=/usr/share/openjfx/lib
+ java --module-path /usr/share/openjfx/lib --add-modules javafx.controls,javafx.fxml -jar APLTablo.jar
2020-01-23 19:11:32,075 [INFO ] APL Tablo .20
2020-01-23 19:11:32,076 [INFO ] Logging set at DEBUG
2020-01-23 19:11:32,077 [INFO ] Starting Processing
2020-01-23 19:13:42,213 [ERROR] Could not get server info, for 192.168.1.11
2020-01-23 19:20:15,428 [ERROR] Could not get server info, for 192.168.1.21

The first error’d out in a couple minutes. This it took another 7 for the second tablo to fizz out. Then I clicked the file menu, and maybe bumped the Shows button - all over again.

Can you shorten the time out for ID-10-T error?

1 Like

Programming the ‘happy path’ is always easier than programming for the error situation. I’ll see if I can add a parameter to the settings that allows you to define your network timeout :slight_smile:

I have finally successfully accessed APL Tablo. Thanks to LJ for such a nice interface.

Some possible ideas for the Nice To Have List.
1- Add screen for LiveTV Channel URL’s. So we can watch the live channels in a different viewer…VLC, etc.
There have been comments in the forums that the live view channel URLs
are fairly consistent over time.
Presently I don’t know how to see the actual LiveTV channel URLs.
Screen might refresh the list and provide access to the URLs.
2- Add hotkeys for the pulldown menu items to speed selection.
example: Recorded Shows screen…right click on show…pull down menu…D for Delete
Would save a mouse move for every delete.
3- Put APLTablo icon file into APL Tablo folder.
So we can setup a desktop icon with the proper look.

1 Like

Groom what I’ve seen in my browser, live is a POST request, not the simple GET. VLC useses for streaming. But I’m not a developer.

I’ve mainly focused on recording and such…I haven’t looked much into the live tv watching…I’ll see what I can do

for the rest of it, I like the ideas…I’ll see what I can do to get it where you want it to be :slight_smile:

I think it is possible to stream a live channel.
see Tablo and VLC Player
Criaig Royce states:
That URL stays valid for that channel (in my case ABC 2.1) day in and day out whether the browser is running or not. It appears that Tablo’s video stream addresses transcend specific browser instances. So I can make in VLC a table of streams named after the channels (a playlist) and use VLC as my Tablo client without even opening a browser.
(end quote)

So I played around a bit today. I opened LiveTV and went to channel 2-3.
While it was playing, I righted clicked on Inpect Element to bring up the window console.
From the lefthand panel, I copy-pasted all the text for “video id” into a text file. (video-id text was already hightlighted for some reason.). From that text I was able to extract what looked like an URL relataed to the IP address of my Tablo. I entered that URL into VLC and it played perfectly.
Then I waited until 12noon when the channel’s program ended to make sure that I had a streaming channel URL not a program URL. The URL continued to stream.
I then closed out VLC and reopened it. I rentered the URL and it still streamed that station.

Ok, rudimentary. Watched a channel via browser with the inspector/developer tools watching the network traffic - copied the playlist URL, pasted it into smplayer. yup, seemed to play the channel. Of course, this is just somewhat proof of concept I think. There’s is no methodology to control anything… and I find it pointless since I can just press the TV button on the remote (or turn on the other TV), but that’s just me.

My interest is being able to start and stop, queue up time and do slow replays of what I just saw. I like to look at many different aspects of a show’s productoin besides the storyline. So I like to pause, rewind, advance frames etc. Plus I get interupted a lot.

This functionalily was build into the Motorola cable DVRs and I found in very useful. Our old DVR would actually record a useful length of the channel I was watching, PLUS record my prevous channel if there was no other recording scheduled. I could pause one channel and go to the other when ads came on, etc. I as hoping that I could extract that functionality from at least one channel by watching Tablo LiveTV through VLC or another viewer.

Two issues have jumped out at me playing around with Tablo LiveTV on VLC. First, VLC loses programming and the URL needs to be restarted often, mostly very near the 4min, 30 sec mark of playing. Second, the VLC transport controls are inoperative during play. It can’t be paused, rewound, etc. So there would to be some type of buffering to be useful for me.

Not sure how long it’s been, but I have a live stream. Dug in a bit deeper.
Doesn’t seem to go back too far.
I suspect the web app (or steaming device/app) communicates that it’s viewing the channel to keep it recording/streaming. Obviously media players don’t have this function.
Use the name of your own tablo on your network or it’s IP – channels are drilled down here - http://tablo1.lan:8885/guide/channels best I can do is start a stream via browser (then close it) and find playlist using channel number in “the list” via http://tablo1.lan:18080/pvr/

I believe VLC to be a cabable media player, my personal choice is smplayer (multi-platform) I’ve had a steam play over 12minutes before having to move on.

At this stage, it’s R&D as there’s little function and there’s little to no user function. But if you get bored, who knows where you’ll end up. I hope I didn’t divulge too much, I’ve already had one unlisted topic this week :frowning_face:

Just wondering… it does work, not-as-intended. I edited APLTablo.db to change the tablo IP to it’s FQDN (that may be extreme for a LAN) but 192.168.0.11 becomes tablo1.lan as configured via my router.

APL Tablo seems to work no-problem. So I figured I’d try changing the other tablo via the settings. Wait, I can either set discovery during startup or… not find them at all? (I suppose it’s on by default on first run). There’s no opting to edit the server tab, just for info, ok.

But with all the power an flexibility this application has, this seems an odd place to protect us from ourselves. Just say’n.

Less protecting you from yourself than lack of building in the UI to allow you to change things…I would prefer an in-table edit, but don’t know how to do that with this UI…I’ll eventually figure out how to get it done and allow adding/removing/editing…but for the moment because you have discovery and the ability to disable/enable…I figured that was enough for the time being :slight_smile:

1 Like

Considering the unpleasantness of GUI programing, yes - again…

big thanks for all the work!!

1 Like

I didn’t mean to hijack the APL Tablo Client thread with a discussion about LiveTV viewing controls. I will try to start a new topic about that when I get time.

Also the regular Tablo viewer provides at least some level of LiveTV buffering that VLC doesn’t. If the Tablo viewer had or could provide more finely tuned transport functions, it would servie my needs.

I completely agree with the hijack comment… just a final note. A some limited function you’re looking for - web app via Firefox. It has adjustments for playback speed. -.5x, +1.25x, +1.5x, +2x (you’ll need to pause to get + to play to the point of “now”)

future comments/replies should start a new topic if you want to continue or see if others have any input.

I’m getting some kind of SQLITE Error when trying to run the jar

>java -jar APLTablo.jar
2020-01-31 23:36:36,118 [INFO ] APL Tablo .20
2020-01-31 23:36:36,118 [INFO ] Logging set at INFO
2020-01-31 23:36:36,119 [INFO ] Starting Processing
2020-01-31 23:36:37,955 [ERROR] SQLException Inserting Data: [SQLITE_ERROR] SQL error or missing database (near ")": syntax error)
2020-01-31 23:36:37,956 [INFO ] Attempted SQL: CREATE TABLE Server (SID VARCHAR(30) NOT NULL,ACTIVE VARCHAR(10) NULL,INTERNALIP VARCHAR(20) NULL,INSERTED VARCHAR(50) NULL,MODIFIED VARCHAR(50) NULL,LASTSEEN VARCHAR(50) NULL,VERSION VARCHAR(50) NULL,NAME VARCHAR(500) NULL,)
2020-01-31 23:36:38,026 [INFO ] Retrieving list of Tablos from https://api.tablotv.com/assocserver/getipinfo/
2020-01-31 23:36:38,398 [ERROR] SELECT ACTIVE from Server where sid = 'SID_XXXXXXXXXXXXX'
2020-01-31 23:36:38,398 [ERROR] SQLException Getting Blacklist Data: [SQLITE_ERROR] SQL error or missing database (no such table: Server)
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.NullPointerException
at com.apl.Functions.getServer(Functions.java:768)
at com.apl.MainApp.discover(MainApp.java:146)
at com.apl.MainApp.processTablos(MainApp.java:74)
at com.apl.MainApp.main(MainApp.java:56)
... 5 more             

I’m running Windows 10 Home 1903, and my Java is:

>java -version 
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.222-b10, mixed mode)

The “answer” for debugging is usually closer to the end of all the info 5 more. If you have successfully ran it before? I’m kind of thinking it’s looking for a tablo to be active - you can mark them inactive from the settings dialog. I’ve marked both mine inactive and had no issue.
Its having trouble populating the list of tablo[s] you have. Well, then it’s having trouble find the DB all together.

Some things to look for, file APLTablo.db where you installed/unzipped APL Tablo. It’s not part of the zip, it’s created. I suspect you’ve tried a second run? with similar results? If the file does exists delete it and see if a fresh version can be successfully created.

Even with the error, did any window open? Not all message are fatal - warning, error, or info.
Consider a current version of Java. Although it receives (security) updates

[https://jcp.org/en/jsr/detail?id=337]
Java SE 8 Released March 2014



Recently I shamefully got a refurbished Win 10 PC. I was going to install APL Tablo and see what happens…

Version 8 is nearing it’s end of support cycle. Looking forward Java SE 11 is it’s LTS (long term support). As previously discussed JDK vs JRE … there is no longer a JRE especially for the Windows platform?!

End users aren’t developers… don’t need/shouldn’t need to install an entire developer environment (ending rant) I searched some… Oracle wants developers to pay and ultimately package a self-contained binary. Takes some digging to find out where JRE went, it’s understandable Windows users don’t even know :poop:.

Super digging finds a Reference Implementation for Java SE 11 from the open JDK for Windows :sigh:

I have uploaded v.22 that fixes this problem…it was a problem in creating the server table…sorry about that

Thanks, that fixed that issue.

Then it turned out I was running OpenJDK 8 and instead needed to install OpenJDK 11. The program finally started and seems to work. Really would help if you made a setup guide at least, since I’m decently tech literate and even I was confused how to get things working properly due to not using Java much these days.

PS: Can you add some kind of loading symbol or progress bar when operations are being done? It’s a bit disconcerting when the program hangs like it’s frozen when it’s just doing stuff.

1 Like

Have noticed… about a dozen versions or so ago. The minimal provided in the zip is vague and “proprietary” to your system… without noting things need changes. Well, it had no impact on me, and no one else had issue.

When I read another user, I realized it’s been so long since I set it up… I don’t know what I did. It’s so nicely configured (sadly) just clickety on the desktop yet. I reviewed the topic and have “things” – if it’d help others I’ll piece together what it takes to get it running on a Linux system, specially a Debian based. (Although, if they’re running Linux system, they my already know more than me)

Just wondering… version .19 .20 .22b1 .22 There’s just no lucky .21 ? OCD flare-up, earlier naming conventions included .14-1 .14-2 .14

1 Like

In prep for running .22 I was going to clear my log file… turns out it’s distributed with a default error’d log…

2020-01-28 14:34:31,628 [INFO ] APL Tablo .22
2020-01-28 14:34:31,629 [INFO ] Logging set at INFO
2020-01-28 14:34:31,629 [INFO ] Starting Processing
2020-01-28 14:34:31,793 [INFO ] Initalizing DB
2020-01-28 14:34:32,228 [ERROR] SQLException Inserting Data: [SQLITE_ERROR] SQL error or missing database (near ")": syntax error)
2020-01-28 14:34:32,228 [INFO ] Attempted SQL: CREATE TABLE Server (SID VARCHAR(30) NOT NULL,ACTIVE VARCHAR(10) NULL,INTERNALIP VARCHAR(20) NULL,INSERTED VARCHAR(50) NULL,MODIFIED VARCHAR(50) NULL,LASTSEEN VARCHAR(50) NULL,VERSION VARCHAR(50) NULL,NAME VARCHAR(500) NULL,)
2020-01-28 14:34:33,872 [INFO ] Retrieving list of Tablos from https://api.tablotv.com/assocserver/getipinfo/
2020-01-28 14:34:38,061 [ERROR] SELECT ACTIVE from Server where sid = 'SID_5087B800C16B'
2020-01-28 14:34:38,062 [ERROR] SQLException Getting Blacklist Data: [SQLITE_ERROR] SQL error or missing database (no such table: Server)

I guess it’s “for example” ? :slight_smile: