def accionar_con_directorio(self, ruta, accionArchivo, accionDirectorio):
        for dirName, subdirList, fileList in os.walk(ruta):
            #Parsea el nombre de la carpeta del directorio actual
            estilo = dirName[dirName.rindex("/") + 1:]

            for fname in fileList:
                arch = fname

                #Quita la extensión del archivo
                extension = StringUtils.convertir_a_estandard(fname[fname.rindex('.') + 1:])
                fname = fname[-len(fname):fname.rindex('.') - len(fname)]

                #Verifica que sea un archivo de audio
                if not extension in self.EXTENSIONES_AUDIO:
                    print "El archivo", arch, "No es un archivo de audio."
                    continue

                #Parseo del nombre de la cancion formato tema - interprete
                #Quita el espacio adelante y atrás del separador
                tema = fname[:fname.rindex(self.separador) - 1]
                interprete = fname[fname.rindex(self.separador) + 2:]

                #Si el formato es interprete-tema (es inverso) hago swap
                if (self.es_inverso):
                    aux = tema
                    tema = interprete
                    interprete = aux

                accionArchivo(tema, interprete, estilo, dirName, arch)

            #Subdirectorios
            for subdirName in subdirList:
                accionDirectorio(subdirName)
    def agregar_interprete(self, interprete):
        """Agrega un interprete en caso de no existir.
        Devuelve el id del interprete: si ya existia el id que poseia;
        de no existir, el id con el que fue agregado"""

        interprete = StringUtils.convertir_a_estandard(interprete)
        if (interprete in self.idInterpretesDict):
            return self.idInterpretesDict[interprete]

        self.idInterpretesDict[interprete] = self.idInterpretesCount
        self.idInterpretesCount += 1
        return self.idInterpretesDict[interprete]
    def agregar_cancion(self, titulo, interprete, estilo, dirName, arch):
        idInterprete = self.agregar_interprete(interprete)
        idEstilo = self.idEstilosDict[estilo]
        titulo = StringUtils.convertir_a_estandard(titulo)

        if (titulo, idInterprete) in self.idCancionesDict:
            print "La canción", titulo, "de", interprete, "ya se encontraba en la bdd"
            return

        self.idCancionesDict[(titulo, idInterprete)] = (self.idCancionesCount, idEstilo)

        self.agregar_huella_digital(dirName, arch)
        self.idCancionesCount += 1
        print "Se agregó la canción", titulo, "del interprete", interprete, "con estilo", estilo
 def agregar_estilo(self, estilo):
     estilo = StringUtils.convertir_a_estandard(estilo)
     if (not estilo in self.idEstilosDict):
         self.idEstilosDict[estilo] = self.idEstilosCount
         self.idEstilosCount += 1
 def renombrar_archivo(self, tema, interprete, estilo, dirName, arch):
     extension = arch[arch.rindex('.') : len(arch)]
     tema = StringUtils.convertir_a_estandard(tema)
     interprete = StringUtils.convertir_a_estandard(interprete)
     arch_estandard = interprete + " " + self.separador + " " + tema + extension
     IOManager.renombrar_archivo(dirName, arch, arch_estandard)