Hallo Forum,
ich habe etwas Code zusammengeschrieben, um MP4-Dateien von den Mediatheken der ÖRR in .ts Dateien umzuwandeln und diese dann in das Aufnahmeverzeichnis des VDR zu kopieren. Ich starte das Skript über cron alle 15 Minuten. Das Verschieben der gewandelten Dateien, in das Aufnahmeverzeichnis, übernimmt ebenfalls ein Cronjob der nur während bestimmten Zeiten läuft. Über Rückmeldungen würde ich mich freuen.
#-----------------------------------------------------------------------
#------------------------ Verzeichnisse --------------------------------
#Verzeichnis fuer die downgeloadeten mp4 Dateien
QUELLVERZEICHNIS="/ext/lw_1/filme"
#Aufnahmeverzeichnis des VDR
ZIELVERZEICHNIS="/ext_lw/tvaufnahmen/Mediathek"
#Hier werden die Original hierhin verschoben
SICHER_QUELLE="/ext/lw_1/sicher_quelle"
#Hier werden die konvertierten Datein zwischengespeichert
KONVERT_FERTIG="/ext/lw_1/fert_konv"
#Dieses Verzeichnis wird zum konvertieren benoetigt
KONVERT_TMP="/ext/lw_1/temp_konvert"
#Lockdatei
LOCKFILE="/var/lock/konvert"
#Logdatei
LOG_DATEI="/var/log/konvert"
#-----------------------------------------------------------------------
#----------------------- Variablen ------------------------------------
SENDER_OERR="3Sat ARD ARD-ALPHA BR DW FUNK.NET KIKA ONE ORF PHOENIX ARTE.DE RBTV SRF SWR WDR ZDF-TIVI ARD.DE ZDF MDR NDR RBB SR HR"
SORT_VAR="Sender Thema Titel Datum Zeit Dauer Groesse Website http Url"
#Index 1 2 3 4 5 6 7 8 9 10
#-----------------------------------------------------------------------
#----------------------- Funktionen -----------------------------------
#Log schreiben mit automatischem Datum
function LOG(){
echo "$(date '+%Y-%m-%d %H:%M') ${1}" >> ${LOG_DATEI}
}
#-----------------------------------------------------------------------
#----------------------- Programmstart --------------------------------
#-----------------------------------------------------------------------
#Skript darf nur als root ausgefuehrt werden"
if [ ! "$(whoami)" = "root" ]; then
LOG "Skript laeuft nicht als root"
exit 0
fi
#-----------------------------------------------------------------------
#Skript darf nur einmal ausgefuehrt werden
if [ -f ${LOCKFILE} ]; then
exit 0
fi
touch ${LOCKFILE}
#-----------------------------------------------------------------------
#Erstellen der Log-Datei
if [ ! -f ${LOG_DATEI} ]; then
touch ${LOG_DATEI}
LOG "Erstelle ${LOG_DATEI}"
fi
#-----------------------------------------------------------------------
#Auslesen der mp4 Dateien, $i Kompletter Pfad und Dateiname .mp4
for i in $(ls ${QUELLVERZEICHNIS}/*.mp4); do
LOG "Bearbeite $i"
TXT_DATEI=$(echo ${i%.*}.txt)
#-----------------------------------------------------------------------
#Erstellen der INFO-Datei fuer Oeffentlich Rechtlichen wenn
#die mp4- und die dazugehoerige txt-Datei vorhaden
if [ -f "${i}" ] && [ -f "${TXT_DATEI}" ]; then
LOG "mp4 und txt Dateien vorhanden"
#Filter den Sendernamen aus der akt. txt Datei
SENDER=$(grep -i "sender" ${TXT_DATEI}|cut -d":" -f2|sed 's/^[[:space:]]*//')
LOG "Erkannter Sender in TXT-Datei = $SENDER"
for j in ${SENDER_OERR}; do
#Wenn Sendername in Datei und Variable gleich
if [ "${SENDER}" = "${j}" ]; then
LOG "OER Sender $SENDER erkannt"
#-----------------------------------------------------------------------
TEXT=""
while read line; do
if [ ! -z "${line}" ];then
ERKANNT=0
#Es werden von jeder Zeile, die eigelesen wird, die Sonderzeichen umgewandelt
line=$(echo ${line} | sed -e 's/\ö/oe/g' -e 's/\Ä/Ae/g' -e 's/\ä/ae/g' -e 's/\Ö/Oe/g' -e 's/\Ü/Ue/g' -e 's/\ü/ue/g' -e 's/\ß/ss/g')
#Wenn ein : in der Zeile dann Teilung und Zuordnung
if [ "$(echo ${line}|grep :)" ];then
TEIL1=$(echo ${line}|cut -d":" -f1|sed 's/^[[:space:]]*//')
TEIL2=$(echo ${line}|cut -d":" -f2-|sed 's/^[[:space:]]*//')
#Stringinhalt zuordnen
ZAEHLER=0
for k in ${SORT_VAR}; do
if [[ $TEIL1 =~ $k ]]; then
INFO[${ZAEHLER}]=$TEIL2
ERKANNT=1
fi
ZAEHLER=$(($ZAEHLER+1))
done
fi
if [[ ! $line =~ "Url" ]] && [ ${ERKANNT} -eq 0 ] ; then
TEXT=$(echo "$TEXT|${line}")
#Leerzeichen am Ende und am Anfang abschneiden
TEXT=$(echo ${TEXT}|sed 's/^[[:space:]]*//')
fi
fi
done < ${TXT_DATEI}
LOG "TXT Datei bearbeitet"
#-----------------------------------------------------------------------
#-----------------------------------------------------------------------
ZUFALL=$(( RANDOM % 4294967292 + 1 ))
TITEL=$(echo ${INFO[2]}|sed 's/ /_/g'|sed 's/[^0-9a-zA-Z\_\]*//g')
THEMA=$(echo ${INFO[1]}|sed 's/ /_/g'|sed 's/[^0-9a-zA-Z\_\]*//g')
DATUM="$(echo ${INFO[3]}|cut -d'.' -f3)-$(echo ${INFO[3]}|cut -d'.' -f2)-$(echo ${INFO[3]}|cut -d'.' -f1)"
ZEIT="$(echo ${INFO[4]}|cut -d':' -f2).$(echo ${INFO[4]}|cut -d':' -f1).5-0"
UNIX_TIME=$(date -d "${DATUM} 20:15" +%s)
KONV_VERZ="${KONVERT_TMP}/${TITEL}_${THEMA}/${DATUM}.${ZEIT}.rec"
if [ -d ${KONV_VERZ} ]; then
rm -R ${KONV_VERZ}
LOG "Verzeichnis ${KONV_VERZ}, Verz wird geloescht"
fi
VERSCH_VERZ="${KONVERT_TMP}/${TITEL}_${THEMA}"
LOG "Erstelle Verzeichnis ${KONV_VERZ}"
mkdir -p ${KONV_VERZ}
LOG "Erstelle Datei ${KONV_VERZ}/info"
touch ${KONV_VERZ}/info
#-----------------------------------------------------------------------
LOG "Kovertiere ${i} nach ${KONV_VERZ}/00001.ts"
ffmpeg -i ${i} -c copy ${KONV_VERZ}/00001.ts
#-----------------------------------------------------------------------
if [ $? = "0" ]; then
LOG "Konvertierung erfolgreich"
DAUER_GE=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 $i)
DAUER_GE=(${DAUER_GE%.*})
LOG "Dauer gesamt = ${DAUER_GE}"
GROESSE=$(ls -lh ${KONV_VERZ}/00001.ts | awk '{print $5}')
LOG "GROESSE= ${GROESSE}"
BILDWF=$(ffprobe -v error -select_streams v:0 -show_entries stream=avg_frame_rate -of default=noprint_wrappers=1:nokey=1 ${i})
BILDWF=(${BILDWF%/*})
LOG "FRAMES = ${BILDWF}"
#-----------------------------------------------------------------------
# INFO Datei erstellen
echo "C ${INFO[0]}" > ${KONV_VERZ}/info
echo "E ${ZUFALL} ${UNIX_TIME} ${DAUER_GE}" >> ${KONV_VERZ}/info
echo "T ${INFO[2]}" >> ${KONV_VERZ}/info
echo "S ${INFO[3]}" >> ${KONV_VERZ}/info
echo "D ${TEXT}" >> ${KONV_VERZ}/info
echo "F ${BILDWF}" >> ${KONV_VERZ}/info
echo "P 99" >> ${KONV_VERZ}/info
echo "L 99" >> ${KONV_VERZ}/info
#-----------------------------------------------------------------------
LOG "Fuehre genindex aus"
vdr --genindex=${KONV_VERZ}
#-----------------------------------------------------------------------
LOG "Verschiebe Dateien ${i} nach ${SICHER_QUELLE}"
mv ${i} ${SICHER_QUELLE}
mv ${TXT_DATEI} ${SICHER_QUELLE}
LOG "Verschiebe Datei ${VERSCH_VERZ} nach ${KONVERT_FERTIG}"
mv ${VERSCH_VERZ} ${KONVERT_FERTIG}
LOG "---------------------------------------------"
LOG " "
else
LOG "Konvertierung NICHT erfolgreich"
fi
fi
done
fi
done
#-----------------------------------------------------------------------
rm ${LOCKFILE}