qobuz-dl/qo_utils/metadata.py

151 lines
5.9 KiB
Python
Raw Normal View History

2020-10-17 18:52:35 +02:00
import os
2020-08-10 04:47:51 +02:00
from mutagen.flac import FLAC
2020-08-13 06:43:52 +02:00
from mutagen.mp3 import EasyMP3
2020-08-10 04:47:51 +02:00
from pathvalidate import sanitize_filename
2020-12-07 16:32:37 +01:00
2020-08-13 06:43:52 +02:00
def tag_flac(file, path, d, album, istrack=True):
2020-08-10 04:47:51 +02:00
audio = FLAC(file)
2020-11-30 06:05:15 +01:00
try:
d["version"]
except KeyError:
audio["TITLE"] = d["title"]
dversion_exist = 0
else:
if d["version"] is None:
2020-12-07 16:32:37 +01:00
audio["TITLE"] = d["title"] # TRACK TITLE
2020-11-30 06:05:15 +01:00
dversion_exist = 0
else:
2020-12-07 16:32:37 +01:00
audio["TITLE"] = d["title"] + " " + "(" + d["version"] + ")"
2020-11-30 06:05:15 +01:00
dversion_exist = 1
2020-12-07 16:32:37 +01:00
# if d["version"] is None:
# audio["TITLE"] = d["title"]# TRACK TITLE
# else:
# audio["TITLE"] = d["title"] + ' ' + '(' + d["version"] + ')'
2020-08-10 04:47:51 +02:00
2020-10-17 18:52:35 +02:00
audio["TRACKNUMBER"] = str(d["track_number"]) # TRACK NUMBER
2020-08-10 04:47:51 +02:00
try:
2020-10-17 18:52:35 +02:00
audio["COMPOSER"] = d["composer"]["name"] # COMPOSER
2020-08-10 04:47:51 +02:00
except KeyError:
pass
try:
2020-10-17 18:52:35 +02:00
audio["ARTIST"] = d["performer"]["name"] # TRACK ARTIST
2020-08-10 04:47:51 +02:00
except KeyError:
if istrack:
2020-10-17 18:52:35 +02:00
audio["ARTIST"] = d["album"]["artist"]["name"] # TRACK ARTIST
2020-08-10 04:47:51 +02:00
else:
2020-10-17 18:52:35 +02:00
audio["ARTIST"] = album["artist"]["name"]
2020-08-10 04:47:51 +02:00
if istrack:
2020-11-30 06:05:15 +01:00
if dversion_exist == 0:
audio["GENRE"] = ", ".join(d["album"]["genres_list"]) # GENRE
audio["ALBUMARTIST"] = d["album"]["artist"]["name"] # ALBUM ARTIST
audio["TRACKTOTAL"] = str(d["album"]["tracks_count"]) # TRACK TOTAL
2020-12-07 16:32:37 +01:00
audio["ALBUM"] = d["album"]["title"] # ALBUM TITLE
2020-11-30 06:05:15 +01:00
audio["YEAR"] = d["album"]["release_date_original"].split("-")[0]
else:
audio["GENRE"] = ", ".join(d["album"]["genres_list"]) # GENRE
audio["ALBUMARTIST"] = d["album"]["artist"]["name"] # ALBUM ARTIST
audio["TRACKTOTAL"] = str(d["album"]["tracks_count"]) # TRACK TOTAL
2020-12-07 16:32:37 +01:00
audio["ALBUM"] = (
d["album"]["title"] + " " + "(" + d["album"]["version"] + ")"
) # ALBUM TITLE
2020-11-30 06:05:15 +01:00
audio["YEAR"] = d["album"]["release_date_original"].split("-")[0]
2020-08-10 04:47:51 +02:00
else:
2020-11-30 06:05:15 +01:00
if dversion_exist == 0:
audio["GENRE"] = ", ".join(album["genres_list"]) # GENRE
audio["ALBUMARTIST"] = album["artist"]["name"] # ALBUM ARTIST
audio["TRACKTOTAL"] = str(album["tracks_count"]) # TRACK TOTAL
audio["ALBUM"] = album["title"] # ALBUM TITLE
audio["YEAR"] = album["release_date_original"].split("-")[0] # YEAR
else:
audio["GENRE"] = ", ".join(album["genres_list"]) # GENRE
audio["ALBUMARTIST"] = album["artist"]["name"] # ALBUM ARTIST
audio["TRACKTOTAL"] = str(album["tracks_count"]) # TRACK TOTAL
2020-12-07 16:32:37 +01:00
audio["ALBUM"] = (
album["title"] + " " + "(" + album["version"] + ")"
) # ALBUM TITLE
2020-11-30 06:05:15 +01:00
audio["YEAR"] = album["release_date_original"].split("-")[0] # YEAR
2020-08-10 04:47:51 +02:00
audio.save()
2020-12-07 16:32:37 +01:00
if dversion_exist == 1:
title = sanitize_filename(d["title"] + " " + "(" + d["version"] + ")")
2020-11-30 06:05:15 +01:00
else:
title = sanitize_filename(d["title"])
2020-11-02 20:51:58 +01:00
try:
os.rename(file, "{}/{:02}. {}.flac".format(path, d["track_number"], title))
except FileExistsError:
print("File already exists. Skipping...")
2020-08-13 06:43:52 +02:00
2020-12-07 16:32:37 +01:00
def tag_mp3(file, path, d, album, istrack=True): # needs to be fixed
2020-08-13 06:43:52 +02:00
audio = EasyMP3(file)
2020-11-30 06:05:15 +01:00
try:
2020-12-07 16:32:37 +01:00
d["version"]
2020-11-30 06:05:15 +01:00
except KeyError:
audio["TITLE"] = d["title"]
dversion_exist = 0
else:
if d["version"] is None:
2020-12-07 16:32:37 +01:00
audio["TITLE"] = d["title"] # TRACK TITLE
2020-11-30 06:05:15 +01:00
dversion_exist = 0
else:
2020-12-07 16:32:37 +01:00
audio["TITLE"] = d["title"] + " " + "(" + d["version"] + ")"
2020-11-30 06:05:15 +01:00
dversion_exist = 1
2020-08-13 06:43:52 +02:00
2020-10-17 18:52:35 +02:00
audio["tracknumber"] = str(d["track_number"])
2020-08-13 06:43:52 +02:00
try:
2020-10-17 18:52:35 +02:00
audio["composer"] = d["composer"]["name"]
2020-08-13 06:43:52 +02:00
except KeyError:
pass
try:
2020-10-17 18:52:35 +02:00
audio["artist"] = d["performer"]["name"] # TRACK ARTIST
2020-08-13 06:43:52 +02:00
except KeyError:
if istrack:
2020-10-17 18:52:35 +02:00
audio["artist"] = d["album"]["artist"]["name"] # TRACK ARTIST
2020-08-13 06:43:52 +02:00
else:
2020-10-17 18:52:35 +02:00
audio["artist"] = album["artist"]["name"]
2020-08-13 06:43:52 +02:00
if istrack:
2020-11-30 06:05:15 +01:00
if dversion_exist == 1:
audio["genre"] = ", ".join(d["album"]["genres_list"]) # GENRE
audio["albumartist"] = d["album"]["artist"]["name"] # ALBUM ARTIST
2020-12-07 16:32:37 +01:00
audio["album"] = (
d["album"]["title"] + " " + "(" + d["album"]["version"] + ")"
) # ALBUM TITLE
2020-11-30 06:05:15 +01:00
audio["date"] = d["album"]["release_date_original"].split("-")[0]
else:
audio["genre"] = ", ".join(d["album"]["genres_list"]) # GENRE
audio["albumartist"] = d["album"]["artist"]["name"] # ALBUM ARTIST
audio["album"] = d["album"]["title"] # ALBUM TITLE
audio["date"] = d["album"]["release_date_original"].split("-")[0]
2020-08-13 06:43:52 +02:00
else:
2020-11-30 06:05:15 +01:00
if album["version"] is not None:
audio["GENRE"] = ", ".join(album["genres_list"]) # GENRE
audio["albumartist"] = album["artist"]["name"] # ALBUM ARTIST
try:
album["version"]
except KeyError:
audio["album"] = album["title"]
else:
2020-12-07 16:32:37 +01:00
audio["album"] = (
album["title"] + " " + "(" + album["version"] + ")"
) # ALBUM TITLE
2020-11-30 06:05:15 +01:00
audio["date"] = album["release_date_original"].split("-")[0] # YEAR
else:
audio["GENRE"] = ", ".join(album["genres_list"]) # GENRE
audio["albumartist"] = album["artist"]["name"] # ALBUM ARTIST
audio["album"] = album["title"] # ALBUM TITLE
audio["date"] = album["release_date_original"].split("-")[0] # YEAR
2020-08-13 06:43:52 +02:00
audio.save()
2020-11-30 06:05:15 +01:00
if dversion_exist == 1:
2020-12-07 16:32:37 +01:00
title = sanitize_filename(d["title"] + " " + "(" + d["version"] + ")")
2020-11-30 06:05:15 +01:00
else:
title = sanitize_filename(d["title"])
2020-11-02 20:51:58 +01:00
try:
os.rename(file, "{}/{:02}. {}.mp3".format(path, d["track_number"], title))
except FileExistsError:
print("File already exists. Skipping...")