Dateien nach "/" hochladen

This commit is contained in:
sascha 2024-08-18 12:39:38 +02:00
commit c58aa04ea5
5 changed files with 293 additions and 0 deletions

60
episodes2mkv.sh Normal file
View File

@ -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"

64
ts2mkv.sh Normal file
View File

@ -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"

73
ts2mpg.sh Normal file
View File

@ -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"

34
tscheck.sh Normal file
View File

@ -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 <filename>"
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

62
tvshow2mkv.sh Normal file
View File

@ -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;