Browse Source

- remove pr-auto-timer plugin; new location is ni-neutrino-plugins repo

master
vanhofen 6 years ago
parent
commit
ed8d43f729
  1. 521
      archive-sources/pr-auto-timer/auto-record-cleaner
  2. 9
      archive-sources/pr-auto-timer/auto-record-cleaner.conf.template
  3. 47
      archive-sources/pr-auto-timer/auto-record-cleaner.rules.template
  4. 2726
      archive-sources/pr-auto-timer/pr-auto-timer
  5. 7
      archive-sources/pr-auto-timer/pr-auto-timer.cfg
  6. 96
      archive-sources/pr-auto-timer/pr-auto-timer.conf.template
  7. 117
      archive-sources/pr-auto-timer/pr-auto-timer.rules.template
  8. 2
      archive-sources/pr-auto-timer/pr-auto-timer.sh
  9. BIN
      archive-sources/pr-auto-timer/pr-auto-timer_hint.png
  10. 26
      archive-sources/pr-auto-timer/update-ctrl/postinstall.sh
  11. 1
      archive-sources/pr-auto-timer/update-ctrl/preinstall.sh
  12. 24
      make/image-update.mk
  13. 18
      make/plugins.mk

521
archive-sources/pr-auto-timer/auto-record-cleaner

@ -1,521 +0,0 @@
#!/bin/sh
# Auto-Record-Cleaner (aurecl) - automatically remove old recorded events
# Copyright (C) 2014 LtCmdrLuke
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
# This is a test-script for automatically handling the oldest records in a
# specified directory after the directory has reached a certain size. Files
# which will be deleted next are first moved to a "last-chance" directory
# before they are finally deleted. In each run, only as much files will be
# really deleted as needed to limit the maximum allowed size of the directory.
# The main intention of this script is its usage in conjunction with the
# "channel-crawling"-feature of the Auto-Timer on a neutrino-based set top box.
# Basic idea:
# Record every event of certain channels and delete always the
# oldest recordings in the record directory, but give the user a chance
# to see what is about to be deleted next. By running this script regularly
# you can keep always the latest x days of all events from a certain channel
# available for watching anytime, i.e. fully independent of broadcasting
# times. (It basically resembles 'Sky Anytime')
# Install & usage:
# - Copy the script somewhere on your box and make it executable
# - Edit the following variables to correspond to your environment, e.g.
# which directory should be watched and how much space you want to give it
# - call it regularly, either manually, or in some automated way. When calling
# it, provide the command line option "--yes" to confirm, you really want
# files to be deleted. Without this command line option, it will perform a
# dry run, i.e. just tell you what it would do now.
# Related files:
# General Configuration: /var/tuxbox/config/auto-record-cleaner.conf
# Controlled directories: /var/tuxbox/config/auto-record-cleaner.rules
VERSION=0.2
# Changelog:
#
# 0.2
# - Added new command line options:
# -y|--yes twice to deactivate the 5s safety
# -q|--quiet deactivate all console output (and also deactivate the 5s safety)
# -h|--help shows the command line options
# - Logs now to a logfile (besides the console, if not deactivated with -q)
# - Now uses own configuration file under /var/tuxbox/config/auto-record-cleaner.conf
# * Here the default path for the log-file and the rule-file can be changed
# * Provided a template file (auto-record-cleaner.conf.template); default values should be fine.
# - Now uses own rules file under /var/tuxbox/config/auto-record-cleaner.rules
# * An arbitrary number of different directories can now be cleaned
# * Provided a template (auto-record-cleaner.rules.template) with examples
# * Basic Syntax is CLEANING_PATH,MAX_SIZE_CP;LAST_CHANCE_PATH,MAX_SIZE_LCP
#
# 0.1
# - Initial release
# - Restrictions:
# * only one controlled directory
# * Configuration directly in the script
# * Shell-only, no information in neutrino
# * No log-file, logs to stdout
# Beyond this point, no user-configurable settings
###############################################################################
NAME="Auto-Record-Cleaner"
ME=${0##*/}
CONFIG_FILE=/var/tuxbox/config/$ME.conf
PID_FILE=/var/run/$ME.pid
EXIT_NORMAL=0
EXIT_SIGNAL=1
EXIT_NO_RULE_FILE=2
EXIT_ALREADY_RUNNING=3
EXIT_UNKNOWN_COMMAND_OPTION=4
#######################################################################################
#BEGIN SECTION "Helper functions"
signal_handler() {
#Handle INT, TERM signals and clean up.
log "Caught signal. Cleaning up."
cleanup
set +f
log "done."
log "$ME V${VERSION} exiting now."
exit $EXIT_SIGNAL
}
cleanup() {
# Remove the pid-file
rm -rf $PID_FILE 2>/dev/null
}
log() {
#Log message to log file
#$*: Log message
if [ "$LOG_FILE" != "" ]; then
echo -e $(date +'%F %H:%M:%S') [$$]: "$*" >> $LOG_FILE
fi
if [ $quiet == 0 ]; then
echo -e "$*"
fi
}
begin_ifs_block() {
#Backup IFS (input field separator) to restore it after parsing arguments
IFS_SAVE=$IFS
set -f
}
end_ifs_block() {
#Restore (input field separator) IFS after parsing arguments
IFS=$IFS_SAVE
set +f
}
#END SECTION "Helper functions"
#######################################################################################
#######################################################################################
#BEGIN SECTION "Initialization"
init_config() {
#Parse config file (default: /var/tuxbox/config/auto-record-cleaner.conf)
if [ -e $CONFIG_FILE ]; then
source $CONFIG_FILE 2>/dev/null
fi
# Initialize the logfile first, so we can write to it...
if [ ! -d "${LOG_FILE%/*}" ]; then
case $LOG_FILE in
[oO][fF][fF])
LOG_FILE=''
;;
*)
LOG_FILE=/tmp/${ME}_$(date +'%F').log
;;
esac
fi
echo -e "\n\n========================== $NAME started new log at $(date) ======================================" >> $LOG_FILE
# Check other settings and reset them to default if unset or invalid
if [ ! -e "$RULE_FILE" ]; then
RULE_FILE=/var/tuxbox/config/$ME.rules
if [ ! -e "$RULE_FILE" ]; then
log "ERROR: Rules file '$RULE_FILE' does not exist! Exiting."
exit $EXIT_NO_RULE_FILE
fi
fi
}
#END SECTION "Initialization"
#######################################################################################
#######################################################################################
#BEGIN SECTION "Command line options handling"
parse_options() {
#Parse auto-record-cleaner command line arguments
local option
while [ $# -gt 0 ]
do
option=$1
shift
case "$option" in
-y|--yes)
dry_run=$((dry_run-1))
;;
-q|--quiet)
quiet=1
;;
-h|--help)
usage
exit $EXIT_NORMAL
;;
*)
echo "Unknown command line option '$option'. What did you want to do? Exiting!"
usage
exit $EXIT_UNKNOWN_COMMAND_OPTION
;;
esac
done
}
usage() {
# Print short usage message on console
echo -e "Usage: $ME [options]"
echo -e "Valid options are:"
echo -e "\t-y|--yes\t\tSwitches safety off and really deletes/moves files. Use twice to deactivate 5s safety interval."
echo -e "\t-q|--quiet\t\tDeactivates all output on console. Also deactivates 5s safety interval."
echo -e "\t-h|--help\t\tPrint this help and exit."
}
#END SECTION "Command line options handling"
#######################################################################################
#######################################################################################
#BEGIN SECTION "Work functions"
limit_directory() {
# Moves or deletes oldest files in a given directory
# Parameters:
# $1: The directory from which the files should be moved/deleted
# $2: the maximum size of the directory in kB
# $3: optional: the directory into which files should be moved. If this
# parameter is missing, files will be deleted
# Precondition: All provided directories must exist.
local dir max_dir_size dir_size dest_dir over_limit ts_files ts
dir="$1"
max_dir_size="$2"
dir_size=$(du -s -k "$dir" | cut -f1)
dest_dir="$3"
# in case there is a destination folder given, we need to get its size
# and subtract this from the current dir size
if [ -n "$dest_dir" ]; then
dest_dir_size=$(du -s -k "$dest_dir" | cut -f1)
dir_size=$((dir_size-dest_dir_size))
log "\t\t\tLimiting '$dir' to max size $((max_dir_size/(1024*1024)))GB by moving the oldest files to '$dest_dir' ... "
else
log "\t\t\tLimiting '$dir' to max size $((max_dir_size/(1024*1024)))GB by deleting the oldest files ..."
fi
if [ $dir_size -gt $max_dir_size ]; then
over_limit=$((dir_size-max_dir_size))
if [ -z "$dest_dir" ]; then
log "\t\t\t\tWe need to delete $((over_limit/(1024*1024)))GB (${over_limit}kB) from '$dir' ..."
else
log "\t\t\t\tWe need to move $((over_limit/(1024*1024)))GB (${over_limit}kB) from '$dir' to '$dest_dir' ..."
fi
else
log "\t\t\t\tNothing to do in directory '$dir'. Current size has not reached the limit."
return 0
fi
# we don't want to use the ls command since its output is not POSIX-standard
# therefore, we first find all files and then we use the date command to
# determine the modification time
# first collect all *.ts files
ts_files=$(find "$dir" -name "*.ts")
# now gather additional information, like modification time and size
# (we could have got this info from ls in ONE call..)
begin_ifs_block
IFS=$'\n'
for ts in $ts_files; do
ts_date=$(date -r "$ts" +%s)
ts_size=$(du -k "$ts" | cut -f1)
ts_files_ext="${ts_files_ext}${ts}|$ts_date|$ts_size\n"
#echo "$ts|$ts_date|$ts_size"
done
end_ifs_block
# sort the final list with respect to the modification time
sorted_ts_files_ext=$(echo -ne "$ts_files_ext" | sort -t '|' -k2)
count=0
# now (re)move until limit is reached
begin_ifs_block
IFS=$'\n'
for ts_file in $sorted_ts_files_ext; do
IFS='|'
set -- $ts_file
filename=$1
filetime=$2
filesize=$3
# skip the file, if it is already in dest_dir
if [ "${filename%/*}" == "$dest_dir" ]; then
#echo -e "\tSkipping $filename .."
continue
fi
xml_file=${filename%".ts"}".xml"
if [ $dry_run == 0 ]; then
if [ -z "$dest_dir" ]; then
log "\t\t\t\tDeleting now '$filename' (${filesize}kB).."
rm "$filename" 2>/dev/null
if [ -f "$xml_file" ];then
log "\t\t\t\tDeleting now also the corresponding '$xml_file' ... "
rm "$xml_file" 2>/dev/null
fi
else
log "\t\t\t\tMoving '$filename' (${filesize}kB) to '$dest_dir' ..."
mv "$filename" "$dest_dir" 2>/dev/null
if [ -f "$xml_file" ];then
log "\t\t\t\tMoving now also the corresponding '$xml_file' to '$dest_dir' ... "
mv "$xml_file" "$dest_dir" 2>/dev/null
fi
fi
else
if [ -z "$dest_dir" ]; then
log "\t\t\t\tDRY-RUN: Would remove now '$filename' (${filesize}kB).."
if [ -f "$xml_file" ];then
log "\t\t\t\tDRY-RUN: Would delete now also the corresponding '$xml_file' ... "
fi
else
log "\t\t\t\tDRY-RUN: Would move now '$filename' (${filesize}kB) to '$dest_dir' ..."
if [ -f "$xml_file" ];then
log "\t\t\t\tDRY-RUN: Would move now also the corresponding '$xml_file' to '$dest_dir' ... "
fi
fi
fi
over_limit=$((over_limit-filesize))
count=$((count+1))
if [ $over_limit -le 0 ]; then
removed=$((dir_size-max_dir_size-over_limit))
if [ $dry_run == 0 ]; then
if [ -z "$dest_dir" ]; then
log "\t\t\t\tDone. Removed $((removed/(1024*1024)))GB (${removed}kB) by deleting $count recorded events."
else
log "\t\t\t\tDone. Moved $((removed/(1024*1024)))GB (${removed}kB) in $count recorded events to directory '$dest_dir'."
fi
else
if [ -z "$dest_dir" ]; then
log "\t\t\t\tDRY_RUN: Done. Would have removed $((removed/(1024*1024)))GB (${removed}kB) by deleting $count recorded events."
else
log "\t\t\t\tDRY_RUN: Done. Would have moved $((removed/(1024*1024)))GB (${removed}kB) in $count recorded events to directory '$dest_dir'."
fi
fi
# we are done, so break from the loop
break
fi
done
end_ifs_block
return 0
}
#END SECTION "Work functions"
#######################################################################################
###############################################################################
#BEGIN Section "Main"
# initialize some more variables
dry_run=1
quiet=0
# set the signal handler
trap signal_handler INT TERM
# First initialize the values from the config, otherwise we cannot log anywhere
init_config
# Now get command line option, as these might override some values from the config or default variables
parse_options $@
if [ -e $PID_FILE ]; then
log "$ME ist already running. Exiting..."
exit $EXIT_ALREADY_RUNNING
else
echo $$ > $PID_FILE
fi
# We happily started..
log ""
log "$ME V$VERSION initialized and starting main operations."
if [ $dry_run == 1 ]; then
log "\tThis is a dry run, i.e. no files will be harmed. Use '-y' or '--yes' to deactivate the safety."
elif [ $dry_run == 0 ] && [ $quiet == 0 ]; then
log "\t!!! WARNING!!! This is now the real thing - files WILL BE DELETED. You can still abort within the next 5 seconds. !!! WARNING !!!"
echo "Waiting for 5 more seconds.."
sleep 1
echo "Waiting for 4 more seconds.."
sleep 1
echo "Waiting for 3 more seconds.."
sleep 1
echo "Waiting for 2 more seconds.."
sleep 1
echo "Waiting for 1 more seconds.."
sleep 1
echo "You have been warned. Proceeding..."
else
log "\t!!! WARNING!!! $ME is armed and targeting your files. !!! WARNING !!!"
fi
# now process each directory given in the rule-file
rule_line=0
cat $RULE_FILE | while read line; do
rule_line=$((${rule_line}+1))
if echo $line | egrep -q '^[[:space:]]*([^#;]+),([0-9]+);?([^;]+)?(,[0-9]+)?$'; then
log ""
log "\tProcessing rule: '$line'"
# split rule line
begin_ifs_block
IFS=';'
set -- $line
record_part=$1
last_chance_part=$2
end_ifs_block
# split record_part
begin_ifs_block
IFS=','
set -- $record_part
record_dir=$1
record_dir_size=$2
end_ifs_block
if [ -n "$last_chance_part" ]; then
# split last_chance_part
begin_ifs_block
IFS=','
set -- $last_chance_part
last_chance_dir=$1
last_chance_dir_size=$2
end_ifs_block
if [ -z $last_chance_dir_size ]; then
last_chance_dir_size=$((record_dir_size / 10))
fi
else
last_chance_dir="last_chance"
last_chance_dir_size=$((record_dir_size / 10))
fi
# convert GB into kB
record_dir_size_k=$((record_dir_size * 1024 * 1024))
last_chance_dir_size_k=$((last_chance_dir_size * 1024 * 1024))
# print the collected information to the log:
log "\t\tCleaning path: '$record_dir', Maximum size: ${record_dir_size}GB (${record_dir_size_k}kB)"
log "\t\tLast chance subdirectory: '$last_chance_dir', Maximum size: ${last_chance_dir_size}GB (${last_chance_dir_size_k}kB)"
# now check if directories exist
# if the cleaning directory does not exist, print an error and continue with next rule
if [ ! -d "$record_dir" ]; then
log "\t\tThe given directory '$record_dir' does not exist. Create it or correct this rule. Skipping this rule."
continue
fi
#convert the last_chance relative path to an absolut one
last_chance_dir="${record_dir%/}/$last_chance_dir"
# if the last chance directory does not exist yet, create it.
if [ ! -d "$last_chance_dir" ]; then
if [ $dry_run == 0 ]; then
log "\t\tCreating directory '$last_chance_dir' for last chance files, as it does not exist yet."
mkdir "$last_chance_dir"
else
log "\t\tWould now create directory '$last_chance_dir' for last chance files, as it does not exist yet. (dry-run, i.e. NOT performing any action)"
fi
fi
# get the current size of the directories (in kB)...
current_record_dir_usage_k=$(du -s -k "$record_dir" | cut -f1)
current_last_chance_dir_size_k=$(du -s -k "$last_chance_dir" | cut -f1)
# ... and print them into the log
log "\t\tCurrent full size of '$record_dir' (recursively) is $((current_record_dir_usage_k/(1024*1024)))GB (${current_record_dir_usage_k}kB)."
log "\t\tCurrent size of '$last_chance_dir' is $((current_last_chance_dir_size_k/(1024*1024)))GB (${current_last_chance_dir_size_k}kB)."
# perform some initial checks, if we actually need to do something
if [ $((current_record_dir_usage_k-current_last_chance_dir_size_k)) -le $((record_dir_size_k-last_chance_dir_size_k)) ] && [ $current_last_chance_dir_size_k -le $last_chance_dir_size_k ] ;then
log "\t\tNothing to do for this rule - disk usage is within the given specification."
continue
fi
over_limit=0
if [ $current_record_dir_usage_k -gt $record_dir_size_k ];then
over_limit=$((current_record_dir_usage_k-record_dir_size_k))
log "\t\tWe need to remove $((over_limit/(1024*1024)))GB (${over_limit}kB) from directory '$record_dir'."
fi
if [ $((current_record_dir_usage_k-current_last_chance_dir_size_k-over_limit)) -gt $((record_dir_size_k-last_chance_dir_size_k)) ];then
move_size=$((current_record_dir_usage_k-current_last_chance_dir_size_k-over_limit-(record_dir_size_k-last_chance_dir_size_k)))
log "\t\tWe need to move $((move_size/(1024*1024)))GB (${move_size}kB) from directory '$record_dir' to '$last_chance_dir'."
fi
# first we delete the oldest files from the main directory (including last chance)
# if your last_chance is too small, some files will never appear in there
limit_directory "$record_dir" "$record_dir_size_k"
# now fill the last chance directory
limit_directory "$record_dir" "$((record_dir_size_k-last_chance_dir_size_k))" "$last_chance_dir"
# final status
new_record_dir_usage_k=$(du -s -k "$record_dir" | cut -f1)
new_last_chance_dir_size_k=$(du -s -k "$last_chance_dir" | cut -f1)
log "\t\tNew full size of '$record_dir' (recursively) is $((new_record_dir_usage_k/(1024*1024)))GB (${new_record_dir_usage_k}kB)."
log "\t\tNew size of '$last_chance_dir' is $((new_last_chance_dir_size_k/(1024*1024)))GB (${new_last_chance_dir_size_k}kB)."
fi
done
log ""
log "$ME V${VERSION} finished rule processing."
cleanup
log "========================== $NAME finished at $(date) ======================================"
exit $EXIT_NORMAL;

9
archive-sources/pr-auto-timer/auto-record-cleaner.conf.template

@ -1,9 +0,0 @@
# General configuration for the auto-record-cleaner
# Activate the following to change the default path of the rule file
#RULE_FILE=/var/tuxbox/config/$ME.rules
# Deactivate the logfile (default is ON)
#LOG_FILE=off
# Activate the following to change the default location of the log-file
#LOG_FILE=/tmp/${ME}_$(date +'%F').log

47
archive-sources/pr-auto-timer/auto-record-cleaner.rules.template

@ -1,47 +0,0 @@
# auto-record-cleaner.rules
#
# ----------------------------------------------------------------------------
#
# Syntax: CLEANING_PATH,MAX_SIZE_CP;LAST_CHANCE_PATH,MAX_SIZE_LCP
#
# CLEANING_PATH The path which should be cleaned
# Example: /media/sda1/movies
# The argument is mandatory.
#
# MAX_SIZE_CP The maximum size of the CLEANING_PATH given in GB
# When the size grows beyond this value, the oldest files will be deleted
# Example: 450
# The argument is mandatory.
#
# LAST_CHANCE_PATH The name of the directory, which should be created for files
# which will be deleted soon.
# Example: last_chance
# The argument is optional, if not given "last_chance" is used.
#
# MAX_SIZE_LCP The maximum size of the LAST_CHANCE_PATH given in GB
# Example: 50
# The argument is optional, if not given 10% of MAX_SIZE_CP is used
#
## Examples (remove leading # to activate):
## Keep at most 500 GB of recorded files in /media/sda1/movies/sky
## The size is calculated recursive incl. the last_chance directory
## that is, the oldest 50 GB are in the directory last_chance
#/media/sda1/movies/sky,500;last_chance,50
## Equivalent to the above rule
#/media/sda1/movies/sky,500
## Keep at most 1TB of recorded files in /mnt/autofs/record/sky/
#/mnt/autofs/record/sky,1000
## Like above but only keep 50 GB (instead of 100).
## Use the directory 'soon_deleted'
#/mnt/autofs/record/sky/,1000;soon_deleted,50
## Like above but the default 100 GB in
## the custom directory 'oldest'
#/mnt/autofs/record/sky/,1000;oldest
# Don't forget the newline after the last entry.

2726
archive-sources/pr-auto-timer/pr-auto-timer

File diff suppressed because it is too large

7
archive-sources/pr-auto-timer/pr-auto-timer.cfg

@ -1,7 +0,0 @@
type=3
name=Auto-Timer
desc=Automatisches Anlegen von Rec/Zap-Timern
needfb=1
needlcd=0
needrc=1
needoffsets=1

96
archive-sources/pr-auto-timer/pr-auto-timer.conf.template

@ -1,96 +0,0 @@
# activate the following setting to record all new movies from SKY Cinema
#SKY_CINEMA="HD"
# or
#SKY_CINEMA="SD;Weekend,18:00-00:00;/mnt/rec/sky_cinema"
# The maximum time an EPG might "move" to still be considered the same event
MAX_DIFF_MINS=10
# How many tuners are available in this box (or how many are you willing to use with the autotimer?)
# Notes:
# * Setting this to more than available might break some recordings if more timers are set in a timespan, than real tuners are available
# * If something is to be recorded, but there are already timers blocking this time span, the new timer will not be added.
# Hence, make sure, that the more important shows are listed earlier in the rules-file.
MAX_TUNERS=2
# How many parallel recordings are allowed. The default ist 8, which is also the maximum the CS supports.
# In case your box is to slow, or you experience some problems when there are many parallel recordings, try reducing this number.
# Note: This is different from MAX_TUNERS, since multiple recordings on the same transponder require only a single tuner.
MAX_RECORDS=8
# Automatically generate/update the show history file.
# When this is set to 1, pr-auto-timer will collect all recorded shows from all paths given in MYRECORDPATHS and update the show history file.
# More precisely, it will search through these paths for *.xml files from recordings and extract from there the information necessary
# to detect if the same show was already recorded at some other time. Note that already existing entries in $ME.show_history will *not* be removed.
# Therefore, you can delete some recordings or add manually shows to this file and they will be kept until you delete them manually or you delete the entire file.
# With a big collection of recordings it might take some time, when pr-auto-timer first generates this (on the first occurrence of a rule with the D-flag)
# This time can be avoided by setting the following setting to 0 and calling pr-auto-timer with the command line option "--gen_show_history" before running
# pr-auto-timer without options. Default is 1, i.e. automatically generate this info.
AUTOGEN_SHOW_HISTORY=1
# The following setting controls the behavior of pr-auto-timer with respect to records, which went wrong. This only applies if pr-auto-timer automatically
# generates the show history (i.e. AUTOGEN_SHOW_HISTORY=1). Currently only two types of "broken records" can be handled:
# - Only the *.xml-file of some event exist and no *.ts file can be found (this could also be used to manually indicate to pr-auto-timer, that you want a event
# to be recorded again; to do so, simply delete ONLY the *.ts file, and leave the *.xml file intact.
# - The *.ts files exists but it's size is under 2k. This is a common situation, when a record goes wrong - a file of ~1k remains there, but contains nothing.
# Possible options:
# 0: Feature deactivated - no handling of broken records
# 1: Detect broken records and remove them from the history index. Hence, they will be recorded again if encountered. [default]
# 2: Detect and REMOVE broken records. Like 1, but also **DELETE** the broken files (xml and ts) from your disk. (Files will be deleted irreversible.)
BROKEN_RECORD_HANDLING=1
# Set the following to activate/deactivate saving information about manually deleted timers
# 0: feature is activated (saves timer info) and manually deleted timers will not be added again
# 1: feature is activated (saves timer info), but manually deleted timers will be added again
# 2: feature is deactivated, i.e. timers will not be stored [default]
DEL_TIMER_REFRESH=2
# The maximum number of timers to remember, in order to not set it again after it has been manually deleted
# This setting is only relevant if the above DEL_TIMER_REFRESH is 0 or 1
MAX_TMR2_COUNT=250
# This setting limits the size of your $ME.show_history file. The feature is activated by setting the value to something else than 0, e.g. 1000 [default].
# pr-auto-timer will then try to remove n entries, so that the maximum entries given in MAX_HISTORY_ENTRIES is not violated. Hereby the oldest
# entries, determined by the timestamp, will be removed. However, only entries, to which no recorded file exists on your disk will be removed.
# A setting of MAX_HISTORY_ENTRIES=0 deactivates the size check. If there are more physically available files, than entries allowed, then MAX_HISTORY_ENTRIES
# will be ignored and a warning is issued in the logfile.
MAX_HISTORY_ENTRIES=1000
# What should be done, after pr-auto-timer is done?
#0: Nothing. The box remains in its previous state. [default]
#1: Put the box in standby.
#2: Put the box in DeepStandBy
#3: Power off the box
#4: Reboot the box
END_SHUT_DOWN=0
# During which time, the should the above END-action be done?
#0: Do the SHUT_DOWN only from 00:00 to 06:00. [default]
#1: Do the SHUT_DOWN at any time.
SHUT_DOWN_ALSO_DAY=0
# Activate the following to execute an arbitrary script/program before starting
# Default is no action
#PRE_ACTION="echo 'Pre-action 1';echo 'Pre-action 2'"
# Activate the following to execute an arbitrary script/program after finishing but before exiting.
# Default is no action
#POST_ACTION="echo 'Post-action'"
# Change the following to determine where pr-auto-timer searches for recordings on your disk
# You can provide more than one path and each path will be searched recursively. Use "std::neutrino" to indicate the standard recording
# directory from neutrino. If this is not set or invalid, the standard neutrino recording directory is used.
# Separate multiple paths with a ';', i.e. MYRECORDPATHS="path[;path]... " (Note the quotes!)
MYRECORDPATHS="std::neutrino"
# Activate the following to change the path of the rule files
#RULE_FILE=/var/tuxbox/config/$ME.rules
#RULE_FILE_EXT=/var/tuxbox/config/$ME.rulex
# Activate the following to change the default place for the show history
#HISTORY_FILE=/var/tuxbox/config/$ME.show_history
# Deactivate the logfile (default is ON)
#LOG_FILE=off
# Activate the following to change the default location of the log-file
#LOG_FILE=/tmp/${ME}_$(date +'%F').log

117
archive-sources/pr-auto-timer/pr-auto-timer.rules.template

@ -1,117 +0,0 @@
# pr-auto-timer.rules
#
# ----------------------------------------------------------------------------
#
# Syntax: CHANNELNAME;DAYOFWEEK[,TIMESPAN];REGEX[,MODIFIER][;FLAGS][;RECDIR]
#
# CHANNELNAME The (exact) channelname e.g. "Das Erste HD" or
# a bouquet-nr prefixed with an asterisk e.g. "*1"
#
# DAYOFWEEK The day of week or an asterisk for all days of week e.g.
# "Weekday" or "Mon", "Tue", "Wed", "Thu", "Fri"
# "Weekend" or "Sat", "Sun"
# "*"
#
# TIMESPAN Defines a period in which the timer must start e.g.
# "18:45-20:15"
# "*" an asterisk for all times
# TIMESPAN is optional; default is "*"
#
# REGEX The name of the show as a regular expression e.g.
# "Tatort"
# "*" find all shows; this is only usefull in conjunction with MODIFIER
# NOTE: This regular expression is matched only against the epg title
#
# MODIFIER The modifier can be used to further refine the selection of the show
# by searching the entire description for specified words.
# Format is as follows: [+~!-]RegEx1 RegEx2 ...
# +RegEx1 RegEx2 ...: INCLUDE ALL - All of these regular expressions must match for selecting the show
# ~RegEx1 RegEx2 ...: INCLUDE ONE - One of these regular expressions must match for selecting the show
# !RegEx1 RegEx2 ...: EXCLUDE ALL - All of these regular expressions must match for excluding the show
# -RegEx1 RegEx2 ...: EXCLUDE ONE - One of these regular expressions must match for excluding the show
# MODIFIER is optional; default is no modifier.
# NOTE: When no modifier is given, this regular expression is matched only against the epg title
#
# FLAGS A coma-separated list of the following flags:
# - "R": create a record timer [default]
# - "Z": create a zap timer
# - "I": ignore time additions to timer
# - "F": during one run of pr-auto-timer only the first match will be added as a timer
# - "O": the same as "F" but additionally deactivates the corresponding rule in the rules-file
# - "D": prevent adding duplicate timers for the same show (at different times)
# - "W": Always re-add manually removed timers if the show is found again; overrides the global option DEL_TIMER_REFRESH=0
# - "M": Allow empty info-fields when using duplicate detection
# FLAGS is optional; default is a record timer.
#
# RECDIR An alternative recording directory
# NOTE: flag-section can be empty, but MUST be defined! See examples below.
# RECDIR is optional; default is the neutrino setting
#
# ----------------------------------------------------------------------------
#
## Examples (remove leading # to activate):
#
## Record all shows containing the word 'Tatort'
## on channel 'Das Erste HD' on sundays:
#Das Erste HD;Sun;Tatort
## Record all shows containing the word 'Tagesschau'
## on channel 'Das Erste HD' on all days in a timespan between 11:55 and 12:05:
#Das Erste HD;*,11:55-12:05;Tagesschau
## Record all shows containing the word 'Knollenblätterpilz'
## on channel 'Das Erste HD':
#Das Erste HD;*;Knollenblätterpilz
## Record all shows containing the sentence 'Rumpsteak schmeckt lecker'
## on all channels of bouquet 1:
#*1;*;Rumpsteak schmeckt lecker
## Zap to all shows containing the word 'Affenhaus'
## on channel 'Das Erste HD':
#Das Erste HD;*;Affenhaus;Z
## Record first show found containing the word 'Tatort'
## on channel 'Das Erste HD' on sundays:
#Das Erste HD;Sun;Tatort;F
## Record first show found containing the word 'Tatort'
## on channel 'Das Erste HD' on sundays.
## After creating timer the rule-line will be deactivated:
#Das Erste HD;Sun;Tatort;O
## Record all shows containing the word 'Tatort'
## on channel 'Das Erste HD' on weekends.
## Using '/media/records/tatort' as recording directory
#Das Erste HD;Weekend;Tatort;R;/media/records/tatort
## or with empty FLAGS section
#Das Erste HD;Weekend;Tatort;;/media/records/tatort
## You don't need the special episodes of LOST,
## if you plan to view this great series in one run. ;)
#FOX HD;*;LOST,!Special
## Records all Episodes of Traumschiff but not these ones:
## Oman Bali Malaysia Vegas Savannah Panama Singapur Bintan Perth Spezial
#ZDF;*,00:00-18:15;Traumschiff,-Oman Bali Malaysia Vegas Savannah Panama Singapur Bintan Perth Spezial
## Records only Episodes of Traumschiff:
## Oman Bali Malaysia Vegas Savannah Panama Singapur Bintan Perth Spezial
#ZDF;*,00:00-18:15;Traumschiff,~Oman Bali Malaysia Vegas Savannah Panama Singapur Bintan Perth Spezial
## Record only Episode "Mord mit der linken Hand" from Columbo once on any channel
#*;*;Columbo,+Mord mit der linken Hand;O
## Record all episodes of "Unser Kosmos: Die Reise geht weiter" from NatGeo HD
## Avoid recording repetitions of the same episode.
#NatGeo HD;*;Unser Kosmos;D
## Record all episodes from "The Big Bang Theory" for Season 7
## The regular expression excludes all episodes with the string "x. Staffel", where x=1..6.
#TNT Serie HD;*;The Big Bang Theory,![123456]\\.[[:blank:]]Staffel;D
## Record all episodes from The Walking Dead's season 5
## The regular expression includes only episodes where the string "5. Staffel" was found in the description
#Fox HD;*;Walking Dead,+5\\.[[:blank:]]Staffel;D
# Don't forget the newline after the last entry.

2
archive-sources/pr-auto-timer/pr-auto-timer.sh

@ -1,2 +0,0 @@
#!/bin/sh
/lib/tuxbox/plugins/pr-auto-timer --menu

BIN
archive-sources/pr-auto-timer/pr-auto-timer_hint.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 628 B

26
archive-sources/pr-auto-timer/update-ctrl/postinstall.sh

@ -1,26 +0,0 @@
#!/bin/sh
CP=/bin/cp
WGET=/bin/wget
RM=/bin/rm
if [ ! -e /var/tuxbox/config/pr-auto-timer.conf ]; then
$CP /var/tuxbox/config/pr-auto-timer.conf.template /var/tuxbox/config/pr-auto-timer.conf
fi
if [ ! -e /var/tuxbox/config/pr-auto-timer.rules ]; then
$CP /var/tuxbox/config/pr-auto-timer.rules.template /var/tuxbox/config/pr-auto-timer.rules
fi
if [ ! -e /var/tuxbox/config/auto-record-cleaner.conf ]; then
$CP /var/tuxbox/config/auto-record-cleaner.conf.template /var/tuxbox/config/auto-record-cleaner.conf
fi
if [ ! -e /var/tuxbox/config/auto-record-cleaner.rules ]; then
$CP /var/tuxbox/config/auto-record-cleaner.rules.template /var/tuxbox/config/auto-record-cleaner.rules
fi
$WGET -q -O - "http://localhost/control/message?popup=Auto-Timer%20installiert."
$WGET -q -O - "http://localhost/control/reloadplugins"
$RM -f /tmp/pr-auto-timer_*.bin

1
archive-sources/pr-auto-timer/update-ctrl/preinstall.sh

@ -1 +0,0 @@
#!/bin/sh

24
make/image-update.mk

@ -89,20 +89,20 @@ endif
u-pr-auto-timer:
$(MAKE) u-init
install -m755 $(SOURCES)/pr-auto-timer/update-ctrl/preinstall.sh $(PREINSTALL_SH)
install -m755 $(SOURCES)/pr-auto-timer/update-ctrl/postinstall.sh $(POSTINSTALL_SH)
install -m755 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/pr-auto-timer/update-ctrl/preinstall.sh $(PREINSTALL_SH)
install -m755 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/pr-auto-timer/update-ctrl/postinstall.sh $(POSTINSTALL_SH)
mkdir -pv $(UPDATE_INST_DIR)/lib/tuxbox/plugins
install -m755 $(SOURCES)/pr-auto-timer/pr-auto-timer.sh $(UPDATE_INST_DIR)/lib/tuxbox/plugins/
install -m644 $(SOURCES)/pr-auto-timer/pr-auto-timer.cfg $(UPDATE_INST_DIR)/lib/tuxbox/plugins/
install -m755 $(SOURCES)/pr-auto-timer/pr-auto-timer $(UPDATE_INST_DIR)/lib/tuxbox/plugins/
install -m755 $(SOURCES)/pr-auto-timer/pr-auto-timer_hint.png $(UPDATE_INST_DIR)/lib/tuxbox/plugins/
install -m755 $(SOURCES)/pr-auto-timer/auto-record-cleaner $(UPDATE_INST_DIR)/lib/tuxbox/plugins/
install -m755 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/pr-auto-timer/pr-auto-timer.sh $(UPDATE_INST_DIR)/lib/tuxbox/plugins/
install -m644 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/pr-auto-timer/pr-auto-timer.cfg $(UPDATE_INST_DIR)/lib/tuxbox/plugins/
install -m755 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/pr-auto-timer/pr-auto-timer $(UPDATE_INST_DIR)/lib/tuxbox/plugins/
install -m755 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/pr-auto-timer/pr-auto-timer_hint.png $(UPDATE_INST_DIR)/lib/tuxbox/plugins/
install -m755 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/pr-auto-timer/auto-record-cleaner $(UPDATE_INST_DIR)/lib/tuxbox/plugins/
mkdir -pv $(UPDATE_INST_DIR)/var/tuxbox/config
install -m644 $(SOURCES)/pr-auto-timer/pr-auto-timer.conf.template $(UPDATE_INST_DIR)/var/tuxbox/config/
install -m644 $(SOURCES)/pr-auto-timer/pr-auto-timer.rules.template $(UPDATE_INST_DIR)/var/tuxbox/config/
install -m644 $(SOURCES)/pr-auto-timer/auto-record-cleaner.conf.template $(UPDATE_INST_DIR)/var/tuxbox/config/
install -m644 $(SOURCES)/pr-auto-timer/auto-record-cleaner.rules.template $(UPDATE_INST_DIR)/var/tuxbox/config/
VERSION_STRING=`cat $(SOURCES)/pr-auto-timer/pr-auto-timer | grep '^VERSION' | cut -d= -f2`; \
install -m644 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/pr-auto-timer/pr-auto-timer.conf.template $(UPDATE_INST_DIR)/var/tuxbox/config/
install -m644 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/pr-auto-timer/pr-auto-timer.rules.template $(UPDATE_INST_DIR)/var/tuxbox/config/
install -m644 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/pr-auto-timer/auto-record-cleaner.conf.template $(UPDATE_INST_DIR)/var/tuxbox/config/
install -m644 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/pr-auto-timer/auto-record-cleaner.rules.template $(UPDATE_INST_DIR)/var/tuxbox/config/
VERSION_STRING=`cat $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/pr-auto-timer/pr-auto-timer | grep '^VERSION' | cut -d= -f2`; \
$(MAKE) u-update-bin \
UPDATE_MD5FILE=pr-auto-timer.txt \
UPDATE_URL=$(NI-SERVER)/plugins/pr-auto-timer \

18
make/plugins.mk

@ -182,15 +182,15 @@ EPGscan: $(LIBPLUGINS) $(VARCONFIG)
install -m644 $(SOURCES)/EPGscan/*.conf $(VARCONFIG)/
pr-auto-timer: $(LIBPLUGINS) $(VARCONFIG)
install -m755 $(SOURCES)/pr-auto-timer/auto-record-cleaner $(LIBPLUGINS)/
install -m644 $(SOURCES)/pr-auto-timer/auto-record-cleaner.conf.template $(VARCONFIG)/auto-record-cleaner.conf
install -m644 $(SOURCES)/pr-auto-timer/auto-record-cleaner.rules.template $(VARCONFIG)/auto-record-cleaner.rules
install -m755 $(SOURCES)/pr-auto-timer/pr-auto-timer.sh $(LIBPLUGINS)/
install -m644 $(SOURCES)/pr-auto-timer/pr-auto-timer.cfg $(LIBPLUGINS)/
install -m755 $(SOURCES)/pr-auto-timer/pr-auto-timer $(LIBPLUGINS)/
install -m644 $(SOURCES)/pr-auto-timer/pr-auto-timer_hint.png $(LIBPLUGINS)/
install -m644 $(SOURCES)/pr-auto-timer/pr-auto-timer.conf.template $(VARCONFIG)/pr-auto-timer.conf
install -m644 $(SOURCES)/pr-auto-timer/pr-auto-timer.rules.template $(VARCONFIG)/pr-auto-timer.rules
install -m755 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/$@/auto-record-cleaner $(LIBPLUGINS)/
install -m644 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/$@/auto-record-cleaner.conf.template $(VARCONFIG)/auto-record-cleaner.conf
install -m644 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/$@/auto-record-cleaner.rules.template $(VARCONFIG)/auto-record-cleaner.rules
install -m755 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/$@/pr-auto-timer.sh $(LIBPLUGINS)/
install -m644 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/$@/pr-auto-timer.cfg $(LIBPLUGINS)/
install -m755 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/$@/pr-auto-timer $(LIBPLUGINS)/
install -m644 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/$@/pr-auto-timer_hint.png $(LIBPLUGINS)/
install -m644 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/$@/pr-auto-timer.conf.template $(VARCONFIG)/pr-auto-timer.conf
install -m644 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/$@/pr-auto-timer.rules.template $(VARCONFIG)/pr-auto-timer.rules
autoreboot: $(LIBPLUGINS)
install -m755 $(SOURCE_DIR)/$(NI_NEUTRINO-PLUGINS)/scripts-sh/plugins/$@/$@.sh $(LIBPLUGINS)/

Loading…
Cancel
Save