dotfiles/fish/functions/audio_to_opus.fish
Irrlicht fe00253349 [fish][function] function to convert some files to opus
Orginial function was converting m4a and wma files to OGG Vorbis.
Function changed to convert to opus and change name to match.
2025-10-15 02:34:09 +02:00

38 lines
1.4 KiB
Fish

function audio_to_opus -d "Convert m4a,wma files to opus"
argparse 'h/help' 'd/delete' 'y/dryrun' -- $argv
if set -q _flag_help
echo "usage: audio_to_opus [-h | --help] [-d | --delete]"
echo "Convert all m4a, wma files to Ogg Vorbis using ffmpeg."
echo "Traverses the whole directory structure starting from the working directory."
echo "-y,--dry-run Goes through all the process but doesn't actually make any conversion, logging the command that would be executed on each file."
echo "-d,--delete Delete original file after conversion"
echo "-h,--help display this help message"
return 0
end
set stats 0
for i in **.wma **.m4a
set audio_path $(path resolve $i)
set dir_path $(path dirname $audio_path)
set file_name $(path basename -E $audio_path)
set out_path "$dir_path/$file_name.ogg"
echo Converting $audio_path to $out_path
set stats $(math "$stats + 1")
if set -q _flag_dryrun
echo "ffmpeg -i $audio_path -map 0:a:0 -c:a libopus -b:a 130000 $out_path"
else
ffmpeg -i $audio_path -map 0:a:0 -c:a libvorbis -qscale:a 8 $out_path
end
if set -q _flag_delete && test $status -eq 0
if set -q _flag_dryrun
echo "rm $audio_path"
else
rm $audio_path
end
end
end
echo "File converted: $stats"
end