Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- function convert_video_to_voice() {
- # sudo apt install detox ffmpeg
- # tested on GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
- s_loc="/media/ramdisk/"
- s_ext="ts\|mp4"
- o_ext="mp3"
- # normalize file names
- readarray -t folderNames < <(find "$s_loc" -type f -regex '.*\.\('$s_ext'\)$' -exec bash -c 'f_loc="{}"; dir="${f_loc%/*}"; rename_file=$(detox -s iso8859_1 "$f_loc"); echo "$dir" | sed "s/.*\///"' \;)
- # move & rename files
- find "$s_loc" -type f -regex '.*\.\('$s_ext'\)$' -exec bash -c 'f_loc="{}"; f_nm="$(basename "$f_loc")"; f_rt="${f_nm%.*}"; f_ex="${f_nm##*.}" ; d_loc=$(echo '$s_loc'$f_rt"_"$(date +%s%N)"."$f_ex); mv "$f_loc" "$d_loc"' \;
- # delete root parent folders
- readarray -t folderNamesUnique < <(printf '%s\n' "${folderNames[@]}" | sort -u)
- if [ ${#folderNamesUnique[@]} -gt 0 ]; then
- cd $s_loc
- for fdir in "${folderNamesUnique[@]}"; do
- if [ -d "$fdir" ]; then
- rm -r "$fdir"
- fi
- done
- fi
- # convert files
- readarray -t files < <(find "$s_loc" -maxdepth 1 -type f -regex '.*\.\('$s_ext'\)$' | sed "s/.*\///")
- if [ ${#files[@]} -gt 0 ]; then
- cd $s_loc
- for i in "${files[@]}"; do
- filename="${i%.*}"
- echo $filename
- cmd=$(echo ffmpeg -nostdin -i '"'$i'" -vn -acodec libmp3lame -ac 2 -ab 32k -ar 16000' '"'$filename"."$o_ext'"')
- echo $cmd
- bash -c "$cmd"
- done
- fi
- # organize files by current date and file extension
- d_loc=$(echo $s_loc$(date '+%Y-%m-%d_%H-%M-%S'))
- readarray -t files < <(find "$s_loc" -maxdepth 1 -type f -regex '.*\.\('$s_ext'\|'$o_ext'\)$' | sed "s/.*\///")
- if [ ${#files[@]} -gt 0 ]; then
- cd $s_loc
- for i in "${files[@]}"; do
- extension="${i##*.}"
- if echo "$extension" | grep -q "$o_ext" ; then
- o_dir="$d_loc/$o_ext"
- else
- o_dir="$d_loc/video"
- fi
- mkdir -p "$o_dir"
- mv "$i" "$o_dir/$i"
- done
- fi
- }
- convert_video_to_voice
Advertisement
Add Comment
Please, Sign In to add comment