commit c58aa04ea583d9633f03a97a04c0999368a8e283 Author: sascha Date: Sun Aug 18 12:39:38 2024 +0200 Dateien nach "/" hochladen diff --git a/episodes2mkv.sh b/episodes2mkv.sh new file mode 100644 index 0000000..3acf66a --- /dev/null +++ b/episodes2mkv.sh @@ -0,0 +1,60 @@ +if [ "$#" -ne 2 ]; then + echo "usage episodes2mkv.sh [path to vdr recording] [path to movies]"; + exit 1; +fi + +if [ ! -d "$1" ]; then + echo "vdr recording directory not valid: $1"; + exit 1; +fi + +if [ ! -d "$2" ]; then + echo "movie directory not valid: $2"; + exit 1; +fi + +echo "vdr recordings directory: $1"; +echo "movie directory: $2"; + +echo `pwd` + +readarray -t LINES < "$1/episodes.lst" + +echo "lines ${#LINES[@]}"; + +FILE_LIST="$1/episodes.lst" +for LINE in "${LINES[@]}"; do +#while IFS= read -r LINE +#do + echo "processing '$LINE'"; + cd "$1/$LINE"; + MOVIENAME=$(sed -n -e 's/^T \(.*\)$/\1/p' info); + EPISODE=$(sed -n -e 's/^S \(.*\)$/\1/p' info); + BASE_PATH="$2/$MOVIENAME/$EPISODE" + DEST_NAME="$2/$MOVIENAME/$EPISODE.mkv" + TRIMMED_NAME="$MOVIENAME.trimmed.ts" + if [ ! -f "$DEST_NAME" ]; then + echo "converting $MOVIENAME - $EPISODE"; + STAMPS=($(sed -n -e 's/^\([0-9:]\+.[0-9]\{2\}\).*$/\1/p' marks)) + if [ "${#STAMPS[@]}" -ne "2" ]; then + echo "more than two cut marks found; skipping"; + echo "${#STAMPS[@]}"; + exit 1; + fi; + echo ${STAMPS[0]} + echo ${STAMPS[1]} + FILENAMES=$(ls *.ts | paste -sd "|" -); +# if [ ! -d "$2/$MOVIENAME" ]; then +# echo mkdir "$2/$MOVIENAME"; +# fi + if [ ! -f "$TRIMMED_NAME" ]; then + echo ffmpeg -i "concat:$FILENAMES" -ss ${STAMPS[0]} -to ${STAMPS[1]} -c:v copy -c:a copy "$TRIMMED_NAME"; + ffmpeg -nostdin -i "concat:$FILENAMES" -ss ${STAMPS[0]} -to ${STAMPS[1]} -c:v copy -c:a copy "$TRIMMED_NAME"; + fi + echo ffmpeg -i "$TRIMMED_NAME" -c:v libx264 -c:a copy "'$EPISODE.mkv'"; + ffmpeg -nostdin -i "$TRIMMED_NAME" -c:v libx264 -c:a copy "$EPISODE.mkv"; + else + echo "video file $DEST_NAME already exists; skipping"; + fi + cd -; +done < "$FILE_LIST" diff --git a/ts2mkv.sh b/ts2mkv.sh new file mode 100644 index 0000000..aa482b4 --- /dev/null +++ b/ts2mkv.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +if [ "$#" -ne 2 ]; then + echo "usage ts2mkv.sh [path to vdr recording] [path to movies]"; + exit 1; +fi + +if [ ! -d "$1" ]; then + echo "vdr recording directory not valid: $1"; + exit 1; +fi + +if [ ! -d "$2" ]; then + echo "movie directory not valid: $2"; + exit 1; +fi + +echo "vdr recordings directory: $1"; +echo "movie directory: $2"; + +echo "changing into vdr recordings directory '$1'"; +cd $1; + +echo `pwd` + +FILE_LIST="$1/tomkv.lst" +while IFS= read -r LINE +do + echo "processing directory '$LINE'"; + cd "$LINE"; + for j in *.rec; do + cd $j; + MOVIENAME=$(sed -n -e 's/^T \(.*\)$/\1/p' "info"); + DEST_NAME="$2/$MOVIENAME/$MOVIENAME.mkv" + TRIMMED_NAME="$MOVIENAME.trimmed.ts" + if [ ! -f "$DEST_NAME" ]; then + echo "converting $MOVIENAME"; + STAMPS=($(sed -n -e 's/^\([0-9:]\+.[0-9]\{2\}\).*$/\1/p' "marks")) + if [ "${#STAMPS[@]}" -ne "2" ]; then + echo "more than two cut marks found; skipping"; + echo "${#STAMPS[@]}"; + cd ..; + continue; + fi; + echo "trimming form ${STAMPS[0]} to ${STAMPS[1]}"; + FILENAMES=$(ls *.ts | paste -sd "|" -); + if [ ! -f "$TRIMMED_NAME" ]; then + echo ffmpeg -nostdin -i "concat:$FILENAMES" -ss ${STAMPS[0]} -to ${STAMPS[1]} -c:v copy -c:a copy "$TRIMMED_NAME"; + ffmpeg -nostdin -i "concat:$FILENAMES" -ss ${STAMPS[0]} -to ${STAMPS[1]} -c:v copy -c:a copy "$TRIMMED_NAME"; + fi + + if [ ! -d "$2/$MOVIENAME" ]; then + mkdir "$2/$MOVIENAME"; + fi + + echo ffmpeg -nostdin -i "$TRIMMED_NAME" -c:v libx264 -c:a copy "$DEST_NAME"; + ffmpeg -nostdin -i "$TRIMMED_NAME" -c:v libx264 -c:a copy "$DEST_NAME"; + else + echo "video file $DEST_NAME already exists; skipping"; + fi + cd ..; + done; + cd ..; +done < "$FILE_LIST" diff --git a/ts2mpg.sh b/ts2mpg.sh new file mode 100644 index 0000000..bc32aaf --- /dev/null +++ b/ts2mpg.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +if [ "$#" -ne 2 ]; then + echo "usage ts2mp4.sh [path to vdr recordings] [path to movies]"; + exit 1; +fi + +if [ ! -d $1 ]; then + echo "vdr recordings directory not valid: $1"; + exit 1; +fi + +if [ ! -d $2 ]; then + echo "movie directory not valid: $2"; + exit 1; +fi + +echo "vdr recordings directory: $1"; +echo "movie directory: $2"; + +echo "changing into vdr recordings directory '$1'"; +cd $1; + +echo `pwd` + +FILE_LIST="$1/tompg.lst" +while IFS= read -r LINE +do + echo "processing '$LINE'"; + cd "$LINE"; + for j in *.rec; do + cd $j; + BASENAME=00001; + INFO_FILE=info + if [ -f 001.vdr ]; then + BASENAME=001; + INFO_FILE=info.vdr + fi + MOVIENAME=$(sed -n -e 's/^T \(.*\)$/\1/p' $INFO_FILE); + if [ ! -f "$2/$MOVIENAME/$MOVIENAME.mkv" ]; then + echo `pwd` + + echo "BN $BASENAME" + echo "demuxing $MOVIENAME" + if [ $BASENAME == "001" ]; then + FILENAMES=$(ls 00*.vdr | paste -sd " " -); + else + FILENAMES=$(ls *.ts | paste -sd " " -); + fi + projectx -demux $FILENAMES -name $BASENAME -cut marks.bytepos + + echo "converting $MOVIENAME"; + + if [ ! -d "$2/$MOVIENAME" ]; then + mkdir "$2/$MOVIENAME"; + fi + + if [ -f "$BASENAME.ac3" ]; then + echo "mplex -f 8 -o \"$MOVIENAME.mpg\" $BASENAME.ac3 $BASENAME.mp2 $BASENAME.m2v"; + mplex -f 8 -o "$MOVIENAME.mpg" $BASENAME.ac3 $BASENAME.mp2 $BASENAME.m2v; + else + echo "mplex -f 8 -o \"$MOVIENAME.mpg\" $BASENAME.mp2 $BASENAME.m2v"; + mplex -f 8 -o "$MOVIENAME.mpg" $BASENAME.mp2 $BASENAME.m2v; + fi + echo "ffmpeg -nostdin -i \"$MOVIENAME.mpg\" -c:v libx264 -c:a aac \"$2/$MOVIENAME/$MOVIENAME.mkv\""; + ffmpeg -nostdin -i "$MOVIENAME.mpg" -c:v libx264 -c:a aac "$2/$MOVIENAME/$MOVIENAME.mkv"; + else + echo "video file $MOVIENAME.mkv already exists; skipping"; + fi + cd ..; + done; + cd ..; +done < "$FILE_LIST" diff --git a/tscheck.sh b/tscheck.sh new file mode 100644 index 0000000..df09ef1 --- /dev/null +++ b/tscheck.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# Check if ffprobe is installed +if ! command -v ffprobe >/dev/null 2>&1; then + echo "ffprobe is not installed. Please install it to run this script." + exit 1 +fi + +# Check if a filename is provided as an argument +if [ $# -ne 1 ]; then + echo "Usage: $0 " + exit 1 +fi + +filename=$1 + +# Use ffprobe to get the video stream information +video_info=$(ffprobe -v quiet -show_streams -select_streams v "$filename") + +# Check if the video_info variable is empty +if [ -z "$video_info" ]; then + echo "No video stream found in the input file." + exit 1 +fi + +# Search for the video resolution in the video stream information +resolution=$(echo "$video_info" | grep -oP "(?<=^width=)\d+" | head -1) + +# Check if the resolution is greater than or equal to 1280x720 +if [ "$resolution" -ge 1280 ] && [ "$resolution" -ge 720 ]; then + echo "The file contains HD content." +else + echo "The file does not contain HD content." +fi diff --git a/tvshow2mkv.sh b/tvshow2mkv.sh new file mode 100644 index 0000000..de0fe49 --- /dev/null +++ b/tvshow2mkv.sh @@ -0,0 +1,62 @@ +if [ "$#" -ne 2 ]; then + echo "usage tvshow2mkv.sh [path to vdr recording] [path to tvshows]"; + exit 1; +fi + +if [ ! -d "$1" ]; then + echo "vdr recording directory not valid: $1"; + exit 1; +fi + +if [ ! -d "$2" ]; then + echo "movie directory not valid: $2"; + exit 1; +fi + +echo "vdr recordings directory: $1"; +echo "movie directory: $2"; + +cd "$1"; + +echo `pwd` + +for j in *.rec; do + + cd $j; + SHOWNAME=$(sed -n -e 's/^T \(.*\)$/\1/p' info); + EPISODE=$(sed -n -e 's/^S \(.*\)$/\1/p' info); + + echo "Converting $SHOWNAME - $EPISODE"; + + OUTPUT_PATH="$2/$SHOWNAME"; + OUTPUT_MKV_NAME="$EPISODE.mkv"; + OUTPUT_MPG_NAME="$EPISODE.mpg"; + + if [ ! -d "$OUTPUT_PATH" ]; then + echo "creating output path $OUTPUT_PATH"; + mkdir "$OUTPUT_PATH"; + fi + + if [ -f "$OUTPUT_PATH/$OUTPUT_MKV_NAME" ]; then + echo "Episode $EPISODE already decoded"; + continue; + elif [ ! -f "$OUTPUT_PATH/$OUTPUT_MPG_NAME" ]; then + BASENAME=00001; + + echo "projectx -demux 00001.ts -name 00001 -cut marks.bytepos" + projectx -demux 00001.ts -name 00001 -cut marks.bytepos + + if [ -f "$BASENAME.ac3" ]; then + echo "mplex -f 8 -o \"$OUTPUT_PATH/$EPISODE.mpg\" $BASENAME.ac3 $BASENAME.mp2 $BASENAME.m2v"; + mplex -f 8 -o "$OUTPUT_PATH/$EPISODE.mpg" $BASENAME.ac3 $BASENAME.mp2 $BASENAME.m2v; + else + echo "mplex -f 8 -o \"$OUTPUT_PATH/$EPISODE.mpg\" $BASENAME.mp2 $BASENAME.m2v"; + mplex -f 8 -o "$OUTPUT_PATH/$EPISODE.mpg" $BASENAME.mp2 $BASENAME.m2v; + fi + fi + + echo "converting to mkv"; + ffmpeg -i "$OUTPUT_PATH/$OUTPUT_MPG_NAME" -c:v libx264 -c:a aac "$OUTPUT_PATH/$OUTPUT_MKV_NAME" + + cd ..; +done;