@cyoungers Thanks again for testing and helping to illuminate areas that can be improved in the various OliveTin actions!
Through a bit of hocus pocus, a log file will be created when running the Delete Channels DVR Recording Log Files script, and the first lines of it will be shown in stdout. When running this psuedo cron-style, the log file will be added to when additional deletions occur:
:test and :latest have been pushed, and are the same once again.
Looks easy enough to send a notification to one particular client. But I think that begs the question, is there a way to send a single message to all active clients? Or to determine which clients are active, and then send messages to that list? I definitely like the idea!
EDIT: Maybe something as simple as an environment variable (defined at container start) containing an array of client hostnames (or IPs) to send the messages/notifications to?
EDIT2: The message disappears pretty quickly on its own (around 5 seconds), but it does seem to work to send successive messages to make it longer. So, I'm thinking we'd want to specify a display duration.
And it's done! Pushed as bnhf/olivetin:test for now. You'll need to define a new environment variable, which is a space separated list of clients you'd like messages sent to using hostname or IP:
version: '3.9'
services:
olivetin:
image: bnhf/olivetin:test
container_name: olivetin
ports:
- 1337:1337
environment:
- CHANNELS_DVR=${CHANNELS_DVR} # Add your Channels DVR server in the form hostname:port or ip:port
- CHANNELS_CLIENTS=${CHANNELS_CLIENTS} # Space separated list of Channels DVR clients you'd like notifications sent to in the form hostname or IP
- UPDATE_YAMLS=${UPDATE_YAMLS} # Set this to true to update config.yaml
- UPDATE_SCRIPTS=${UPDATE_SCRIPTS} # Set this to true to update all included scripts
- TZ=${TZ} # Add your local timezone in standard linux format. E.G. US/Eastern, US/Central, US/Mountain, US/Pacific, etc
volumes:
- /data/olivetin:/config # replace host path or volume as needed
- /mnt/dvr:/mnt/dvr # replace /mnt/dvr to the left of the colon with your Channels DVR Server /dvr network share
restart: unless-stopped
#volumes: # use this section if you've setup a docker volume named channels-dvr, with CIFS or NFS, to bind to /mnt/dvr inside the container
#channels-dvr:
#external: true
Since this is part of the client API, we probably want to wait until this updated Android client rolls out? In the meantime, what I have going is basically the same thing. I'm limiting messages to 60 seconds, but we can expand that if desired.
Either put your environment variables in the section below the editor (recommended), or get rid of the dollar sign and curly braces if you want to hardcode the values
In the env vars section, just put the var name on the left and value on the right:
Since any script that lends itself to use with multiple DVRs will have to be modified, I'm going to roll them out a few at a time. And, I don't want to start with scripts that neither of us use. Anybody else with multiple Channels DVR servers, please feel free to respond on this.
Thanks, based on how often I do these w/my scripts, I listed them in order from most to least often used.
Manually add recordings
Mark an episode for re-recording
Generate channels list in CSV format
Channel lineup change notifications
List channels with Comskip off
Comskip on/off by channel
I do use Find Gracenote station IDs, but it doesn't matter which DVR is used for that.
Today, I'm adding a Docker-Compose generator of sorts. The idea is to have one place you can go to get the yaml needed to spin-up a container for any Channels DVR related extensions, including some "must have" utilities.
Too many Channels users are using docker one-liners in my opinion, which are harder to maintain, update and visualize. Not to mention you need to be at the console, or ssh'd into the machine Docker is running on to interact with it.
Portainer, as a webUI, makes a better companion to the Channels DVR webUI -- as they both can be run from anywhere on your LAN. Not to mention, anywhere in the world if you add Tailscale to the mix. Add Organizr to the equation, and everything related to a Channels DVR ecosystem can be found in a single browser tab.
Here are some screenshots of this new "Docker-Compose Examples for Channels & Related Extensions" OliveTin Action Button:
And a more complicated one, EPlusTV, note that all of the environment variables are included in the Stack, and a ready to paste set of environment variables is output to "stderr". Those env var values can be put right into the Portainer-Stacks Environment variables Advanced mode, and then you can switch back to Simple mode to change from the defaults to whatever is appropriate for your situation:
Thanks for the ranking -- that helps focus the mind. I've been trying to think up an approach that won't require people that have a single DVR to do or select anything. At the same time, I want to provide a list of servers to choose from, for those of us with multiples. On top of these two things, OliveTin has various limitations to consider including lack of support for a default when using drop downs.
So, here's what I've come up with -- that's relatively easy to implement, has a list of alternate servers, and won't require any input from those with a single server:
There's an new environment variable CHANNELS_DVR_ALTERNATES that'll contain a space separated list of servers beyond the "primary", which will continue using the same env var as before.
The designated primary DVR will become the default for all scripts supporting multiple DVRs.
The alternates will be listed in the description for the field, and if you clear the dvr field first you can easily drag and drop any of the alternates into the box. The name can be edited manually as well, which allows for use with ad-hoc DVR servers not defined in the environment variable.
I've implemented this under the :test2 flag if you want to try it out. Manually Add Recordings and Mark an Episode for Re-Recording are supported at this point:
version: '3.9'
services:
olivetin:
image: bnhf/olivetin:test2
container_name: olivetin
ports:
- 1337:1337
environment:
- CHANNELS_DVR=${CHANNELS_DVR} # Add your Channels DVR server in the form hostname:port or ip:port
- CHANNELS_DVR_ALTERNATES=${CHANNELS_DVR_ALTERNATES} # Space separated list of alternate Channels DVR servers to choose from in the form hostname:port or ip:port
- CHANNELS_CLIENTS=${CHANNELS_CLIENTS} # Space separated list of Channels DVR clients you'd like notifications sent to in the form hostname or IP
- UPDATE_YAMLS=${UPDATE_YAMLS} # Set this to true to update config.yaml
- UPDATE_SCRIPTS=${UPDATE_SCRIPTS} # Set this to true to update all included scripts
- TZ=${TZ} # Add your local timezone in standard linux format. E.G. US/Eastern, US/Central, US/Mountain, US/Pacific, etc
volumes:
- /data/olivetin:/config # replace host path or volume as needed
- /mnt/dvr:/mnt/dvr # replace /mnt/dvr to the left of the colon with your Channels DVR Server /dvr network share
restart: unless-stopped
#volumes: # use this section if you've setup a docker volume named channels-dvr, with CIFS or NFS, to bind to /mnt/dvr inside the container
#channels-dvr:
#external: true