#!/usr/bin/ruby -w #========================================================= # mp32ogg.rb - convierte todos los .mp3 de un directorio # a ogg usando FFmpeg. # Usa el módulo Find #========================================================= # FJA - fja@neocipres.com Noviembre de 2015 #========================================================= require 'find' def buscar_archivo(dir, patron) lista = [] Find.find(dir) do |ruta| lista << ruta if File.basename(ruta) =~ /#{patron}$/ && File.file?(ruta) end return lista.sort end dirmp3 = '' op= '' tipo = '.mp3' begin raise if ARGV.size == 0 dirmp3 = ARGV[0].dup if ARGV.size == 2 then op = ARGV[1].dup tipo = '.' + ARGV[1].dup if op != '-lm' end if ARGV.size == 3 then op = ARGV[1].dup tipo = '.' + ARGV[2].dup end system('clear') archivos = buscar_archivo(dirmp3, tipo) print "\n", "="*80 print "\n Archivos de tipo #{tipo}: ", archivos.size, " archivo#{"s" unless archivos.size==1}" print "\n", "="*80, "\n" archivos.each do |archivo| if archivo.include? "'" then archivoNew = archivo.gsub("'",'-') File.rename(archivo, archivoNew) end end if op == '-lm' then opcion = ' -acodec libvorbis -aq 6 -map_metadata -1 ' else opcion = ' -acodec libvorbis -aq 6 ' end archivos = buscar_archivo(dirmp3, tipo) archivos.each do |archivo| cmd = '' aout = archivo.sub(tipo, '') << '.ogg' archivo = "'" + archivo + "'" aout = "'" + aout + "'" cmd << 'ffmpeg' << ' -i ' << archivo << opcion << aout system(cmd) puts "\t #{archivo} " end archivos = buscar_archivo(dirmp3, '.ogg') print "="*80 print "\n\t => ",archivos.size," archivo#{"s" unless archivos.size==1} convertidos a ogg \n" print "\n\t Opcion de FFmpeg: #{opcion} \n" print "="*80, "\n" rescue if ARGV.size == 0 print "\n\t", "="*70 print "\n\t Uso: mp32ogg <directorio> [-lm] [tipo]" print "\n\t", "-"*70 print "\n\t -lm: limpia los metadatos \n" print "\n\t tipo: los formatos de audio a convertir a ogg --> mp3 flac ... \n" print "\n\t", "-"*70 print "\n\t mp32ogg es un enlace simbólico a mp32ogg.rb " print "\n\t", "="*70, "\n\n" else puts "\n\t Error-> #{$!} \n\n" end end