Module: AudioInfo
- Defined in:
- lib/audioinfo.rb
Defined Under Namespace
Classes: Aiff, Ape, Au, Audiofile, FileName, Flac, Mp3, Mpc, Ogg, Shn, Snd, Tipo, Virtual, Wav
Constant Summary collapse
- SUPPORT =
%w{flac ogg mp3 wav aiff au snd shn ape mpc}
Class Method Summary collapse
-
.determinarTipoExtension(sFile) ⇒ Object
Determina el tipo de archivo, a partir de su extensi�n.
-
.determinarTipoFile(sFile) ⇒ Object
Determina el tipo de archivo, a partir del comando file.
-
.infoFile(sFile) ⇒ Object
entrega un objeto AudioInfo::Tipo.
Class Method Details
.determinarTipoExtension(sFile) ⇒ Object
Determina el tipo de archivo, a partir de su extensi�n
93 94 95 96 97 98 99 100 |
# File 'lib/audioinfo.rb', line 93 def self.determinarTipoExtension(sFile) sSupport=SUPPORT.join('|') if sFile=~/\.(#{sSupport})$/i return $1.downcase else return false end end |
.determinarTipoFile(sFile) ⇒ Object
Determina el tipo de archivo, a partir del comando file
81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/audioinfo.rb', line 81 def self.determinarTipoFile(sFile) sTipo=`file -L -b \"#{sFile}\"` if sTipo=~/^FLAC/ return 'flac' elsif sTipo=~/^MP3/ return 'mp3' elsif sTipo=~/Ogg.*Vorbis audio/ return 'ogg' end false end |
.infoFile(sFile) ⇒ Object
entrega un objeto AudioInfo::Tipo
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/audioinfo.rb', line 56 def self.infoFile(sFile) # primero, identificar el tipo de archivo return false if !File.stat(sFile).file? return false if !(tipo=determinarTipoFile(sFile)) and !(tipo=determinarTipoExtension(sFile)) # ok, existe. Ahora, obtengo la informaci�n sobre �l de la manera 'legal' begin oInfoTags=self.const_get(tipo.capitalize.intern).new(sFile) rescue StandardError => ex print "Error in file #{sFile} "+ex print ex.backtrace return false end # Si falta alg�n dato, lo trato de obtener del nombre del archivo if oInfoTags.incompleto? # ahora verifico que esten todos los datos en orden. oNombre=AudioInfo::FileName.new(sFile) oInfoTags.merge(oNombre) # si todav�a falta algo, lo arreglo oInfoTags.album='Desconocido' if oInfoTags.album.nil? oInfoTags.artist='Desconocido' if oInfoTags.artist.nil? end # Si no, busco por el nombre return oInfoTags end |