diff --git a/convert.sh b/convert.sh index 0b64402..27c535b 100755 --- a/convert.sh +++ b/convert.sh @@ -1,27 +1,156 @@ #!/bin/bash -# Check if the converterfile exists -if [ ! -f $PWD/video_formats.json ] +######## +# Init Variables +# Available Environment Variables: + +# VIDEO_FORMATS_LOCATION: Pass a location to a different json file holding video convert configurations +# VIDEO_LOCATION: Pass a location to a different folder which holds the videos +# VIDEO_FORMATS: Pass all video formats which should trigger the conversion, seperated by ":". Example: .mp4:.wmv +# VIDEO_FFMPEG_PATH: Path to ffmpeg executable +######## + +######## +# Environment variables as a base +######## + +# Video formats location +if [ -n $VIDEO_FORMATS_LOCATION ] then + video_formats_location=$VIDEO_FORMATS_LOCATION +fi + +# Video location +if [ -n $VIDEO_LOCATION ] +then + video_location=$VIDEO_LOCATION +fi + +# All video formats +if [ -n $VIDEO_FORMATS ] +then + video_formats=$VIDEO_FORMATS +fi + +# ffmpeg executable +if [ -n $VIDEO_FFMPEG_PATH ] +then + video_ffmpeg_path=$VIDEO_FFMPEG_PATH +fi + +######## +# Passed Options, any passed option will overwrite a previously set environment variable +######## + +while getopts ":c:p:v:p:h" opt; do + case $opt in + c) + video_formats_location=$OPTARG + ;; + p) + video_location=$OPTARG + ;; + v) + video_formats=$OPTARG + ;; + f) + video_ffmpeg_path=$OPTARG + ;; + h) + echo "AVAILABLE OPTIONS: + +-c: Video Formats Location. Pass a path with a JSON config file for conversion. Defaults to 'video_formats.json' in current folder. +-p: Video Location. Pass a location to a different folder which holds the videos. Defaults to currents folder. +-v: Video Formats. Pass all video formats which should trigger the conversion, seperated by ':'. Example: .mp4:.wmv +-f: Path to ffmpeg executable. Defaults to 'ffmpeg' +-h: Print this help message. + +ENVIRONMENT VARIABLES: +All settings can also be done via environment variables. However, a passed option will overwrite a previously set environment variable. + +VIDEO_FORMATS_LOCATION: Pass a location to a different json file holding video convert configurations +VIDEO_LOCATION: Pass a location to a different folder which holds the videos +VIDEO_FORMATS: Pass all video formats which should trigger the conversion, seperated by ':. Example: .mp4:.wmv +VIDEO_FFMPEG_PATH: Path to ffmpeg executable + +Copyright 2017 K. Langenberg +Licensed under GNU GPLv3" + exit 0 + ;; + \?) + echo "Invalid option: -$OPTARG. Use -h to print all available options." >&2 + exit 1 + ;; + :) + echo "Option -$OPTARG requires an argument. Use -h to print all available options." >&2 + exit 1 + ;; + esac +done + +######## +# Defaults +######## + +# Video Formats Location +if [ -z $video_formats_location ] +then + video_formats_location=$PWD/video_formats.json +fi + +# Video Location +if [ -z $video_location ] +then + video_location=$PWD +fi + +# Video Formats +if [ -z $video_formats ] +then + video_formats='.mp4' +fi + +# Default ffmpeg path +if [ -z $video_ffmpeg_path ] +then + video_ffmpeg_path=ffmpeg +fi + +######## +# Checks +######## +# Check if the converterfile exists +if [ ! -f $video_formats_location ] +then + echo "Video Formats .json file ($video_formats_location) does not exist!" exit 1; fi -# Loop through our convertfile and convert the video -videoformats=$(