Project

General

Profile

DaddyLive, PlutoTV, XUMO, M3U/XMLTV, SamsungTV, Plex, TVGuide interfaces (appliance)

Added by G Kazaroth over 2 years ago

Cabernet for (Cable Network) version 0.9.12 (4/13/2023)
TVGuide, DaddyLive, PlutoTV, XUMO, M3U/XMLTV, SamsungTV, Plex

Provides a configurable interface from providers to TVHeadend.

  • Direct streaming plugins for DaddyLive, PlutoTV, XUMO
  • EPG supplemented using TVGuide.com data
  • M3U Plugin provides channels for: SamsungTVPlus, Plex, PBS, Stirr, and others
  • From: https://i.mjh.nz/
  • Import your own M3U file

https://github.com/cabernetwork/cabernet/releases
Purpose is to get a service that will take the DaddyLive, PlutoTV or XUMO server stream, clean it and feed it into TVHeadend and other DVRs (Also tested on Emby, JellyFin and Plex). Also it runs on Linux, Windows as a service and Docker. Windows has a installer. Once installed, setup is easy with TVHeadend. Also includes a TVGuide.com plugin to obtain TVGuide data.

1) Setup the automatic IPTV network (recommend new URL is http://[host]:6077/PlutoTV/channels.m3u)

Make sure to set the "Maximum # input streams". PlutoTV is set to a max of 4 and tvheadend uses 2 per tuner during initial screening. Doing a force scan will create the mux and service values. Also, turn View level to Advanced and set the Re-fetch period (mins) to a very large number. TVheadend has a tenancy to cause issues when channels change (Changed Services will not be mapped to channels). The Maximum Timeout is used to wait for a reply during a Forced scan. Recommend keep this low, like 15-20 seconds. Some of the channels may fail, but it is faster than having a high setting and waiting for all channels to scan. Just individually rescan those that failed by setting each mux back to PEND from IDLE.
2) Next you can setup the grabber. I use a URL grabber written in Unix bash and is an extremely small file. It can be found in the github repo at
https://github.com/cabernetwork/cabernet/tree/master/lib/tvheadend/service/Unix called tv_grab_url
Place the grabber file in the same location as the other TVHeadend tv_grab* files, change the permissions to executable and restart TVHeadend. This should allow TVHeadend to pickup the new grabber. While in the grabber list, make sure and disable any OTA grabbers. Stations no longer send this information and will only cause TVHeadend to use a tuner for scanning. Displaying the log window by clicking the three ^ in the bottom right is helpful at this time.

Have the grabber run and populate the EPG data into the EPG Grabber Channels tab. The log should show a quantity of channels were detected.
Pop over to the EPG Grabber tab and disable the OTA grabber cron. Also, update/replace the Internal grabber cron schedule using something like below. The example will pull the TV guide at 6:04am and 5:52pm. Add more if you need. It is recommended to use static cron times.

4 6 * * *
52 17 * * *

3) In the Channel view, select Map all channels.

This will tie the services, EPG and channels together, automatically. After this, re-grab the EPG data. This will populate the EPG tab with shows. For TVH version 4.3, the Number column will auto-populate. For TVH 4.2, you will need to manually add channel numbers.
4) Display the TVGUIDE. This appliance has special features which maps the tvheadend genre, giving colors on tvguides. It also has enhanced guide descriptions and optional additional channel notations if you use many streams. Below is the Kodi tvguide using the pvr.hts plugin.

For Kodi, go to the settings for PVR and turn on the General setting "Use channel numbers from backend".


Replies (883)

RE: Locast and PlutoTV interface (appliance) - Added by G Kazaroth over 1 year ago

I also saw a few quirks in Kodi. The 2 minute default time hole between programs shows up as a "..." in Kodi guide, if the program ended at the top of the hour. If it ended at a strange time, the "..." was not there. Also noticed a few channels this morning (like Star Trek) were "No information available". I checked TVH and it was populated with data, so my nose says there may be a special character that is present in the EPG, but have not tracked it down. It may also be related to your Kodi recording permission issue. So when you have the error, make sure to document as much of the info as possible on the program event. I have been recording multiple channels at once, most of the day, with no issue.

The update to the channels.db was to add a column called 'atsc' to hold the ATS msg for each channel. As of 0.9.2.1, it will check to see if the upgrade occurred each time you do a restart from the scheduler. So, you could check by moving the old channels.db file into place and doing a "Restart" from the scheduler. If it does not update, then it will throw an exception when you try to play a channel.

I will take a look at the config.ini file issue you found. I have mine in the data directory and that worked, so you must have it in the top level. (fixed in latest version)

The forced scan causes the ATSC column in the columns.db to populate. If you don't do this, it will happen when you change to that channel UNLESS it is on commercial. If that occurs, then TVH will timeout and not play the channel. With the ATSC column populated for the channel, then TVH will be happy to wait for the channel to start.

Going forward and back is not working on those channels that do a skip time during a commercial break. Most of the live channels and normal channels (like NEWS and DABL) do that. Most of the recorded programs do not. (Most of the recordings today across many channels had no issues) Yes, I am working on the skip issue next. I have recorded Star Trek successfully with skipping working. To make this work for now, you need to record within the program window so none of the recording is before or after the program.

Explanation of why you must record within the time window: Many of the programs are pre-recorded and played like the old video on demand where it is on a scheduled channel. Each program has its own PTS timestamps so one may play as if its at 3:00am while the next show will play as if it 4:00pm. Due to the varying timestamps (that my next fix may resolve) it is current not good to record past the end of a show or start early. I have a separate recording profile I use for plutotv that has the padding set to zero.

XUMO is not ready for prime time. I have it disabled (although you can enable it in the conf area). The channels list and the EPG are to some degree working. With PlutoTV being such a mess, I have put it on hold until I get PlutoTV working well. Recommend leaving it disabled for now. XUMO provides a 24 hour EPG that starts at midnight UTC.

Research on PTS/DTS shows I will need to update the PES ids E0 and C0 [from ISO/IEC 13818-1 Table 2-22]. They contain the following attributes: (pts, pts_time, dts, dts_time, pos) All of these will need to be updated to correct the video and audio stream without impacting the video itself.

RE: Locast and PlutoTV interface (appliance) - Added by Sean Micklem over 1 year ago

I did the forced scan, so that should be good. I also let it update to the new version and once again it did not copy in my config.ini, but I have a suspicion that I know why. When Locast went away and you released the new version with Pluto support, I created a new directory called cabernet (rather than locast). So if you have the path hardcoded to include the word "locast", that's why it's not putting it back. Specifically, my path to config.ini is ~/cabernet/config.ini. If I look in the Paths tab it shows all the paths correctly, including the root path, so if that's not the issue then I am not sure why it's not being restored. The only other thing I remember changing to cabernet is the name of the service (so to restart the program I use "sudo systemctl restart cabernet.service"). I can change those back if they are a problem but I just thought it made more sense to use the actual program name rather than the name of a service that has shut down (I hope not forever, but still, for the time being it's not relevant to what your program is being used for).

After copying over the config.ini everything appears to be working as it should, although I just installed the new version so haven't had time to do any extensive testing.

I will just point out that having a separate recording profile only works if you are scheduling a recording using Tvheadend's web interface. If you schedule a recording from Kodi's guide then it always uses the default profile, and as far as I can tell there is no way to change that. I have one user in particular that can schedule programs using Kodi's guide, but who probably has no idea the Tvheadend web interface even exists, and at her age that's not something I really want to have to try to explain to her. But I understand that's a Kodi issue or maybe a Tvheadend issue, not something you can do anything about. Kodi and Tvheadend working together reminds me of the old saying about the dancing bear (you don't critique how well the bear dances; instead you marvel that the bear dances at all!).

Thanks again for all the hard work you have put into this!

RE: Locast and PlutoTV interface (appliance) - Added by G Kazaroth over 1 year ago

The config.ini is suppose to not be touched as part of the upgrade. There is no hardcoding. It takes the config.ini location from the paths config tab. There is a chicken and egg thing that goes on with upgrades. Any change I make associated with upgrades does not get implemented until after the upgrade... I made the changes, but the upgrade will run against the older version. I can add patch changes that will run after the install, like restoring the config.ini, just forgot to do that. Probably why you saw it delete, again. Should be good on the next upgrade.

I have not changed my services, so mine still say locast, but that should not cause any issue. Just make sure it is pointing to the correct script.

Yep, I have no current work around for the 2 recording profiles. Only other thought is to use a profile with 0 padding and every time I record a non-plutotv channel to update the padding. Since my wife currently does not use the plutotv, my thought is to make it nice and default for her and give me the pain. That was the reason for the 2 profiles. The limitation is with pvr.hts.

RE: Locast and PlutoTV interface (appliance) - Added by Sean Micklem over 1 year ago

Right, I had forgotten that it would take one upgrade to apply the fix. Anyway, I tried recording a couple of things last night and started to watch one of them and it was playing perfectly, not a single glitch that I could see, UNTIL my internet connection went out (and stayed out for about four hours, as best I can tell). But the part that I had recorded (a bit over an hour in real time) looked perfect!

RE: Locast and PlutoTV interface (appliance) - Added by G Kazaroth over 1 year ago

you know... my internet also went out yesterday...

Oh, I thought of a good work around for the profiles in TVH. Under PlutoTV Instance > EPG, there is a config for "Time Adjustments". It is set to 60 and -60, but if you change it to your settings plus one minute, that would work! EX: lets say you have the profile set to 0 padding to start and +3 minutes padding to end. Then you could set the adjustment to Start: 60 and End: -240. This would cause the recording to start 1 min late and end 1 min early.

RE: Locast and PlutoTV interface (appliance) - Added by G Kazaroth over 1 year ago

How does PTS Filtering work? It determines the PTS of the main show being recorded and anything out of scope (too large or too small) is removed. On normal stations, the PTS continues to grow all day and resets at midnight. So, recording a show early is not an issue since the PTS just keeps going as if all shows are tied together. HOWEVER, these streaming services do things differently. The PTS changes for each show, in many cases. (DABL may not be that way since it is an actual station). The PTS Filter still needs to understand what PTS is for the real show. If you start the show early, then the PTS will think the previous show is the real PTS and when the new show starts, it will think the show should be removed. To keep this from happening, it will be important not to start recording until after the show starts.

Nice part about PTS Filtering, is that, it would remove the problem at the end of the show when the next show starts. It would see the change in PTS and remove the stream from the recording. This should make the end of the program clean.

So, to sum up... PTS Filtering only works when it can determine the PTS for the real show at the start. Using PTS Filtering can be a good way to remove the problem issues at the end of the show, when the PTS changes.

What are the config parameters? PTS Minimum is used to detect most commercials. (Although the URL Filter can do this too.) A value of 5,000,000 is about 54 seconds from midnight. A value of 50,000,000 is about 538 seconds or almost 9 minutes. To calculate the PTS from midnight in seconds, just divide it by 93,000. Many commercials start at or near a PTS of 0, so a value of 5 to 50 million will remove most commercials, but leave the show untouched since shows rarely start at zero PTS. The PTS Max Delta is used to remove non-zero PTS commercials and the next show, if it is not on the same PTS stream. Streams are mostly in 6 second increments. If the PTS changes significantly between increments (like 10 minutes), then it is not part of the normal stream and is deleted. Again the value can be translated into seconds by dividing by 93,000. Normal deltas are anywhere from 0PTS to 10000PTS, which are much less than a second.

RE: Locast and PlutoTV interface (appliance) - Added by Robert Coupee over 1 year ago

Hi

Could someone confirm if I can use this docker image to only add PlutoTV stations to tvheadend (or Jellyfin)?

Also would it be possible to limit the channels to only the ones I am interested in. Currently use this project, https://github.com/evoactivity/PlutoIPTV, to generate a playlist and epg for the PlutoTV channels I want, but there are issues with ad breaks that it looks like your solution will resolve.

Thanks in advance.

RE: Locast and PlutoTV interface (appliance) - Added by Sean Micklem over 1 year ago

G Kazaroth wrote:

How does PTS Filtering work? It determines the PTS of the main show being recorded and anything out of scope (too large or too small) is removed. On normal stations, the PTS continues to grow all day and resets at midnight. So, recording a show early is not an issue since the PTS just keeps going as if all shows are tied together. HOWEVER, these streaming services do things differently. The PTS changes for each show, in many cases. (DABL may not be that way since it is an actual station). The PTS Filter still needs to understand what PTS is for the real show. If you start the show early, then the PTS will think the previous show is the real PTS and when the new show starts, it will think the show should be removed. To keep this from happening, it will be important not to start recording until after the show starts.

To be honest I did not understand much of your technical explanation in this post, but I had PTS Filtering enabled once and somehow it got turned off (I probably unchecked the box for some reason but don;t remember doing it), anyway that would explain why I could not seek within anything I recorded last night. I have turned it back on now so will see what happens next time I try to record something.

But here is the thing, although I am getting very close to the beginning of the programs, it's still cutting a little off. Normally, in my default recording profile, I start recording 1 minute early and end 3 minutes late, this is to accommodate (over-the-air) shows that may jump the gun a little on the starting time, or may drag out a little late. Since your program wants to start a minute late, the two nearly cancel each other out, and the recording starts just seconds after the show starts. Which is fine in most cases, but there is something about it that makes me think that there ought to be a way to ignore and/or rewrite the PTS. I suspect this is what ffmpeg does if you use it on a show that has been previously been recorded. But it also does something else that causes visible glitches in the show itself.

I used ffmpeg to make the things I recorded last night seekable, and it worked, but threw several other errors. Examples were:

PES packet size mismatch
AAC bitstream not in ADTS format and extradata missing
Packet corrupt
Non-monotonous DTS in output stream (these were the most common)

There weren't a lot of these; they only filled about one screen on my display. And I suspect they occurred mainly at the transitions to/from commercial breaks.

I don't understand much about video, especially the technical aspects, but I just wonder if it is somehow possible to just throw away the timestamps that are in the streams and just apply new ones to the video in the order the segments are received. In other words, say we don't care what the PTS is in any part of the stream, we just take the first segment we receive and renumber it to 1, the next one to 2, and so on (or start with a higher number if necessary, maybe one corresponding to the current time although maybe that would be an issue if the program starts before midnight and then goes past it?). I do not know if that's what ffmpeg does, and I don't know how difficult it would be to do that, but if it could be done I'd think it would solve several of these problems, maybe.

RE: Locast and PlutoTV interface (appliance) - Added by Sean Micklem over 1 year ago

Robert Coupee wrote:

Hi

Could someone confirm if I can use this docker image to only add PlutoTV stations to tvheadend (or Jellyfin)?

Yes you can.

Also would it be possible to limit the channels to only the ones I am interested in. Currently use this project, https://github.com/evoactivity/PlutoIPTV, to generate a playlist and epg for the PlutoTV channels I want, but there are issues with ad breaks that it looks like your solution will resolve.

There is a channel editor in the Cabernet web-based interface, and you simply uncheck the channels you don't want and click the save button.

(I should mention that I do not use Docker, but don't think there's any difference in the way that one operates).

RE: Locast and PlutoTV interface (appliance) - Added by G Kazaroth over 1 year ago

We have a number of people that use docker. I do use it every so often just to test it and make sure nothing changed. People use Cabernet with TVHeadend, JellyFin, Emby and Plex. Could be more that is compatible, but I do know those work. I see Sean answered the rest of your questions.

I have a few updates I am tracking. The first is almost ready.
1) Looks like plutotv periodically takes too long to provide the video stream section. The result is a missing 6 second section. I am moving the "get_video" to a separate process, so it can get the streams as fast as possible. This also has a feature where each active channel is a separate process. Basically, you should be able to run as many tuners as Plutotv will allow. Cabernet will just keep running. This is in final testing and should be out today.
2) I am seeing problems with the EPG. Not sure what it is, but in the morning the EPG is very short with "No Information Available" across some channels. I will have to take a look and see what the issue is.

RE: Locast and PlutoTV interface (appliance) - Added by G Kazaroth over 1 year ago

New version has been posted. This should clear up the times when plutotv is not responding quickly, so missing 6 second sections of the video should no longer happen.

RE: Locast and PlutoTV interface (appliance) - Added by Sean Micklem over 1 year ago

G Kazaroth wrote:

New version has been posted. This should clear up the times when plutotv is not responding quickly, so missing 6 second sections of the video should no longer happen.

Unfortunately now it appears anything I record won't play - when I attempt to play it in Kodi, it either immediately returns to the recordings list, or a spinner come up and spins for a while and then returns to the recordings list. Reverting back to 0.9.2.3 allows recordings made with that version to be played.

RE: Locast and PlutoTV interface (appliance) - Added by G Kazaroth over 1 year ago

I check my recording of Ghost; it had an issue as well. A number of video sections were double transmitted. My software is more efficient which can have good and bad. It looks like PlutoTV added a section to transmit, Cabernet did that, then it removed it from its queue, so Cabernet did that. Then the error came when PlutoTV added it back onto the queue (not sure why). For now I have a band-aid to detect and not transmit the duplicate. Need to do more research as to why PlutoTV is doing this.

Also, found the EPG issue including the date aired. Still need to do rigorous testing. Will work on it after church.

RE: Locast and PlutoTV interface (appliance) - Added by G Kazaroth over 1 year ago

Found out the retransmit of the video section has little to do with timing. Recording this morning showed section 1172 came in before the ads started. After the ads finished (about 3 min later...) Section 1172 was again added to the queue by PlutoTV. This means it is a PlutoTV bug and Cabernet needs to take care of the dups. Patch has been applied and version 0.9.2.6 has those changes. Watching some recording now. This morning 2 hours worked without issue.

RE: Locast and PlutoTV interface (appliance) - Added by Robert Coupee over 1 year ago

Hi

So I am trying to get this working for PlutoTV streams. I am running it on a Raspberry Pi with Ubuntu Server 20.04 32 installed. As the docker image is not compatible with the Pi Architecture I am currently running it manually using the command line: python3 tvh_main.py. This runs and I can access the cabernet website. However the "Refresh PlutoTV Channels" Scheduled Task is constantly running and the following is seen on the command line:

2021-09-12 18:58:46,610-ERROR:decorators JSONError in function get_token(): Expecting value: line 1 column 1 (char 0)
2021-09-12 18:58:46,610-ERROR:authenticate Invalid Locast Login Credentials. Disabling instance
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python3.8/threading.py", line 932, in _bootstrap_inner
self.run()
File "/home/ubuntu/cabernet/lib/schedule/scheduler.py", line 95, in run
self.exec_trigger(trigger)
File "/home/ubuntu/cabernet/lib/schedule/scheduler.py", line 132, in exec_trigger
self.call_trigger(_trigger)
File "/home/ubuntu/cabernet/lib/schedule/scheduler.py", line 152, in call_trigger
call_f()
File "/home/ubuntu/cabernet/lib/plugins/plugin_obj.py", line 106, in refresh_channels
self.refresh_it('Channels', _instance)
File "/home/ubuntu/cabernet/lib/plugins/plugin_obj.py", line 128, in refresh_it
instance.refresh_channels()
File "/home/ubuntu/cabernet/lib/plugins/plugin_instance_obj.py", line 38, in refresh_channels
self.channels.refresh_channels()
File "/home/ubuntu/cabernet/lib/plugins/plugin_channels.py", line 49, in refresh_channels
self.db.save_channel_list(self.plugin_obj.name, self.instance_key, ch_dict, \
File "/home/ubuntu/cabernet/lib/db/db_channels.py", line 172, in save_channel_list
self.add(DB_CHANNELS_TABLE, (
File "/home/ubuntu/cabernet/lib/db/db.py", line 72, in add
cur = self.sql_exec(sqlcmd, _values)
File "/home/ubuntu/cabernet/lib/db/db.py", line 60, in sql_exec
return DB.conn[self.db_name][threading.get_ident()].execute(_sqlcmd, _bindings)
sqlite3.InterfaceError: Error binding parameter 7 - probably unsupported type.

I observed the same behaviour when running on the latest install of Raspberry Pi OS.

Any ideas?

Thanks in advance.

RE: Locast and PlutoTV interface (appliance) - Added by G Kazaroth over 1 year ago

It is probably your config.ini. Since locast is no more, you should have nothing in the config.ini that has anything to do with locast. The way the product works right now is if you want to enable a plugin, you add

[pluginname_instancename]
label = any name you want. it will appear in the config page

So as an example, you can add PlutoTV by adding the following to the config.ini file.

[plutotv_default]
label = PlutoTV Instance

I you still have an issue when you clean up the config.ini, then try to delete the database files in the ./data/db/ folder and see if that works.

Interesting that you were able to cause an exception. I will take a look and see if I can have it update gracefully.

FYI... The latest version is having issues with the tuner subprocesses when you do a Restart from the scheduler. I am working the issue; otherwise, it works fine. If you get a "OSError: [Errno 98] Address already in use", then you have a python process still running.

RE: Locast and PlutoTV interface (appliance) - Added by G Kazaroth over 1 year ago

Robert, you may shed some light on PlutoIPTV. Based on some of the issues, it looks like it somehow grabs 24 or 48 hours of epg from PlutoTV. Every time I do a request (even manually) I do not get more than 12 hours of programming. If it is possible, I would like to make sure we provide it, but I am not sure it can.

RE: Locast and PlutoTV interface (appliance) - Added by G Kazaroth over 1 year ago

ok, I'm done with the fixes. Back to working the PTS/DTS updates.

RE: Locast and PlutoTV interface (appliance) - Added by Robert Coupee over 1 year ago

G Kazaroth wrote:

Robert, you may shed some light on PlutoIPTV. Based on some of the issues, it looks like it somehow grabs 24 or 48 hours of epg from PlutoTV. Every time I do a request (even manually) I do not get more than 12 hours of programming. If it is possible, I would like to make sure we provide it, but I am not sure it can.

I believe PlutoTV only provide 12 hours worth of EPG, but they refresh it every 6/7 hours. So I guess your PlutoTV plugin should by default refresh every 6 hours?

RE: Locast and PlutoTV interface (appliance) - Added by Robert Coupee over 1 year ago

G Kazaroth wrote:

It is probably your config.ini. Since locast is no more, you should have nothing in the config.ini that has anything to do with locast. The way the product works right now is if you want to enable a plugin, you add

[pluginname_instancename]
label = any name you want. it will appear in the config page

So as an example, you can add PlutoTV by adding the following to the config.ini file.

[plutotv_default]
label = PlutoTV Instance

I you still have an issue when you clean up the config.ini, then try to delete the database files in the ./data/db/ folder and see if that works.

Interesting that you were able to cause an exception. I will take a look and see if I can have it update gracefully.

FYI... The latest version is having issues with the tuner subprocesses when you do a Restart from the scheduler. I am working the issue; otherwise, it works fine. If you get a "OSError: [Errno 98] Address already in use", then you have a python process still running.

Thanks for the advice. Did a git fetch and pull and got your latest update. However the error still occurred. It went away if I unticked the "Import channel groups" option under the "PlutoTV" Tab.

The "Refresh PlutoTV Channels" job runs and a channels.m3u file is generated. However the "Channel Editor" -> "PlutoTV" Tab states "NO CHANNEL DATA FOUND" and the following error is seen:

Exception happened during processing of request from ('192.168.1.102', 54506)
Traceback (most recent call last):
File "/usr/lib/python3.8/socketserver.py", line 316, in handle_request_noblock
self.process_request(request, client_address)
File "/usr/lib/python3.8/socketserver.py", line 347, in process_request
self.finish_request(request, client_address)
File "/usr/lib/python3.8/socketserver.py", line 360, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/home/ubuntu/cabernet/lib/clients/web_admin.py", line 200, in init
super(CustomWebAdminHttpHandler, self).
_init__(*args, **kwargs)
File "/home/ubuntu/cabernet/lib/clients/web_admin.py", line 78, in init
super().__init__(*args)
File "/usr/lib/python3.8/socketserver.py", line 747, in init
self.handle()
File "/usr/lib/python3.8/http/server.py", line 427, in handle
self.handle_one_request()
File "/usr/lib/python3.8/http/server.py", line 415, in handle_one_request
method()
File "/home/ubuntu/cabernet/lib/clients/web_admin.py", line 93, in do_GET
if getrequest.call_url(self, self.content_path):
File "/home/ubuntu/cabernet/lib/common/decorators.py", line 178, in call_url
self.url2func[_name](_webserver, *args, **kwargs)
File "/home/ubuntu/cabernet/lib/clients/channels/channels_form_html.py", line 36, in get_channels_form_html
form = channels_form.get(name, _sort_col, _sort_dir, filter_dict)
File "/home/ubuntu/cabernet/lib/clients/channels/channels_form_html.py", line 79, in get
return ''.join([self.header,self.body])
File "/home/ubuntu/cabernet/lib/clients/channels/channels_form_html.py", line 384, in body
self.form,
File "/home/ubuntu/cabernet/lib/clients/channels/channels_form_html.py", line 272, in form
t = self.table
File "/home/ubuntu/cabernet/lib/clients/channels/channels_form_html.py", line 331, in table
row = ''.join([
TypeError: sequence item 41: expected str instance, list found
---------------------------------------

Any ideas?

BTW: Thanks for all of your work on this tool!

RE: Locast and PlutoTV interface (appliance) - Added by G Kazaroth over 1 year ago

You must be a tester since you find the strangest exceptions. I will fix this one so it does not crash and allows you to fix the Group problem in the editor. "sequence item 41" is cryptic for the Group column. It says you entered a list of values and not a single word in one of the group fields. This caused the exception to occur. If you mouse over the title columns, it has a tool tip. On group it states a single word is required. If you did not enter a value into the group field, let me know. That would mean you have a different list from PlutoTV than I do and we will need to somehow understand how you got a different channel list. Cabernet has a group lookup that translates all the bad group names that Kodi throws up on to simple names. If you have a different list, it is possible other PlutoTV groups appeared that cabernet did not expect.

You will probably need to do a clean channel to fix the problem. There are two ways (both do the same thing). One is to remove the ./data/db/channels.db file and restart the service. The other is to go into the "Data Management" section, Reset Channel Data
- Reset Edits = Yes
- Plugin = PlutoTV
- Click Reset
then go to Scheduler and click on Refresh PlutoTV Channels
The second method does not require a app restart.

RE: Locast and PlutoTV interface (appliance) - Added by Robert Coupee over 1 year ago

I have been around testers long enough that some of their "skill" must have rubbed off!

I think I must have a different channel list: I am based in the UK and PlutoTV has some UK Specific programming.

I have attached the channels.m3u output.

Thanks.

RE: Locast and PlutoTV interface (appliance) - Added by G Kazaroth over 1 year ago

Thanks for the m3u file. It does look like you have a different channel list. I would need to see it with the groups list enabled. The one you sent basically has no groups from PlutoTV. I also noticed that some of the channel names have (+ . '). If you have any issues, we can setup something to filter out special characters from channel names.

Last thing is the channel numbers. There are seem to be a bunch of channel "0" channels. They do all have unique ids, but you may think about giving them unique channel numbers. It is not required.

Couple of notes. If you change the logging from the default WARNING to INFO, you will see the messages about missing groups in the log when the channels are imported from PlutoTV. Currently the Cabernet PlutoTV group converter list is:

    'Classic TV':     groups['CLASSICS'],
    'Comedy':         groups['COMEDY'],
    'Crime':          groups['MYSTERY'],
    'En Español':     groups['SPANISH'],
    'Entertainment':  groups['ENTERTAINMENT'],
    'Explore':        groups['DOCUMENTARIES'],
    'Gaming + Anime': groups['GAMING'],
    'Home + DIY':     groups['DIY'],
    'Kids':           groups['KIDS'],
    'Local':          groups['NEWS'],
    'Movies':         groups['MOVIES'],
    'Music':          groups['MUSIC'],
    'News + Opinion': groups['NEWS'],
    'Pluto TV':       groups['CLASSICS'],
    'Reality':        groups['REALITY'],
    'Sports':         groups['SPORTS'],
    'Vizio':          groups['MOVIES']

RE: Locast and PlutoTV interface (appliance) - Added by Robert Coupee over 1 year ago

Hi

So I do indeed see the following in the logs re: missing groups:

2021-09-13 19:41:42,123-INFO:web_handler [192.168.1.49] "GET /api/schedulehtml HTTP/1.1" 200 -
2021-09-13 19:41:42,143-INFO:web_handler [192.168.1.49] "GET /modules/scheduler/scheduler.css HTTP/1.1" 200 -
2021-09-13 19:41:42,146-INFO:web_handler [192.168.1.49] "GET /modules/scheduler/scheduler.js HTTP/1.1" 200 -
2021-09-13 19:41:42,227-INFO:channels Missing PlutoTV category translation for: Curiosity
2021-09-13 19:41:42,419-INFO:channels Missing PlutoTV category translation for: Curiosity
2021-09-13 19:41:42,812-INFO:channels Missing PlutoTV category translation for: Life + Style
2021-09-13 19:41:42,893-INFO:channels Missing PlutoTV category translation for: Curiosity
2021-09-13 19:41:42,978-INFO:channels Missing PlutoTV category translation for: Motor
2021-09-13 19:41:43,259-INFO:channels Missing PlutoTV category translation for: Life + Style
2021-09-13 19:41:43,349-INFO:channels Missing PlutoTV category translation for: Curiosity
2021-09-13 19:41:43,697-INFO:channels Missing PlutoTV category translation for: Curiosity
2021-09-13 19:41:43,887-INFO:channels Missing PlutoTV category translation for: Drama
2021-09-13 19:41:43,981-INFO:channels Missing PlutoTV category translation for: Curiosity
2021-09-13 19:41:44,311-INFO:channels Missing PlutoTV category translation for: Samsung
2021-09-13 19:41:44,478-INFO:channels Missing PlutoTV category translation for: Curiosity
2021-09-13 19:41:44,570-INFO:channels Missing PlutoTV category translation for: Curiosity
2021-09-13 19:41:44,788-INFO:channels Missing PlutoTV category translation for: Drama
2021-09-13 19:41:44,868-INFO:channels Missing PlutoTV category translation for: Life + Style
2021-09-13 19:41:45,304-INFO:channels Missing PlutoTV category translation for: Samsung
2021-09-13 19:41:45,560-INFO:channels Missing PlutoTV category translation for: Life + Style
2021-09-13 19:41:45,640-INFO:channels Missing PlutoTV category translation for: Motor
2021-09-13 19:41:45,811-INFO:channels Missing PlutoTV category translation for: Drama
2021-09-13 19:41:45,897-INFO:channels Missing PlutoTV category translation for: Drama
2021-09-13 19:41:46,371-INFO:channels Missing PlutoTV category translation for: Drama
2021-09-13 19:41:46,727-INFO:channels Missing PlutoTV category translation for: Life + Style
2021-09-13 19:41:46,808-INFO:channels Missing PlutoTV category translation for: Curiosity
2021-09-13 19:41:46,897-INFO:channels Missing PlutoTV category translation for: Curiosity
2021-09-13 19:41:47,118-INFO:channels Missing PlutoTV category translation for: Paranormal

Regards

Robert

RE: Locast and PlutoTV interface (appliance) - Added by Robert Coupee over 1 year ago

Also attached is the .m3u8 file from the mechanism I currently use to get my channel list. It does include "Groups".

(151-175/883)