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

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