#! /bin/zsh filepath="$(find ~/Archive -type d \( -name node_modules -o -name .git \) -prune -o \ -type f -name '*' -print | dmenu -i -l 15 -p 'Search File')" [ ! -f "$filepath" ] && exit 1 CHOICES=('[Video]Strip' \ '[Video]Transcode' \ '[Video]Scale' \ '[Video]Clip' \ '[Video]Extract-Chapters' \ '[Video]Insert-Chapters' \ '[Video]Split-Chapters' \ '[Image]Strip' \ '[Image]Convert' \ '[Image]Resize' '[Image]Trim' \ '[Image]Border-Radius') [ ! -z "$1" ] && selected="$1" \ || selected="$(echo "${CHOICES[@]}" | tr ' ' '\n' \ | dmenu -i -l 15 -p 'Select Edit')" filename="$(basename "$filepath")" case "$selected" in "${CHOICES[1]}") ffmpeg -n \ -sn \ -i "$filepath" \ -map_metadata -1 \ -map_chapters -1 \ -c:v copy \ -c:a copy \ "$HOME/[STRIP] $filename" ;; "${CHOICES[2]}") fileext="$(echo -n | dmenu -p 'File Extension (mp3)')" [ ! -z "$fileext" ] && ffmpeg -n \ -i "$filepath" \ "${filepath%.*}.$fileext" ;; "${CHOICES[3]}") scale="$(echo -n | dmenu -p 'Scale (854:480)')" [ ! -z "$scale" ] && ffmpeg -y \ -i "$filepath" \ -vf scale="$scale" \ "$HOME/[$scale] $filename" ;; "${CHOICES[4]}") from="$(echo -n | dmenu -p 'From (00:00/n)')" [ -z "$from" ] && exit 0 to="$(echo -n | dmenu -p 'To (00:00/n)')" [ -z "$to" ] && exit 0 ffmpeg -y \ -ss "$from" \ -to "$to" \ -i "$filepath" \ "$HOME/[CLIP] $filename" ;; "${CHOICES[5]}") ffmpeg -n \ -i "$filepath" \ -f ffmetadata \ "$HOME/[CHAPTERS] ${filename%.*}" ;; "${CHOICES[6]}") chapterpath="$(echo -n | dmenu -p 'Chapter Filepath')" [ -z "$chapterpath" ] && exit 0 ffmpeg -n \ -i "$filepath" \ -i "$chapterpath" \ -map_metadata 1 \ -codec copy \ "$HOME/[WITH-CHAPTERS] $filename" ;; "${CHOICES[7]}") mkdir -p "$HOME/${filename%.*}" ffprobe -print_format csv \ -show_chapters \ "$filepath" \ | cut -d ',' -f '5,7,8' \ | while IFS=, read start end chapter do ffmpeg -n \ -nostdin \ -i "$filepath" \ -ss "$start" \ -to "$end" \ -c copy \ -map 0 \ -map_chapters -1 \ "$HOME/${filename%.*}/$chapter.${filepath##*.}" done ;; "${CHOICES[8]}") cp "$filepath" "$HOME/[STRIP] $filename" exiftool -overwrite_original -all= "$HOME/[STRIP] $filename" ;; "${CHOICES[9]}") fileext="$(echo -n | dmenu -p 'File Extension (png)')" [ ! -z "$fileext" ] && convert "$filepath" "$HOME/${filename%.*}.$fileext" ;; "${CHOICES[10]}") size="$(echo -n | dmenu -p 'Size (75x75)')" [ ! -z "$size" ] && convert "$filepath" -resize "$size" "$HOME/[$size] $filename" ;; "${CHOICES[11]}") convert "$filepath" -trim "$HOME/[TRIM] $filename" ;; "${CHOICES[12]}") n="$(echo -n | dmenu -p 'Border Radius (n)')" [ ! -z "$n" ] && convert "$filepath" \ \( +clone -alpha extract \ -draw "fill black polygon 0,0 0,$n $n,0 fill white circle $n,$n $n,0" \ \( +clone -flip \) -compose Multiply -composite \ \( +clone -flop \) -compose Multiply -composite \ \) -alpha off -compose CopyOpacity -composite "$HOME/[RADIUS] $filename" ;; '') exit 0 ;; *) exit 1 ;; esac