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

The last update was to change project one click for PrismCast. Not sure if there were other changes.

Could you post the output from the OliveTin Actions Debug Log Viewer for this Action?:

EDIT: Also, from your OliveTin config directory (on the host, or exec'd into the container), could you post the results of this (redact your healthchecks.io UUIDs if you're using them):

root@htpc6:/data/olivetin# cat *deletelogs.running
media-server8:8089 deletelogs 7d https://hc-ping.com/[Redacted]

I restarted the OliveTin container, then grabbed what you asked for.

/config/deletelogs.debug.log 2026-02-10 13:35:29

+ dvr=192.168.1.4:8489
++ echo 192.168.1.4:8489
++ awk -F: '{print $1}'
+ channelsHost=192.168.1.4
++ echo 192.168.1.4:8489
++ awk -F: '{print $2}'
+ channelsPort=8489
+ runInterval=1d
+ healthchecksIO=
++ echo 1d
++ sed s/d//
+ recordingLogAge=1
+ [[ 1d == \o\n\c\e ]]
++ basename /config/deletelogs.sh
++ sed s/.sh//
+ scriptBaseName=deletelogs
+ logFile=/config/192.168.1.4-8489_deletelogs_latest.log
+ logTemp=/tmp/192.168.1.4-8489_deletelogs_latest.log
+ runFile=/tmp/192.168.1.4-8489_deletelogs.run
+ dvrDir=192.168.1.4-8489
+ true
+ '[' -d /mnt/192.168.1.4-8489/Logs/recording ']'
+ echo 'Deleting recording log files for 192.168.1.4:8489 that are more than 1 days old'
+ find '/mnt/192.168.1.4-8489/Logs/recording/*' -type d -mtime +1 -exec rm -r '{}' ';'
+ cp /config/192.168.1.4-8489_deletelogs_latest.log /tmp
+ sed -i 's/No such file or directory/Deleted/g' /tmp/192.168.1.4-8489_deletelogs_latest.log
+ cp /tmp/192.168.1.4-8489_deletelogs_latest.log /config
+ '[' '!' -d /mnt/192.168.1.4-8489/Logs/recording ']'
+ [[ 1d == \o\n\c\e ]]
+ [[ -n '' ]]
+ [[ 1d != \o\n\c\e ]]
+ touch /tmp/192.168.1.4-8489_deletelogs.run
+ sleep 1d
+ sed -i '/#deletelogs icon/s|img src = .* width|img src = "custom-webui/icons/channels.png" width|' /tmp/config.yaml
+ sed -i '/#deletelogs interval default/s/default: .* #/default: 1d #/' /tmp/config.yaml
+ [[ -n '' ]]
+ echo '192.168.1.4:8489 deletelogs 1d https://hc-ping.com/your_custom_uuid'
+ sleep 2
+ runningScripts
+ servers=($CHANNELS_DVR $CHANNELS_DVR_ALTERNATES)
+ for server in "${servers[@]}"
++ echo 192.168.1.4:8489
++ awk -F: '{print $1}'
+ serverHost=192.168.1.4
++ echo 192.168.1.4:8489
++ awk -F: '{print $2}'
+ serverPort=8489
++ ps -ef
++ grep '[d]eletelogs.* 192.168.1.4:8489'
++ awk '{print $2}'
+ activeProcess=2233
+ [[ -n 2233 ]]
+ echo 'Background deletelogs process running for 192.168.1.4:8489'
+ for server in "${servers[@]}"
++ echo 192.168.1.4:8089
++ awk -F: '{print $1}'
+ serverHost=192.168.1.4
++ echo 192.168.1.4:8089
++ awk -F: '{print $2}'
+ serverPort=8089
++ ps -ef
++ grep '[d]eletelogs.* 192.168.1.4:8089'
++ awk '{print $2}'
+ activeProcess=454
+ [[ -n 454 ]]
+ echo 'Background deletelogs process running for 192.168.1.4:8089'
+ for server in "${servers[@]}"
++ echo 192.168.1.4:8090
++ awk -F: '{print $1}'
+ serverHost=192.168.1.4
++ echo 192.168.1.4:8090
++ awk -F: '{print $2}'
+ serverPort=8090
++ ps -ef
++ grep '[d]eletelogs.* 192.168.1.4:8090'
++ awk '{print $2}'
+ activeProcess=749
+ [[ -n 749 ]]
+ echo 'Background deletelogs process running for 192.168.1.4:8090'
+ for server in "${servers[@]}"
++ echo 192.168.1.4:8189
++ awk -F: '{print $1}'
+ serverHost=192.168.1.4
++ echo 192.168.1.4:8189
++ awk -F: '{print $2}'
+ serverPort=8189
++ ps -ef
++ grep '[d]eletelogs.* 192.168.1.4:8189'
++ awk '{print $2}'
+ activeProcess=1045
+ [[ -n 1045 ]]
+ echo 'Background deletelogs process running for 192.168.1.4:8189'
+ for server in "${servers[@]}"
++ echo 192.168.1.4:8190
++ awk -F: '{print $1}'
+ serverHost=192.168.1.4
++ echo 192.168.1.4:8190
++ awk -F: '{print $2}'
+ serverPort=8190
++ ps -ef
++ grep '[d]eletelogs.* 192.168.1.4:8190'
++ awk '{print $2}'
+ activeProcess=1341
+ [[ -n 1341 ]]
+ echo 'Background deletelogs process running for 192.168.1.4:8190'
+ for server in "${servers[@]}"
++ echo 192.168.1.4:8289
++ awk -F: '{print $1}'
+ serverHost=192.168.1.4
++ echo 192.168.1.4:8289
++ awk -F: '{print $2}'
+ serverPort=8289
++ ps -ef
++ grep '[d]eletelogs.* 192.168.1.4:8289'
++ awk '{print $2}'
+ activeProcess=1637
+ [[ -n 1637 ]]
+ echo 'Background deletelogs process running for 192.168.1.4:8289'
+ for server in "${servers[@]}"
++ echo 192.168.1.4:8389
++ awk -F: '{print $1}'
+ serverHost=192.168.1.4
++ echo 192.168.1.4:8389
++ awk -F: '{print $2}'
+ serverPort=8389
++ ps -ef
++ grep '[d]eletelogs.* 192.168.1.4:8389'
++ awk '{print $2}'
+ activeProcess=1936
+ [[ -n 1936 ]]
+ echo 'Background deletelogs process running for 192.168.1.4:8389'
+ exit 0
+ finish
+ echo -e 'foreground.sh is exiting for deletelogs with exit code 0\n'
+ backgroundWait=0
+ maxWait=30
+ '[' 0 -lt 30 ']'
+ [[ -f /tmp/192.168.1.4-8489_deletelogs.run ]]
+ break
+ nohup /config/finish.sh /tmp/config.yaml
+ '[' -f /config/192.168.1.4-8489_deletelogs_latest.log ']'
+ cat /config/192.168.1.4-8489_deletelogs_latest.log
root@olivetin:/config# cat *deletelogs.running
192.168.1.4:8089 deletelogs 1d https://hc-ping.com/your_custom_uuid
192.168.1.4:8090 deletelogs 1d https://hc-ping.com/your_custom_uuid
192.168.1.4:8189 deletelogs 1d https://hc-ping.com/your_custom_uuid
192.168.1.4:8190 deletelogs 1d https://hc-ping.com/your_custom_uuid
192.168.1.4:8289 deletelogs 1d https://hc-ping.com/your_custom_uuid
192.168.1.4:8389 deletelogs 1d https://hc-ping.com/your_custom_uuid
192.168.1.4:8489 deletelogs 1d https://hc-ping.com/your_custom_uuid

bnhf/olivetin:latest (aka bnhf/olivetin:2026.02.10) pushed this afternoon with a fix for the CDVR icon color change (purple to green) not happening for certain recurring Actions.

Thanks @chDVRuser for reporting this issue!

Thanks!
It still has the issue with PERSISTENT_LOGS=true
My *deletelogs_latest.log files get overwritten each time I update or restart the container.

No, but that's because this particular script didn't have that option implemented. I'll take a look at adding that, once I know the green icon handling is working properly for you.

1 Like

That's working

1 Like

Looks like there are ~8 scripts that use the same foreground.sh script to launch a background script. I need to look at the ramifications for each of them to add persistent logs. Doable I'm sure, but it'll probably be tomorrow before I can roll it out.

@chDVRuser bnhf/olivetin:latest (aka bnhf/olivetin:2026.02.11) pushed today:

It ended up being 6 Actions that needed updating -- as 2 were deprecated, so no need to bother with those.

The following Actions should now have PERSISTENT_LOGS implemented in a uniform fashion:

  • Backup CDVR Server Database at a Custom Interval
  • Delete Channels DVR Recording Log Files
  • Delete Watched Videos
  • Fix YouTube Thumbnails
  • Ping Channels DVR Server
  • Keep CDVR Server Updated to Latest Pre-Release

I don't use all of these regularly myself, so if anyone has issues with Actions on this list, please let me know ASAP.

I use these two persistent actions. They appear to be running as they should. Persistent logs are in my Olivetin directory. Both action icons are green.

1 Like

Thanks. It's now appending to the log instead of overwriting.
Not sure if this was intended, but it's now putting ANSI color code escape sequences in the logs.

Really just intended for the results window, but it does look busy in the log with multiple servers. Let me see if I can strip them back out, but still get green highlighting where I want it.

No rush, I can delete them out of the 7 log files.

Pushed a fix to the 6 scripts to remove the ANSI escape sequences used to get green highlighting in the results window. They should no longer appear in the logs.

Also, I added more Actions to the OliveTin Recurring Actions Log Viewer, to provide a way to view these logs in the OliveTin Dashboard. I'll include more Actions soon:

screenshot-htpc6-2026_02_11-16_36_26

Thanks. Looking good.

2 Likes

@bnhf I’m trying to generate a m3u playlist using the OliveTin action. I’m trying narrow the list to a single source that is called PrismCast in my cdvr sources. I’ve tried the following in the source box:
M3U-PrismCast
PrismCast
(PrismCast)

It says “or use source name in parens at http….” Does parens mean parentheses?
Can you give an example of what to put in the box for my m3u source called PrismCast.

Also on a side note I’m getting a websocket error when trying to use safari web browser for any OliveTin functions on my iPhone.

As always thanks for your great work on all these projects!

Yes. It's an informal usage.

Go to Manage Lineup for that source, and it's the value shown here:

Thanks for letting me know about this websocket issue...

Thank you. Channels went and took out the capital letters. Interesting that yours shows capitals. Got it now.

New bnhf/olivetin:latest (aka bnhf/olivetin:2026.02.28) pushed this morning with reworked Pluto-for-Channels support in Project One-Click.

There is just one Action now for installing Pluto-for-Channels, which will install the @KineticMan version. This is the go-to version now, as it supports up to 10 simultaneous streams with a single Pluto account, and with a single CDVR Custom Channels source.

The @Bobby_Vaughn version has been deprecated. The Delete a Project One-Click Channels DVR Extension still supports removing all versions that were previously installable via Project One-Click.

If you're migrating from a previous One-Click Pluto installation, uninstall that first before running the updated Action that'll install the new recommended version.

screenshot-htpc6-2026-02-27-14-20-53

2 Likes