Set year tag properly

This commit is contained in:
SemvdHoeven
2026-04-13 17:12:31 +02:00
parent 9dd4f2318e
commit e8552e6429

View File

@@ -5,7 +5,7 @@ from mutagen.mp3 import MP3
from mutagen.id3 import ID3 from mutagen.id3 import ID3
from mutagen.wave import WAVE from mutagen.wave import WAVE
from mutagen.oggvorbis import OggVorbis from mutagen.oggvorbis import OggVorbis
from mutagen.id3 import ID3, TIT2, TALB, TPE1, TPE2, COMM, TCOM, TCON, TDRC, TRCK, TPUB, POPM, APIC from mutagen.id3 import ID3, TIT2, TALB, TPE1, TPE2, COMM, TCOM, TCON, TDRC, TDRL, TRCK, TPUB, POPM, APIC
from mutagen.easyid3 import EasyID3 from mutagen.easyid3 import EasyID3
import os import os
from os import listdir from os import listdir
@@ -102,6 +102,10 @@ def search_google_images_and_save(x: str, audio):
else: else:
artist_val = str(audio.get("TPE2", audio.get("TPE1", "Unknown Artist"))) artist_val = str(audio.get("TPE2", audio.get("TPE1", "Unknown Artist")))
album_val = str(audio.get("TALB", "Unknown Album")) album_val = str(audio.get("TALB", "Unknown Album"))
# Skip Google search if artist or album is unknown
if "Unknown Artist" in artist_val or "Unknown Album" in album_val:
logging.info("Artist or album is unknown, skipping Google image search")
else:
google_keyword = artist_val + " " + album_val + " album" google_keyword = artist_val + " " + album_val + " album"
logging.info("Moved file! Now searching for album art... keyword is " + google_keyword) logging.info("Moved file! Now searching for album art... keyword is " + google_keyword)
google_Crawler = GoogleImageCrawler(storage = {'root_dir': songpath}) google_Crawler = GoogleImageCrawler(storage = {'root_dir': songpath})
@@ -129,7 +133,13 @@ def search_google_images_and_save(x: str, audio):
songpath = join(".",str(audio.get("TPE2", "Unknown Artist")),str(audio.get("TIT2", "Unknown Title"))) songpath = join(".",str(audio.get("TPE2", "Unknown Artist")),str(audio.get("TIT2", "Unknown Title")))
make_folder(songpath) make_folder(songpath)
os.replace(join(".",x),join(songpath,x)) os.replace(join(".",x),join(songpath,x))
song_keyword = str(audio.get("TPE2", "Unknown Artist")) + " " + str(audio.get("TIT2", "Unknown Title")) artist_keyword = str(audio.get("TPE2", "Unknown Artist"))
title_keyword = str(audio.get("TIT2", "Unknown Title"))
# Skip Google search if artist or title is unknown
if "Unknown Artist" in artist_keyword or "Unknown Title" in title_keyword:
logging.info("Artist or title is unknown, skipping Google image search")
else:
song_keyword = artist_keyword + " " + title_keyword
logging.info("Moved file! Now searching for album art... keyword is " + song_keyword) logging.info("Moved file! Now searching for album art... keyword is " + song_keyword)
google_Crawler = GoogleImageCrawler(storage = {'root_dir': songpath}) google_Crawler = GoogleImageCrawler(storage = {'root_dir': songpath})
try: try:
@@ -176,6 +186,11 @@ def create_ID3_tag(audio, tagname: str, textvalue: str):
audio[tagname] = TDRC(encoding=3,text=textvalue) audio[tagname] = TDRC(encoding=3,text=textvalue)
except: except:
pass pass
elif tagname == "TDRL":
try:
audio[tagname] = TDRL(encoding=3,text=textvalue)
except:
pass
elif tagname == "TPUB": elif tagname == "TPUB":
audio[tagname] = TPUB(encoding=3,text=textvalue) audio[tagname] = TPUB(encoding=3,text=textvalue)
@@ -440,10 +455,24 @@ def check_spotify_album_and_save(spotify, audio,x: str) -> bool:
elif (str(audio["TALB"]) != album_name): elif (str(audio["TALB"]) != album_name):
audio["TALB"] = TALB(encoding=3,text=album_name) audio["TALB"] = TALB(encoding=3,text=album_name)
# Parse release date to extract year
try:
year = str(datetime.strptime(album["release_date"], '%Y-%m-%d').year)
except:
try:
year = str(datetime.strptime(album["release_date"], '%Y-%m').year)
except:
try:
year = str(datetime.strptime(album["release_date"], '%Y').year)
except:
year = str(album["release_date"])
if (x.endswith(".flac")): if (x.endswith(".flac")):
audio["year"] = album["release_date"] audio["year"] = year
audio["date"] = album["release_date"]
else: else:
audio["TDRC"] = TDRC(encoding=3,text=album["release_date"]) audio["TDRC"] = TDRC(encoding=3,text=year)
audio["TDRL"] = TDRL(encoding=3,text=album["release_date"])
artist_search = spotify.artist(album['artists'][0]['external_urls']['spotify']) artist_search = spotify.artist(album['artists'][0]['external_urls']['spotify'])
logging.info("genres: " + str(artist_search['genres'])) logging.info("genres: " + str(artist_search['genres']))
@@ -593,18 +622,25 @@ def check_spotify_and_save(spotify, audio,x: str) -> bool:
else: else:
audio["COMM"] = COMM(encoding=3,text=comment) audio["COMM"] = COMM(encoding=3,text=comment)
# Parse release date to extract year
try: try:
year = str(datetime.strptime(album["release_date"], '%Y-%m-%d').year) year = str(datetime.strptime(album["release_date"], '%Y-%m-%d').year)
except:
if x.endswith(".flac"): try:
audio["year"] = year year = str(datetime.strptime(album["release_date"], '%Y-%m').year)
else: except:
audio["TDRC"] = TDRC(encoding=3,text=year) try:
year = str(datetime.strptime(album["release_date"], '%Y').year)
except Exception as err: except Exception as err:
logging.info(err) logging.info(err)
year = str(album["release_date"]) year = str(album["release_date"])
if x.endswith(".flac"):
audio["year"] = year audio["year"] = year
audio["date"] = album["release_date"]
else:
audio["TDRC"] = TDRC(encoding=3,text=year)
audio["TDRL"] = TDRL(encoding=3,text=album["release_date"])
if x.endswith(".flac"): if x.endswith(".flac"):