#!/usr/bin/env bash error() { >&2 printf "\e[31mE\e[0m %s\n" "$1" } die() { error "$*" exit 1 } # shellcheck disable=SC2317 process_args() { while :; do case $1 in -l|--label) key_label="$2" shift ;; -r|--recorder) recorder_label="$2" shift ;; *) break esac shift done } mount_device() { local label="$1" local unmount="${2:-0}" local device if [[ $unmount -eq 1 ]]; then printf "Unm" else printf "M" fi printf "ount device with Label %s\n" "$label" device="/dev/$(lsblk -o KNAME,LABEL | grep "${label}" | awk '{print $1}')" # check is we found a device with this name if [[ $device = "/dev/" ]]; then error "Can't get device named $label is device plugged?" return 1 fi local command if [[ $unmount -eq 1 ]]; then command="unmount" else command="mount" fi if ! udisksctl "${command}" -b "${device}"; then error " -> Error mounting device $device for $label" return 1 fi sleep 1 return 0 } get_file_hash() { local file local file_size file=$1 file_size=${2:-1} if (( file_size != -1 )) then if [ -f "$file" ] then if (( file_size > 0 )) then if (( file_size > 2000000 )) then #calculate local tmp_file tmp_file=mktemp head -c 1MB "$file" > "$tmp_file" tail -c 1MB "$file" >> "$tmp_file" printf "%s" "$(md5sum "$tmp_file" | cut -d" " -f 1)" rm "$tmp_file" else printf "%s" "$(md5sum "$file" | cut -d" " -f 1)" fi return fi fi fi printf "%s" -1 } move_file(){ local source="$1" local destination="$2" printf "Move %s to %s:\n" "$source" "$destination" if [[ ! -d "${destination%/*}" ]]; then error "$destination directory does not exists" return 1 fi if ! mv "$source" "$destination"; then error "Error moving $source file, file must not exists" return 1 fi return 0 } get_file_size() { local file file=$1 if [ -f "$file" ] then wc -c < "$file" return fi printf "%s" -1 } insert_media() { local filename filesize filehash tag filename="$1" tag="$2" [ ! -f "$filename" ] && { error "File $filename not found, can't insert media"; return; } [ -z "$tag" ] && { error "Tag not defined, can't insert media" } filesize=$(get_file_size "$filename") filehash=$(get_file_hash "$filename" "$filesize") sed -i -e "s#\[\[${tag}\]\]#${filename}#g" \ -e "s#\[\[${tag}_filesize\]\]#${filesize}#g" \ -e "s#\[\[${tag}_filehash\]\]#${filehash}#g" \ "${folder}/montage.kdenlive" || { error "sed command error on insert media!" } } base_dir="${HOME}/medias/videos/sambab" conf="$*" key_label=${key_label:-SAMBAB} recorder_label=${recorder_label:-"LS-100"} printf "Creation de la conférence de %s\n" "$conf" cd ~/medias/videos/sambab || exit 1 #Get las friday date for creating folder friday=$(date --date='last Friday' +"%Y.%m.%d") #Add basedir, then I have my directory folder="${base_dir}/${friday}-${conf// /_}" # create it mkdir "${folder}/"{rushes,audio,titles} -p || die "folder creation failed" cp "${base_dir}/logo_amis.svg" "${folder}/titles" || die "SVG copy failed!" cp "${base_dir}/template.kdenlive" "${folder}/montage.kdenlive" || die "Template copy failed!" inkscape_date=$(LC_ALL=fr_FR.UTF-8 date --date='last Friday' +"%A %d %B %Y") printf "Put Name on title\n" sed -i "s/\[\[conf\]\]/${conf//_/ }/g" "${folder}/titles/logo_amis.svg" || die "Change text on credits screen failed!" printf "Put date on title\n" sed -i "s/\[\[date\]\]/${inkscape_date}/g" "${folder}/titles/logo_amis.svg" || die "Change date failed!" printf "Export SVG title \n" inkscape --export-type="png" "${folder}/titles/logo_amis.svg" || die "Export failed" printf "Importing PNG File in %s/montage.kdenlive \n" "$folder" insert_media "$folder/titles/logo_amis.png" "logo" ## Get file from USB key if mount_device "$key_label"; then if move_file "/run/media/${USER}/${key_label}/RECORD/EXREC/"*.MP3 "${folder}/audio/audio.mp3"; then insert_media "${folder}/audio/audio.mp3" fi if move_file "/run/media/${USER}/${key_label}/$(date --date='last Friday' +'%Y-%m-%d')"\ *.mkv "${folder}/rushes/obs.mkv"; then insert_media "${folder}/rushes/obs.mkv" video fi mount_device "$key_label" 1 fi ## Get audio file from RECORDER if mount_device "$recorder_label"; then if move_file "/run/media/${USER}/${recorder_label}/RECORDER/FOLDER_A/"VOC_*.wav "${folder}/audio/recorder.wav"; then insert_media "${folder}/audio/recorder.wav" fi mount_device "${recorder_label}" 1 fi printf "Change root folder in montage.kdenlive to %s\n" "$folder" # sed -i -e "s#\[\[root_folder\]\]#${folder}#g" "${folder}/montage.kdenlive" exit 0