Bash mp3 to ogg script
I took some ideas from others scripts on the net, and made a script to suit my needs. Please give some help and tips for improvemets, tanks. Recursive search and preserving tags are the conditions.
#!/bin/bash mkdir ${HOME}/ogg mkdir ${HOME}/mp3 rm -rfv ${HOME}/.Trash/* cd ${HOME} find . -iname "*.mp3" | while read file do cp -ruvx --parents "$file" ${HOME}/mp3 done cd ${HOME}/mp3 find . -iname "*.mp3" | while read file ARTIST=`mp3info -p "%a" "$file"` LABEL=`mp3info -p "%l" "$file"` TRACK=`mp3info -p "%n" "$file"` TITLE=`mp3info -p "%t" "$file"` GENRE=`mp3info -p "%g" "$file"` YEAR=`mp3info -p "%y" "$file"` do exec lame --decode "${file}" - | oggenc --resample 22050 -a "$ARTIST" -t "$TITLE" -l "$LABEL" -G "$GENRE" -d "$YEAR" -N "$TRACK" -o "${file/%mp3/ogg}" - done cd ${HOME}/mp3 find . -iname "*.ogg" | while read file do cp -ruvx --parents "$file" ${HOME}/ogg done cd ${HOME} rm -rv ${HOME}/mp3/ rm -rfv ${HOME}/.Trash/* |
ogg is great and all, but I hope you realize mp3 and ogg are both lossy compression formats. It is better to rip from the originals.
|
Quote:
Code:
mkdir "${HOME}/ogg" "${HOME}/mp3" Quote:
Code:
find . -iname "*.mp3" -exec cp -ruvx --parents {} ${HOME}/mp3" + Quote:
Code:
do Quote:
Code:
do Quote:
|
True Colors, thanks for the original script.
|
==========
#!/bin/bash mkdir "${HOME}/ogg" "${HOME}/mp3" rm -rfv ${HOME}/.Trash/* cd ${HOME} find . -iname "*.mp3" -exec cp -ruvx --parents {} ${HOME}/mp3 \; cd ${HOME}/mp3 find . -iname "*.mp3" | while read file do eval "`mp3info -p "ARTIST='%a' LABEL='%l' TRACK='%n' TITLE='%t' GENRE='%g' YEAR='%y'" "$file"`" ofile=${file#./} lame --decode "${file}" - | oggenc --resample 22050 -a "$ARTIST" -t "$TITLE" \ -l "$LABEL" -G "$GENRE" -d "$YEAR" -N "$TRACK" \ -o "$HOME/ogg/${ofile%[Mm][Pp]3}ogg" - done cd ${HOME} rm -rv ${HOME}/mp3/ rm -rfv ${HOME}/.Trash/* ========== Thanks cfaj, wellcome Sepero. How can i skip a bad mp3 file in the transcoding process? Some strange message that i have encountered: "Error: sample frequency has changed in MP3 file - not supported". |
mp3toogg.sh
Just a little modification to do that i need at least for Fedora 7:
========== #!/bin/bash mkdir "${HOME}/ogg" "${HOME}/mp3" rm -rfv ${HOME}/.Trash/* cd ${HOME} find . -iname "*.mp3" -exec cp -ruvx --parents {} ${HOME}/mp3 \; cd ${HOME}/mp3 find . -iname "*.mp3" | while read file do eval "`mp3info -p "ARTIST='%a' LABEL='%l' TRACK='%n' TITLE='%t' GENRE='%g' YEAR='%y'" "$file"`" ofile=${file} lame --decode "${file}" - | oggenc --resample 22050 -a "$ARTIST" -t "$TITLE" \ -l "$LABEL" -G "$GENRE" -d "$YEAR" -N "$TRACK" \ -o "$HOME/ogg/${ofile%[Mm][Pp]3}ogg" - done cd ${HOME} rm -rv ${HOME}/mp3/ rm -rfv ${HOME}/.Trash/* ========== |
mp3toogg.sh
==========
#!/bin/bash rm -rfv ${HOME}/.Trash/* mkdir "${HOME}/ogg" cd ${HOME} find . -iname "*.mp3" | while read file do eval "`mp3info -p "ARTIST='%a' LABEL='%l' TRACK='%n' TITLE='%t' GENRE='%g' YEAR='%y'" "$file"`" ofile=${file} lame --decode "${file}" - | oggenc --resample 22050 -a "$ARTIST" -t "$TITLE" \ -l "$LABEL" -G "$GENRE" -d "$YEAR" -N "$TRACK" \ -o "$HOME/ogg/${ofile%[Mm][Pp]3}ogg" - done ========== |
All times are GMT -5. The time now is 06:03 AM. |