Add mp3_tagger.py
This commit is contained in:
parent
c4013c7095
commit
6dab9b20eb
67
mp3_tagger.py
Normal file
67
mp3_tagger.py
Normal file
@ -0,0 +1,67 @@
|
||||
import os
|
||||
import musicbrainzngs
|
||||
from mutagen.easyid3 import EasyID3
|
||||
from mutagen.mp3 import MP3
|
||||
|
||||
def configurar_musicbrainz():
|
||||
"""Configura l'accés a l'API de MusicBrainz."""
|
||||
musicbrainzngs.set_useragent("MP3Tagger", "1.0", "https://example.com")
|
||||
|
||||
def obtenir_fitxers_mp3(directori):
|
||||
"""Obtén tots els arxius MP3 d'un directori i els subdirectoris."""
|
||||
mp3_files = []
|
||||
for root, _, files in os.walk(directori):
|
||||
for file in files:
|
||||
if file.lower().endswith(".mp3"):
|
||||
mp3_files.append(os.path.join(root, file))
|
||||
return mp3_files
|
||||
|
||||
def buscar_informacio_musicbrainz(title, artist):
|
||||
"""Cerca informació d'una cançó a MusicBrainz."""
|
||||
try:
|
||||
resultats = musicbrainzngs.search_recordings(recording=title, artist=artist, limit=1)
|
||||
if resultats['recording-list']:
|
||||
return resultats['recording-list'][0]
|
||||
else:
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"Error en cercar informació a MusicBrainz: {e}")
|
||||
return None
|
||||
|
||||
def etiquetar_mp3(mp3_file):
|
||||
"""Etiquetar un fitxer MP3 utilitzant MusicBrainz."""
|
||||
try:
|
||||
audio = MP3(mp3_file, ID3=EasyID3)
|
||||
title = audio.get("title", [None])[0]
|
||||
artist = audio.get("artist", [None])[0]
|
||||
|
||||
if not title or not artist:
|
||||
print(f"No hi ha prou informació per etiquetar: {mp3_file}")
|
||||
return
|
||||
|
||||
informacio = buscar_informacio_musicbrainz(title, artist)
|
||||
if informacio:
|
||||
audio["title"] = informacio.get("title", title)
|
||||
audio["artist"] = ", ".join(artist["name"] for artist in informacio.get("artist-credit", []))
|
||||
if "release-list" in informacio and informacio["release-list"]:
|
||||
audio["album"] = informacio["release-list"][0].get("title", "")
|
||||
audio.save()
|
||||
print(f"Etiquetes actualitzades per: {mp3_file}")
|
||||
else:
|
||||
print(f"No s'ha trobat informació per: {mp3_file}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error en processar {mp3_file}: {e}")
|
||||
|
||||
def etiquetar_biblioteca(directori):
|
||||
"""Explora un directori i etiqueta tots els arxius MP3."""
|
||||
configurar_musicbrainz()
|
||||
fitxers_mp3 = obtenir_fitxers_mp3(directori)
|
||||
print(f"S'han trobat {len(fitxers_mp3)} fitxers MP3.")
|
||||
|
||||
for mp3_file in fitxers_mp3:
|
||||
etiquetar_mp3(mp3_file)
|
||||
|
||||
if __name__ == "__main__":
|
||||
directori = input("Introdueix el directori de la biblioteca MP3: ").strip()
|
||||
etiquetar_biblioteca(directori)
|
Loading…
Reference in New Issue
Block a user