diff options
author | Martin Schirrmacher <vdr.skinflatplus@schirrmacher.eu> | 2017-05-06 15:09:28 +0200 |
---|---|---|
committer | Martin Schirrmacher <vdr.skinflatplus@schirrmacher.eu> | 2017-05-06 15:09:28 +0200 |
commit | f11dd9525be2ea461fc9a3bb93d0410f84b97a7b (patch) | |
tree | bdee6e79afa6daa50dde6347584802aa833dec4a /contrib | |
parent | cd60fe82b3c0dd03b92b10cdc3135a0ef57f835a (diff) | |
download | skin-flatplus-f11dd9525be2ea461fc9a3bb93d0410f84b97a7b.tar.gz skin-flatplus-f11dd9525be2ea461fc9a3bb93d0410f84b97a7b.tar.bz2 |
update MV-Themes
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/MV_switch_channellogo.conf | 22 | ||||
-rwxr-xr-x | contrib/MV_switch_channellogo.sh | 107 | ||||
-rwxr-xr-x | contrib/flatPlus_MV_Update.sh | 104 |
3 files changed, 178 insertions, 55 deletions
diff --git a/contrib/MV_switch_channellogo.conf b/contrib/MV_switch_channellogo.conf new file mode 100644 index 00000000..36a6251a --- /dev/null +++ b/contrib/MV_switch_channellogo.conf @@ -0,0 +1,22 @@ +# Kofigurationsdatei für MV_switch_channellogo.sh + +# Pro Zeile ein Kanal/Logo/Zeit +# Trennzeichen ist "|" +# Kanalname|alternatives Logo ohne .png|Zeit in der das alternative Logo aktiv sein soll + +# Beispiel: kanal 1|mein logo|06:00-15:00 + +### Astra 19,2° Ost + +# Comedy Central (17:00-6:00). Default Logo ist VIVA (06:00-17:00) +Comedy Central/VIVA|Comedy Central Germany|17:00-06:00 + +# Nickelodeon HD (06:00-21:00). Alternativ nicknight HD (21:00-06:00) +Nickelodeon HD|Nicknight HD|21:00-06:00 +#Nickelodeon|Nicknight|21:00-06:00 + +### Eurobird 9° Ost + +# Paket: Basis 1: Comedy Central HD (17:00-6:00). Default Logo ist VIVA HD (06:00-17:00) +VIVA/Comedy Central HD|Comedy Central HD|17:00-06:00 + diff --git a/contrib/MV_switch_channellogo.sh b/contrib/MV_switch_channellogo.sh new file mode 100755 index 00000000..d2f22915 --- /dev/null +++ b/contrib/MV_switch_channellogo.sh @@ -0,0 +1,107 @@ +#!/bin/bash + +# MV_switch_channellogo.sh +# Helferskript für das Skin flatPlus! +# Zweck ist, dass Kanallogos abhängig von der Uhrzeit getauscht werden, um z. B. +# bei "Comedy Central/VIVA" Immer das passende Logo anzuzeigen +# Starten beim VDR-Start und per cron.hourly! +VERSION=170214 + +# --- Variablen +LOGO_DIR='/etc/vdr/plugins/skinflatplus/logos' # Pfad zu den Kanallogos +ALT_LOGO_DIR="$LOGO_DIR" # Pfad zu den alternativen Kanallogos +SVDRPSEND='svdrpsend' # VDR's svdrpsend +SELF="$(readlink /proc/$$/fd/255)" || SELF="$0" # Eigener Pfad (besseres $0) +SELF_NAME="${SELF##*/}" # skript.sh +LOGFILE="/var/log/${SELF_NAME%.*}.log" # Log-Datei +MAXLOGSIZE=$((1024*50)) # Log-Datei: Maximale Größe in Byte +NOW="$(date +%s)" # Aktuelle Zeit in Sekunden +DAY_START="$(date +%s --date="0:00")" # 0 Uhr + +# --- Funktionen +f_log() { # Gibt die Meldung auf der Konsole und im Syslog aus + logger -s -t "$SELF_NAME" "$*" + [[ -n "$LOGFILE" ]] && echo "$(date +'%d.%m.%Y %R') [$$] $*" >> "$LOGFILE" # Log in Datei +} + +f_change_logo() { # Logo anpassen + local LOGO_SRC="${1,,}" LOGO_DST="${2,,}" RLFC + [[ $# -lt 1 ]] && return 1 # Benötigt mindestens ein Logo als Parameter + # f_log "f_log [$1] - [${2:-LEER}]" # DEBUG + if [[ $# -eq 1 ]] ; then # Ein Logo = Original Logo aktivieren + if [[ -e "${LOGO_DIR}/${LOGO_SRC}.png.org" ]] ; then + f_log "Aktiviere original Logo ($1)" + mv --force "${LOGO_DIR}/${LOGO_SRC}.png.org" "${LOGO_DIR}/${LOGO_SRC}.png" + RLFC=1 # Altes Logo aus Cache entfernen + fi + else # Alternatives Logo ($2 nicht leer) + if [[ ! -e "${LOGO_DIR}/${LOGO_SRC}.png.org" ]] ; then + f_log "Aktiviere alternatives Logo ($1 -> $2) [${CONF[2]:0:11}]" + cp --force --preserve "${LOGO_DIR}/${LOGO_SRC}.png" "${LOGO_DIR}/${LOGO_SRC}.png.org" # Sichern + cp --force --preserve "${ALT_LOGO_DIR}/${LOGO_DST}.png" "${LOGO_DIR}/${LOGO_SRC}.png" # Alternative + RLFC=1 # Altes Logo aus Cache entfernen + fi + fi + # Aus dem Changelog von flatPlus + # Use svdrp command "RLFC" to remove a logo from cache. Specify logo filename with extension, but without path. + # For example: svdrpsend PLUG skinflatplus RLFC "rtl ii.png" + if [[ -n "$RLFC" ]] ; then + LOGO_SRC="${LOGO_SRC##*/}" # Falls ein "/" enthalten ist nur den letzten Teil verwenden. Bsp.: comedy central/viva -> viva + "$SVDRPSEND" PLUG skinflatplus RLFC "${LOGO_SRC}.png" >/dev/null # Altes Logo aus Cache entfernen + fi +} + +# --- Start +# Suche Konfig im aktuellen Verzeichnis, im Verzeichnis des Skripts und im eigenen etc +CONFIG_DIRS=("." "${SELF%/*}" "${HOME}/etc") ; CONFIG_NAME="${SELF_NAME%.*}.conf" +for dir in "${CONFIG_DIRS[@]}" ; do + CONFIG="${dir}/${CONFIG_NAME}" + if [[ -f "$CONFIG" ]] ; then + mapfile -t < "$CONFIG" # Konfiguration einlesen + CONFLOADED=1 + break # Die erste gefundene Konfiguration wird verwendet + fi +done + +if [[ -z "$CONFLOADED" ]] ; then # Konfiguration wurde nicht gefunden + echo -e "\e[1;41m FEHLER \e[0;1m Keine Konfigurationsdatei gefunden!\e[0m (\"${CONFIG_DIRS[*]}\")" + exit 1 +fi + +# NOW=$(date +%s --date="01:00") ; echo "$NOW" # Test + +# Auswerten der Konfiguration +for i in "${!MAPFILE[@]}" ; do # Kanal|Alternative|Zeit + if [[ "${MAPFILE[$i]:0:1}" == "#" || "${#MAPFILE[$i]}" -eq 0 ]] ; then + unset -v 'MAPFILE[$i]' # Zeile aus der Liste entfernen! + continue # weiter + fi + IFS='|' ; CONF=(${MAPFILE[$i]}) ; unset -v 'IFS' # Zeile in Array + [[ ${#CONF[2]} -lt 11 ]] && { echo "Zeitangabe für ${CONF[0]} fehlerhaft! (${CONF[2]]})" + continue ;} + # echo "Kanal: ${CONF[0]} Alternative: ${CONF[1]} Zeit: ${CONF[2]}" + ST="${CONF[2]:0:5}" ; ET="${CONF[2]:6:5}" # Bsp.: 00:01-12:30 + START="$(date +%s --date="$ST")" ; END="$(date +%s --date="$ET")" + [[ $END -eq $DAY_START ]] && ((END+=60*60*24)) # 24 Stunden dazu (86400) + if [[ $END -lt $START ]] ; then # Bsp.: 20:00-06:00 (Ende am nächsten Tag) + [[ $NOW -gt $START || $NOW -lt $END ]] && ALTLOGO=1 + else # Bsp.: 06:00-20:00 (Ende am gleichen Tag) + [[ $NOW -gt $START && $NOW -lt $END ]] && ALTLOGO=1 + fi + # echo "${CONF[0]} - Zeitspanne: $ST bis $ET [ALT=${ALTLOGO:-0}] ($START $END)" + if [[ $ALTLOGO -eq 1 ]] ; then + # echo "Zwischen $ST und $ET [ALT=${ALTLOGO}] ($START $END)" + f_change_logo "${CONF[0]}" "${CONF[1]}" # Alternatives Logo + else + # echo "Ausserhalb $ST und $ET [ALT=${ALTLOGO}] ($START $END)" + f_change_logo "${CONF[0]}" # Original Logo + fi + unset -v 'ALTLOGO' +done + +if [[ -e "$LOGFILE" ]] ; then # Log-Datei umbenennen, wenn zu groß + FILESIZE="$(stat -c %s "$LOGFILE")" + [[ $FILESIZE -gt $MAXLOGSIZE ]] && mv --force "$LOGFILE" "${LOGFILE}.old" +fi + +exit 0 # Ende diff --git a/contrib/flatPlus_MV_Update.sh b/contrib/flatPlus_MV_Update.sh index a35ea980..262e5910 100755 --- a/contrib/flatPlus_MV_Update.sh +++ b/contrib/flatPlus_MV_Update.sh @@ -2,86 +2,81 @@ # flatPlus_MV_Update.sh # Skript zum Updaten der MV-Themen +VERSION=170319 # Ordner und Dateien -ICONS="icons" ; THEMES="themes" ; DECORS="decors" ; CONFIGS="configs" -PREVIEWS="previews" ; INFO="MV_Themes.INFO" ; HIST="MV_Themes.HISTORY" +ICONS='icons' ; THEMES='themes' ; DECORS='decors' ; CONFIGS='configs' +PREVIEWS='previews' ; INFO='MV_Themes.INFO' ; HIST='MV_Themes.HISTORY' # Ordner für Direktupdate (Im aktuellem Filesystem); Beispiel für Gen2VDR -THEMEDIR="/etc/vdr/themes" -PLUGINDIR="/etc/vdr/plugins/skinflatplus" +THEMEDIR='/etc/vdr/themes' +PLUGINDIR='/etc/vdr/plugins/skinflatplus' ICONDIR="${PLUGINDIR}/icons" DECORDIR="${PLUGINDIR}/decors" CONFIGSDIR="${PLUGINDIR}/configs" PREVIEWDIR="${PLUGINDIR}/previews" -timedout_read() { - timeout="$1" ; varname="$2" ; old_tty_settings="$(stty -g)" - stty -icanon min 0 time "${timeout}0" - read "$varname" - stty "$old_tty_settings" # See man page for "stty." -} +LN='-------------------------------' -_help() { - echo "-------------------------------" +f_help() { + echo "$LN" echo "Falsche(r) Parameter: $*" echo "Aufruf mit ${0##*/}" - echo "Parameter -Silent Keine Abfragen (Silent Update)." - echo "Parameter -Direct Direktes Update der Daten im Filesysten (/etc/vdr)." - echo " !!! Speziell für Gen2VDR angepasst !!!" + echo 'Parameter -Silent Keine Abfragen (Silent Update).' + echo 'Parameter -Direct Direktes Update der Daten im Filesysten (/etc/vdr).' + echo ' !!! Speziell für Gen2VDR angepasst !!!' exit } -### Start + +# --- Start --- # In Skriptordner wechseln (contrib) cd "$(dirname "$0")" # Skript im contrib-Ordner -if [[ ! -d "../$ICONS" || ! -d "../$THEMES" || ! -d "../$DECORS" ]] ; then - echo "Falsches Verzeichnis! Skript muss im ./contrib-Ordner ausgeführt werden" +if [[ ! -d "../${ICONS}" || ! -d "../${THEMES}" || ! -d "../${DECORS}" ]] ; then + echo 'Falsches Verzeichnis! Skript muss im ./contrib-Ordner ausgeführt werden' exit 1 fi if [[ -n "$1" ]] ; then # Parameter wurde übergeben - case $1 in + case "$1" in -Silent) SILENTUPDATE=1 ; echo "Silent Update! ($1)" ;; - -Direct) DIRECTUPDATE=1 ; echo "Direct Update! ($1)" ; unset -v SILENTUPDATE ;; - *) _help "$@" + -Direct) DIRECTUPDATE=1 ; echo "Direct Update! ($1)" ; unset -v 'SILENTUPDATE' ;; + *) f_help "$@" ;; esac fi # MV_Themes Löschen! if [[ -z "$SILENTUPDATE" ]] ; then - echo "-------------------------------" - [[ -n "$DIRECTUPDATE" ]] && echo "ACHTUNG: Dateien in /etc werden gelöscht!" - echo "MV_Themen löschen? (J/n)" - timedout_read 5 TASTE + echo "$LN" + [[ -n "$DIRECTUPDATE" ]] && echo 'ACHTUNG: MV_Themen in /etc werden gelöscht!' + read -p 'MV_Themen löschen? (J/n)' -t 5 TASTE if [[ "${TASTE^^}" == "N" ]] ; then - echo "Skript abgebrochen. Es wurde nichts gelöscht!" + echo 'Skript abgebrochen. Es wurde nichts gelöscht!' exit fi fi if [[ -n "$DIRECTUPDATE" ]] ; then # Löschen im Dateisystem (/etc) - [[ -d "$ICONDIR" ]] && rm -rf ${ICONDIR}/MV* - [[ -d "$THEMEDIR" ]] && rm -f ${THEMEDIR}/flatPlus-MV* - [[ -d "$DECORDIR" ]] && rm -f ${DECORDIR}/*MV* - [[ -d "$CONFIGSDIR" ]] && rm -f ${CONFIGSDIR}/*MV* - [[ -d "$PREVIEWDIR" ]] && rm -f ${PREVIEWDIR}/*MV* + [[ -d "$ICONDIR" ]] && rm -rf "${ICONDIR}"/MV* + [[ -d "$THEMEDIR" ]] && rm -f "${THEMEDIR}"/flatPlus-MV* + [[ -d "$DECORDIR" ]] && rm -f "${DECORDIR}"/*MV* + [[ -d "$CONFIGSDIR" ]] && rm -f "${CONFIGSDIR}"/*MV* + [[ -d "$PREVIEWDIR" ]] && rm -f "${PREVIEWDIR}"/*MV* else # Löschen im Source-Dir von skinflatPlus - rm -rf ../${ICONS}/MV* - rm -f ../${THEMES}/flatPlus-MV* - rm -f ../${DECORS}/*MV* - rm -f ../${INFO} ../${HIST} - rm -f ../${CONFIGSDIR}/*MV* - rm -f ../${PREVIEWDIR}/*MV* + rm -rf ../"${ICONS}"/MV* + rm -f ../"${THEMES}"/flatPlus-MV* + rm -f ../"${DECORS}"/*MV* + rm -f ../"${INFO}" ../"${HIST}" + rm -f ../"${CONFIGS}"/*MV* + rm -f ../"${PREVIEWS}"/*MV* fi -echo "MV-Themen wurden entfernt." +echo 'MV-Themen wurden entfernt.' # MV_Themes neu laden if [[ -z "$SILENTUPDATE" ]] ; then - echo "-------------------------------" - echo "MV_Themes neu herunterladen und entpacken? (J/n)" - timedout_read 5 TASTE + echo "$LN" + read -p 'MV_Themes neu herunterladen und entpacken? (J/n)' -t 5 TASTE [[ "${TASTE^^}" == "N" ]] && exit fi @@ -89,37 +84,36 @@ cd .. # In das Source-Verzeichnis von SkinFlatPlus # Download [[ -n "$DIRECTUPDATE" ]] && cd /tmp -wget "https://dl.dropboxusercontent.com/u/1490505/VDR/skinflatplus/MV_Themes.tar.xz" +wget "https://www.dropbox.com/s/c5mh4g2qonjs25r/MV_Themes.tar.xz" tar -xJf MV_Themes.tar.xz # Entpacken rm -f MV_Themes.tar.xz # Archiv entfernen if [[ -n "$DIRECTUPDATE" ]] ; then - cp -f ${THEMES}/flatPlus-MV* $THEMEDIR - cp -f ${DECORS}/*MV* $DECORDIR - cp -rf ${ICONS}/MV* $ICONDIR - cp -f ${CONFIGS}/*MV* $CONFIGSDIR - cp -f ${PREVIEWDIR}/*MV* $PREVIEWDIR + cp -f "${THEMES}"/flatPlus-MV* "$THEMEDIR" + cp -f "${DECORS}"/*MV* "$DECORDIR" + cp -rf "${ICONS}"/MV* "$ICONDIR" + cp -f "${CONFIGS}"/*MV* "$CONFIGSDIR" + cp -f "${PREVIEWS}"/*MV* "$PREVIEWDIR" fi -echo "-------------------------------" -echo "MV-Themen wurden aktualisiert." +echo "$LN" +echo 'MV-Themen wurden aktualisiert.' [[ -n "$DIRECTUPDATE" ]] && exit if [[ -z "$SILENTUPDATE" ]] ; then - echo "-------------------------------" - echo "MV_Themen installieren (make install)? (j/N)" - timedout_read 5 TASTE + echo "$LN" + read -p 'MV_Themen installieren (make install)? (j/N)' -t 5 TASTE if [[ "${TASTE^^}" == "J" ]] ; then #cd .. make install - echo "-------------------------------" - echo "MV-Themen wurden installiert." + echo "$LN" + echo 'MV-Themen wurden installiert.' fi else # Silentupdate - Themen instalieren make install fi -echo "-------------------------------" +echo "$LN" exit |