OliveTin for Channels: An Interface for Misc Channels DVR Scripts & Tricks

@bnhf your post earlier about creating a channel collection for logos got me thinking...

Any chance you would want to tackle actually creating the collection from a set of criteria? The channels interface isn't great for this purpose, especially for large collections, and doesn't give you hints when channels disappear (either for a down source or removal from TVE, for example).

My use case: I keep a "useful channel list" that serves as my main collection. It's basically an alphabetized (which BTW could be it's own smaller addition to olivetin too) multi-source collection that serves as the main gateway to content. It is basically a list of networks with some OTA suplicates sprinkled in, to allow for switching sources when needed, quickly.

I don't even know is this is possible, but throwing out there...

I could be wrong, but I thought OliveTin had the ability to display Comskip INI settings and the ability to change them?

I have docker and portainer running according to Docker Desktop. I can access docker via the Windows command terminal but it is clearly not running bash yet. I think I read somewhere with the right connections(?) I could use the windows cmd terminal to access docker using bash. Suggestions welcome.

OK, so I need to set some environment variables and use docker-compose to pull in the Olive Tin yaml. I don't where to start this part. Which should I do first? What directory do I put the yaml in before running docker-compose? What is the scope of the envt variables, I assume it is at the container or image level, not sure.

If you can suggest some simple tutorials based on these questions I'll stop bothering you for a while, but all of the tutorials seem aimed towards multi-user deployment mindsets and I of course am only concerned about single-user stand-alone scenarios.

You're right -- I wrote it, but never pushed it to the :latest release. It's was a number of months ago, and I can't remember exactly why I held it back. It might be I just got distracted but some other shiny object. :slight_smile:

You up for doing a little testing if I push it to a :test release?

Yes can you also add the option to change/delete a setting ?

Managing and tweaking select comskip.ini settings - Playground / Hacks - Channels Community (getchannels.com)

That post shows what the script is capable of at this point. Thanks for linking that thread, as it reminds me that this post:

is the reason I held off publishing, as I wanted to see if the mentioned change to where overrides were placed happened. That -- and it was a couple of days before Christmas. :christmas_tree:

I'd be happy to push it as is, and you can see what you think. Otherwise, it'll be a bit before I can circle back to it to make any fundamental changes.

you can post as is as those are the settings most often changed.

These are the settings I use ...

"comskip.ini.always_keep_first_seconds": "60",
"comskip.ini.always_keep_last_seconds": "300",
"comskip.ini.min_commercialbreak": "45",

Make sure you the Windows Subsystem for Linux installed as well, with a distro (Ubuntu is the default, but I use Debian). Also, in the Docker Desktop interface verify that WSL Integration tick-box is checked in its settings.

As far as deploying containers, I'd strongly recommend using Portainer-Stacks, which has an editor where you can paste in docker-composes and environment variables. Once you've added those two pieces, you simply click the "Update the stack" button to deploy. No need to mess with the command line:

OK, it's pushed as bnhf/olivetin:test -- give it a test drive.

1 Like

Will do ... I do not see it ...


Please post the Portainer log for the second OliveTin container you have running. From boot-up to the first lines showing level="info" msg="UserFromContext" usergroup="" username=""

I might have screwed up when I created the test environment .. Tried to take a shortcut and duplicate the original

2024-02-26 09:05:17 Existing /config/adbtuner.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/adbtuner.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/ah4c.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/ah4c.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/cc4c.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/cc4c.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/config.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/eplustv.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/eplustv.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/frndlytv-for-channels.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/frndlytv-for-channels.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/organizr.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/organizr.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/plex-for-channels.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/plex-for-channels.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/pluto-for-channels.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/pluto-for-channels.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/pluto.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/pluto.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/samsung-tvplus-for-channels.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/samsung-tvplus-for-channels.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/stirr-for-channels.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/stirr-for-channels.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/tailscale.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/tailscale.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/tubi-for-channels.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/tubi-for-channels.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/vlc-bridge-fubo.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/vlc-bridge-fubo.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/vlc-bridge-pbs.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/vlc-bridge-pbs.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/vlc-bridge-uk.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/vlc-bridge-uk.yaml found, and will be preserved
2024-02-26 09:05:17 Existing /config/watchtower.env found, and will be preserved
2024-02-26 09:05:17 Existing /config/watchtower.yaml found, and will be preserved
2024-02-26 09:05:17 No existing /config/ccextractor.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/cdvr_movie_library_to_csv.py found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/cdvr_movie_library_to_csv.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/channels_dvr_monitor_channels.py found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/channels_dvr_monitor_channels.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/channels_to_csv.py found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/channels_to_csv.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/channels_to_csv_awk.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/comskipignore.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/comskipini.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/deletelogs.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/dockercompose.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/edlstrip.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/fix_thumbnails.rb found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/fix_thumbnails.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/foreground.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/generatem3u.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/ical_2_xmltv.py found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/ical_2_xmltv.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/listcomskipignore.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/llc2metadata.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/logfilter.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/manualrecordings.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/markforrerecord.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/marknocommercials.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/notifications.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/pingcdvr.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/playonedl.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/plexiptv.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/plextoken.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/removecomskipignore.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/restartshutdown.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/scanlocalcontent.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/setcomskipignore.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 No existing /config/stationid.sh found or UPDATE_SCRIPTS set to true
2024-02-26 09:05:17 ----------------------------------------
2024-02-26 09:05:17 Checking for .running files that don't match with currently defined DVRs...
2024-02-26 09:05:17 ls: cannot access '*.running': No such file or directory
2024-02-26 09:05:17 level="info" msg="OliveTin initializing" commit="86e5dfe" date="2023-03-24T23:32:48Z" version="2023.03.25"
2024-02-26 09:05:17 level="debug" msg="Value of -configdir flag" value="."
2024-02-26 09:05:17 level="info" msg="Setting log level to info"
2024-02-26 09:05:17 level="info" msg="Init complete"
2024-02-26 09:05:17 level="info" msg="OliveTin started" configDir="/config"
2024-02-26 09:05:17 level="info" msg="Starting REST API" address="localhost:1339"
2024-02-26 09:05:17 level="info" msg="Starting single HTTP frontend" address="0.0.0.0:1337"
2024-02-26 09:05:17 level="info" msg="Starting WebUI server" address="localhost:1340"
2024-02-26 09:05:17 level="info" msg="Found the webui directory" dir="/var/www/olivetin/"
2024-02-26 09:05:17 level="info" msg="Installation ID" content="74223a0b-464f-4d84-8c15-03a15920fe3f" from="/config/installation-id.txt"

Did you copy just some of the files to a new data directory?

The fact that your config.yaml didn't get updated, is the reason you're not seeing the new Action button. If it's a different data directory than your other OliveTin container, you should be able to set UPDATE_YAMLS and UPDATE_SCRIPTS to true and everything will get overwritten.

If you're trying to use the same data directory for both active containers you're asking for trouble.

Yeah I see my mistake now will just recreate the test environment. Will report back

It works thanks ... I will keep the test environment for future testing.

Current CDVR Comskip status:
{"available":true,"customized":false,"enabled":false,"ini":{"always_keep_first_seconds":"60","always_keep_last_seconds":"300"},"queued":0}

Settings as used in the most recent Comskip run. Assumes no override file in use:

Current compskip.ini:


If you need to use an override file it should be placed in this directory on your CDVR server:
/home/nyplayer/channels-dvr/data

Save this text as compskip.ini in the location referenced above:

Cool. I'll push it as a new :latest this afternoon.

New bnhf/olivetin:latest (aka bnhf/olivetin:2024.02.26) with a new Action that will allow for overriding of the CDVR controlled Comskip values, and creation of an override comskip.ini file if required.

More details here:

The output you posted is not complete. It should look like this:

Probably something to do with your directory bindings or volume mountings. It's this directive here that's likely wrong:

      - ${DVR_SHARE}:/mnt/media-server6-8089 # This can either be a Docker volume or a host directory that's connected via Samba or NFS to your Channels DVR network share

With this sample env var:

DVR_SHARE=/mnt/dvr

Is your docker host the same machine as your Channels DVR server? If it is, you can typically do a directory binding as in my example. Otherwise, you need to do a volume mount if they're not on the same machine, and you're connecting with SMB or NFS.

EDIT: So, in my case looking at my Docker host, I can navigate to the folder referenced as DVR_SHARE and it shows these CDVR folders:

And that needs to map to /mnt/<yourcdvrhost>-<port> (note the dash instead of a colon)

I do not think I have that ENV will add it.

I am using windows desktop and the Container and Channels DVR are on the same machine.

this is what I get .. but it works

true
Current CDVR Comskip status:
{"available":true,"customized":false,"enabled":true,"ini":{"always_keep_first_seconds":"60","always_keep_last_seconds":"300","min_commercialbreak":"45"},"queued":0}

Settings as used in the most recent Comskip run. Assumes no override file in use:

Current compskip.ini:


If you need to use an override file it should be placed in this directory on your CDVR server:
C:\ProgramData\ChannelsDVR\data

Save this text as compskip.ini in the location referenced above:


Does W:\DVR contain those same folders I'm showing above?

And did you modify the mount point IN the container to match the values you used for CHANNELS_DVR=?

For example, let's say your Windows PC is named "Edwin-PC", so this would be the value for your primary DVR:
CHANNELS_DVR=edwin-pc:8089 (obviously you can use IPs if you prefer).

And this would be the volumes directive you'd use:
- ${DVR_SHARE}:/mnt/edwin-pc-8089