Ola a todos,
Hoje vou falar de um problema que muitas pessoas devem ter. Ao baixar uma música qualquer da internet os carinhas colocam o nome do site no Titulo da música, no artista e nos comentários mas como isso se o o arquivo esta com nome correto?
Eles usam as tags ID3, mas então o que é a tag ID3?
“A etiqueta ID3 (em inglês: ID3 Tag) é um conjunto de informações mais usados junto com o formato de áudio MP3. Ela permite armazenar informações como o título, artista, album, número da faixa, ou outra informação sobre o arquivo no próprio aquivo.” Wikipedia [1]
Depois de ler um pouco a respeito resolvi mudar as tags das músicas para que quando as estiver escutando apareçam os dados válidos como nome da música e do Artista que a canta. Eu uso o Rhythmbox[2] e este pode até ser integrado ao seu software para conversa instantanea como AMSN[4], PIDGIN[4] dentre outros. Fazer isso na mão seria muito cansativo e não divertido, solução …. python.
Para este script utilizei uma biblioteca não padrão do python o mutagen[5], este serve para mostrar/editar as tags ID3 das músicas em formato mp3.
De acordo com o exemplo do site bastam 4 linhas para abrir->modificar->salvar o titulo de uma música em formato mp3 em seu HD.
from mutagen.easyid3 import EasyID3
audio = EasyID3("sua_musica.mp3")
audio["title"] = "Somente um exemplo no titulo"
audio.save()
Agora vamos a meu script, não vou comentar pois o código já esta bem comentado.
#!/bin/env python
#!-*- coding: utf-8 -*-
from sys import exit
from os import walk, path
from os.path import isfile, join
"""
@author: Valdinei dos Santos
@twitter: http://twitter.com/valdineisantos
@site: http://www.valdineidossantos.com/
@date: 16 Janeiro 2010
"""
try:
from mutagen.easyid3 import EasyID3
except:
print "Necessario instalar a biblioteca mutagen"
print "Site: http://code.google.com/p/mutagen/"
print "Python Setup Tools: easy_install mutagen"
exit(1)
#Diretorio que vai ser pesquisado
directory_root = "/home/valdinei/Musica/Downloads/"
def getInformations(track):
fileAtributes = dict()
"""
O Padrão das músicas estavam "01 - Artista - Album.mp3"
Nesta parte de Código vc deve se adequar a sua realidade mas isso é só trabalhar com strings.
"""
#split por "- " me dará com resultado 3 strings
trackNumber, artist, title = track.split("- ")
#Que depois de tratadas serao retorandas como valor final
fileAtributes["trackNumber"] = trackNumber.strip()
fileAtributes["artist"] = artist.strip()
#Tratando a string como um lista. O .mp3 esta sendo ignorado pois pego tudo -4 casas do final
fileAtributes["title"] = title.strip()[:-4]
return fileAtributes
"""
Caso tenhamos mais diretorios internos sera recursivo.
Mais sobre Walk em : http://docs.python.org/library/os.html#os.walk
"""
for (original, directoryname, filenames) in walk (directory_root):
filenames.sort()
total = len(filenames)
cont = 0;
for filename in filenames:
"""
Calculando a porcentagem de arquivos feitos
(parcial * 100)/numero total de músicas
"""
cont = cont + 1
percent = round (cont * 100 / total )
print "%02d%%" % percent
info = getInformations(filename)
#Verifico se o endereço do arquivo é valido realmente e se ele continua la.
if isfile( join(original,filename) ):
"""
Agora vamos começar a modificar as tags ID3 dos arquivos MP3 depois salva-los.
"""
try:
mp3 = EasyID3( join(original,filename) )
mp3["title"] = info["title"]
mp3["artist"] = info["artist"]
mp3["tracknumber"] = info["trackNumber"]
#Salva as informações no arquivo
mp3.save()
except Exception, e:
print "%s %s" % (e.__doc__, e )
print "Todos os Arquivos foram modificados"
E com isso suas mp3 agora vão ter o formato que você definiu que teriam. Atenção eu em momento algum modifiquei o nome físico do arquivo, somente as meta informações baseadas no nome que era o que eu tinha em mãos.
Não estou em momento nenhum incentivando a NINGUÉM baixar NADA da internet. A idéia original aqui era simplesmente python + programação e algumas boas práticas.
Algumas coisas que derrepente podem ter passados despercebidas foi o uso do os.walk, os.join, os.isfile todos importados no cabeçalho. Mas isso pode ser um outro assunto de post.
Seguem os links de referencia:
[1] Wikipedia : http://pt.wikipedia.org/wiki/ID3
[2] Rhythmbox: http://projects.gnome.org/rhythmbox/
[4] AMSN: http://www.amsn-project.net/ (esse projeto originalmente era feito por um brasileiro)
[5] PIDGIN: http://www.pidgin.im/
[6] Mutagen: http://code.google.com/p/mutagen/