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)