Update scripts

This commit is contained in:
2023-12-04 10:44:44 +08:00
parent 65d4efdc00
commit 8142179166

View File

@@ -7,7 +7,7 @@ from os import listdir, remove, link, symlink, makedirs
from subprocess import PIPE, Popen from subprocess import PIPE, Popen
FMT = re.compile(r"(\d+)/(\d+)") FMT = re.compile(r"(\d+)(/(\d+))?")
def generate_thumb(input: str, output: str): def generate_thumb(input: str, output: str):
@@ -32,6 +32,10 @@ def generate_path(input: str):
thumb = True thumb = True
break break
m = i.meta.to_dict() m = i.meta.to_dict()
tmp = {}
for i in m:
tmp[i.lower()] = m[i]
m = tmp
artist = m.get('album_artist', m.get('artist', None)) artist = m.get('album_artist', m.get('artist', None))
album = m.get('album', None) album = m.get('album', None)
title = m.get('title', None) title = m.get('title', None)
@@ -39,22 +43,23 @@ def generate_path(input: str):
track = m.get('track', None) track = m.get('track', None)
if artist is None or album is None or title is None: if artist is None or album is None or title is None:
raise ValueError("No artist, album or title") raise ValueError("No artist, album or title")
thumb = join(arg.OUTPUT, artist, album, arg.cover) if thumb else None
discs = FMT.match(disc) discs = FMT.match(disc)
if discs is None: if discs is None:
raise ValueError(f"Failed to parse discs {disc}") raise ValueError(f"Failed to parse discs {disc}")
discs = discs.group(1, 2) discs = discs.group(1, 3)
discs = (int(discs[0]), int(discs[1])) discs = (int(discs[0]), int(discs[1]) if discs[1] is not None else None)
if discs[1] == 1: if discs[1] == 1 or discs[1] is None:
if track is None: if track is None:
return (join(arg.OUTPUT, artist, album, title + ext), thumb) return (join(arg.OUTPUT, artist, album, title + ext), thumb)
else: else:
tracks = FMT.match(track) tracks = FMT.match(track)
if tracks is None: if tracks is None:
raise ValueError(f"Failed to parse tracks {track}") raise ValueError(f"Failed to parse tracks {track}")
tracks = tracks.group(1, 2) tracks = tracks.group(1, 3)
tracks = (int(tracks[0]), int(tracks[1])) track0 = int(tracks[0])
return (join(arg.OUTPUT, artist, album, return (join(arg.OUTPUT, artist, album,
f"{tracks[0]:02} - {title}{ext}"), thumb) f"{track0:02} - {title}{ext}"), thumb)
else: else:
if track is None: if track is None:
return (join(arg.OUTPUT, artist, album, f"Disc {discs[0]}", return (join(arg.OUTPUT, artist, album, f"Disc {discs[0]}",
@@ -63,10 +68,10 @@ def generate_path(input: str):
tracks = FMT.match(track) tracks = FMT.match(track)
if tracks is None: if tracks is None:
raise ValueError(f"Failed to parse tracks {track}") raise ValueError(f"Failed to parse tracks {track}")
tracks = tracks.group(1, 2) tracks = tracks.group(1, 3)
tracks = (int(tracks[0]), int(tracks[1])) track0 = int(tracks[0])
return (join(arg.OUTPUT, artist, album, f"Disc {discs[0]}", return (join(arg.OUTPUT, artist, album, f"Disc {discs[0]}",
f"{tracks[0]:02} - {title}{ext}"), thumb) f"{track0:02} - {title}{ext}"), thumb)
def get_m4a_files(dir: str, r: bool) -> List[str]: def get_m4a_files(dir: str, r: bool) -> List[str]:
@@ -79,7 +84,7 @@ def get_m4a_files(dir: str, r: bool) -> List[str]:
if isdir(file): if isdir(file):
if r: if r:
re += get_m4a_files(file, r) re += get_m4a_files(file, r)
elif file.endswith('.m4a'): elif file.endswith('.m4a') or file.endswith(".flac"):
re.append(file) re.append(file)
return re return re
@@ -106,7 +111,7 @@ for f in get_m4a_files(arg.INPUT, arg.recursive):
if arg.verbose: if arg.verbose:
print(f"Target path: {r[0]}") print(f"Target path: {r[0]}")
if r[1]: if r[1]:
thumb = join(split(r[0])[0], arg.cover) thumb = r[1]
if arg.verbose: if arg.verbose:
print(f"Target thumb: {thumb}") print(f"Target thumb: {thumb}")
if not exists(thumb): if not exists(thumb):