nix/home-manager/hosts/files/create_conf

148 lines
3.8 KiB
Bash
Executable file

#!/usr/bin/env bash
error() {
>&2 printf "\e[31mE\e[0m %s\n" "$1"
}
die() {
error "$*"
exit 1
}
process_args() {
while :; do
case $1 in
-l|--label)
key_label="$2"
shift
;;
*)
break
esac
shift
done
}
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
}
get_file_size() {
local file
local a
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!"
}
}
test=""
base_dir="${HOME}/medias/videos/sambab"
conf="$*"
key_label=${key_label:-SAMBAB}
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" || dir "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"
echo "Mount USBkey with Label $key_label"
usb_key="/dev/$(lsblk -o KNAME,LABEL | grep ${key_label} | awk '{print $1}')"
[[ ! $usb_key = "/dev/" ]] || die "Can't getting device name, is USB key plugged? $usb_key"
disk="$(udisksctl mount -b ${usb_key} | awk '{print $4}')"
sleep 1
[[ -n $disk ]] || die " -> Error mounting device $usb_key"
if mv ${disk}/RECORD/EXREC/*.MP3 "${folder}/audio/audio.mp3";
then
# import audio file
printf "Importing Audio File in %s/montage.kdenlive \n" "$folder"
insert_media "${folder}/audio/audio.mp3" audio
else
error "Moving audio file failed!"
fi
mv ${disk}/$(date --date='last Friday' +'%Y-%m-%d')\ *.mkv "${folder}/rushes/" || error "Moving video file failed!"
udisksctl unmount -b ${usb_key}
exit 0