media-center-setup/utilities/video-info.sh

99 lines
2.8 KiB
Bash

#/bin/sh
CURRENT_DATE=$(date +%Y%m%d_%H%M)
bold=$(tput bold)
normal=$(tput sgr0)
# $1 = video file / $2 = result file
get_mediainfo() {
echo "Processing " "$1" "..."
echo -ne "\" "$1" \", " >> "$2"
mediainfo --Inform="Video;%Format%, %Format_Profile%, %CodecID%" "$1" >> "$2"
}
gather_data() {
echo "Gathering data..."
echo "Test path => " "$1"
RESULT_PATH=./$1/videoinfo-"$CURRENT_DATE".csv
PWD=$(pwd $1)/$1
echo "$PWD"
echo "$RESULT_PATH"
echo "$PWD" >> "$RESULT_PATH"
echo 'File, Format, Format Profile, Codec ID' >> "$RESULT_PATH"
find "$1" -type f \( -iname \*.mkv -o -iname \*.mp4 -o -iname \*.avi \) | while read file;
do
get_mediainfo "$(pwd $1)/$file" "$RESULT_PATH"
done
echo "Finished! Result file is located at ${bold}$RESULT_PATH${normal}."
exit
}
gather_data_continue() {
echo "Continue gather data of file ${bold}$1${normal}..."
LAST_LINE=$(tail -n 1 $1)
LAST_FILE=$(echo $LAST_LINE | sed 's/^\"\(.*\)\".*$/\1/g')
# where to find the files...
FIRST_LINE=$(head -n 1 $1)
# remove last line of file (might print error on WSL, hence the error suppression)
sed -i '$d' $1 2>/dev/null
FOUND_FILE=0
find $FIRST_LINE -type f \( -iname \*.mkv -o -iname \*.mp4 -o -iname \*.avi \) | while read file;
do
if [[ $file == $LAST_FILE ]]; then
FOUND_FILE=1
fi
if [[ $FOUND_FILE == 1 ]]; then
get_mediainfo "$file" $1
fi
done
echo "Finished! Result file is located at ${bold}$1${normal}."
}
continue_gather() {
if [[ $1 == "" ]]; then
echo "No input file. Please input CSV file generated by this program."
elif [[ -f $1 ]]; then
gather_data_continue $1
else
echo "File ${bold}$1${normal} does not exist."
fi
}
show_usage() {
echo -e "This tool generates a CSV file with useful video data\n"
echo -e "Options:"
echo -e "./video-info.sh [-h, --help]"
echo -e "\t\tDisplays help and usage.\n"
echo -e "./video-info.sh DIRECTORY"
echo -e "\t\tCreates a CSV file from all the video files from the directory.\n"
echo -e "./video-info.sh [-c, --continue] FILE"
echo -e "\t\tIf the gathering was interrupted, use this option to resume."
echo -e "\t\tTakes the incompletely generated CSV file as a parameter.\n"
echo -e "There are some limitations as this is a pretty simple tool. If you have any issue,"
echo -e "please read the README file."
}
if [[ $1 == "" ]] || [[ $1 == "--help" ]] || [[ $1 == "-h" ]]; then
show_usage
exit
elif [[ $1 == "-c" ]] || [[ $1 == "--continue" ]]; then
continue_gather $2
else
if [[ -d $1 ]]; then
echo "Gather data"
gather_data "$1"
else
echo -e "Directory ${bold}$1${normal} does not exist. Showing usage...\n"
show_usage
fi
fi