Guest User

convert video to voice 2

a guest
Jan 7th, 2025
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.01 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. function convert_video_to_voice() {
  4.   # sudo apt install detox ffmpeg
  5.   # tested on GNU bash, version 5.1.16(1)-release (x86_64-pc-linux-gnu)
  6.   s_loc="/media/ramdisk/"
  7.   s_ext="ts\|mp4"
  8.   o_ext="mp3"
  9.   # normalize file names
  10.   # 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/.*\///"' \;)
  11.   readarray -t searchResults < <(find "$s_loc" -type f -regex '.*\.\('$s_ext'\)$' -exec echo {} \;)
  12.   readarray -t fLocUnique < <(printf '%s\n' "${searchResults[@]}" | sort -u)
  13.   if [ ${#fLocUnique[@]} -gt 0 ]; then
  14.     for sfile in "${fLocUnique[@]}"; do
  15.       detox -s iso8859_1 "$sfile"
  16.     done
  17.   fi
  18.   readarray -t folderNames < <(find "$s_loc" -type f -regex '.*\.\('$s_ext'\)$' -exec bash -c 'f_loc="{}"; dir="${f_loc%/*}"; echo "$dir" | sed "s/.*\///"' \;)
  19.   # move & rename files
  20.   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"' \;
  21.   # delete root parent folders
  22.   readarray -t folderNamesUnique < <(printf '%s\n' "${folderNames[@]}" | sort -u)
  23.   if [ ${#folderNamesUnique[@]} -gt 0 ]; then
  24.     cd "$s_loc"
  25.     for fdir in "${folderNamesUnique[@]}"; do
  26.       if [ -d "$fdir" ]; then
  27.         rm -r "$fdir"
  28.       fi
  29.     done
  30.   fi
  31.   # convert files
  32.   readarray -t files < <(find "$s_loc" -maxdepth 1 -type f -regex '.*\.\('$s_ext'\)$' | sed "s/.*\///")
  33.   if [ ${#files[@]} -gt 0 ]; then
  34.     cd "$s_loc"
  35.     for i in "${files[@]}"; do
  36.       filename="${i%.*}"
  37.       echo $filename
  38.       cmd=$(echo ffmpeg -nostdin -i '"'$i'" -vn -acodec libmp3lame -ac 2 -ab 32k -ar 16000' '"'$filename"."$o_ext'"')
  39.       echo $cmd
  40.       bash -c "$cmd"
  41.     done
  42.   fi
  43.   # organize files by current date and file extension
  44.   d_loc=$(echo $s_loc$(date '+%Y-%m-%d_%H-%M-%S'))
  45.   readarray -t files < <(find "$s_loc" -maxdepth 1 -type f -regex '.*\.\('$s_ext'\|'$o_ext'\)$' | sed "s/.*\///")
  46.   if [ ${#files[@]} -gt 0 ]; then
  47.     cd "$s_loc"
  48.     for i in "${files[@]}"; do
  49.       extension="${i##*.}"
  50.       if echo "$extension" | grep -q "$o_ext" ; then
  51.         o_dir="$d_loc/$o_ext"
  52.       else
  53.         o_dir="$d_loc/video"
  54.       fi
  55.       mkdir -p "$o_dir"
  56.       mv "$i" "$o_dir/$i"
  57.     done
  58.   fi
  59.   # copy folders to droid device
  60.   gvfs_loc="/run/user/1000/gvfs/"
  61.   sd_subd="/android/Movies/"
  62.   droid_mpoint=$(ls "$gvfs_loc" | grep "Redmi")
  63.   out_droid_dir=$gvfs_loc$droid_mpoint$sd_subd
  64.   if [ -d "$out_droid_dir" ]; then
  65.     c_year=$(date '+%Y-')
  66.     readarray -t bFolders < <(find "$s_loc" -maxdepth 1 -type d -name "$c_year*" | sed "s/.*\///")
  67.     if [ ${#bFolders[@]} -gt 0 ]; then
  68.       cd "$s_loc"
  69.       for bdir in "${bFolders[@]}"; do
  70.         if [ -d "$bdir" ]; then
  71.           mv "$bdir" "$out_droid_dir"
  72.         fi
  73.       done
  74.       xdg-open "$out_droid_dir"
  75.     fi
  76.   fi
  77. }
  78.  
  79. convert_video_to_voice
Advertisement
Add Comment
Please, Sign In to add comment