fix metadata tagging and add tracknum to filename
This commit is contained in:
parent
a83d2e5823
commit
78a668c615
1 changed files with 23 additions and 17 deletions
|
@ -1,6 +1,6 @@
|
|||
#!/bin/env python3
|
||||
import tidalapi
|
||||
import aigpy
|
||||
import aigpy.tagHelper
|
||||
import aigpy.downloadHelper
|
||||
import json
|
||||
import sys
|
||||
|
@ -55,7 +55,7 @@ def decrypt_file(input_file, output_file, key, nonce) -> None:
|
|||
def set_metadata(track: tidalapi.Track, file: str) -> None:
|
||||
# This function could be more fleshed out (lyrics, covers)
|
||||
# but I will leave that to external programs
|
||||
tagger = aigpy.tag.TagTool(file)
|
||||
tagger = aigpy.tagHelper.TagTool(file)
|
||||
|
||||
tagger.title = track.name
|
||||
tagger.artist = list(map(lambda artist: artist.name, track.artists)) # type: ignore[reportOptionalMemberAccess]
|
||||
|
@ -70,8 +70,7 @@ def set_metadata(track: tidalapi.Track, file: str) -> None:
|
|||
if tagger.totaldisc <= 1:
|
||||
tagger.totaltrack = track.album.num_tracks # type: ignore[reportOptionalMemberAccess]
|
||||
|
||||
coverpath = f"{DEST_PATH}/{track.album.name}/cover.png" # type: ignore[reportOptionalMemberAccess]
|
||||
tagger.save(coverpath)
|
||||
tagger.save()
|
||||
|
||||
|
||||
def download_track(
|
||||
|
@ -82,8 +81,9 @@ def download_track(
|
|||
try:
|
||||
album_name = re.sub("/", " ", track.album.name) # type: ignore[reportOptionalMemberAccess]
|
||||
track_name = re.sub("/", " ", track.name) # type: ignore[reportOptionalMemberAccess]
|
||||
dl_path = f"{DL_PATH}/{track_name}.part" # type: ignore[reportOptionalMemberAccess]
|
||||
dest_path = f"{DEST_PATH}/{album_name}/{track_name}" # type: ignore[reportOptionalMemberAccess]
|
||||
artist_name = re.sub("/", " ", track.artist.name) # type: ignore[reportOptionalMemberAccess]
|
||||
dl_path = f"{DL_PATH}/{track.track_num}{track_name}.part" # type: ignore[reportOptionalMemberAccess]
|
||||
dest_path = f"{DEST_PATH}/{artist_name}/{album_name}/{track.track_num} {track_name}" # type: ignore[reportOptionalMemberAccess]
|
||||
|
||||
if os.path.exists(dest_path) and SKIP_DOWNLOADED:
|
||||
print(dest_path + " exists!")
|
||||
|
@ -94,6 +94,14 @@ def download_track(
|
|||
|
||||
stream.manifest = json.loads(base64.b64decode(stream.manifest))
|
||||
url = stream.manifest["urls"][0]
|
||||
print(url)
|
||||
if '.flac' in url:
|
||||
dest_path += '.flac'
|
||||
elif '.mp4' in url:
|
||||
if 'ac4' in stream.codec or 'mha1' in stream.codec:
|
||||
dest_path += '.mp4'
|
||||
else:
|
||||
dest_path += '.m4a'
|
||||
try:
|
||||
key = stream.manifest["keyId"]
|
||||
except KeyError:
|
||||
|
@ -123,11 +131,11 @@ def download_track(
|
|||
def download_cover(album: tidalapi.Album) -> None:
|
||||
print(f"Downloading cover for {album.name}") # type: ignore[reportOptionalMemberAccess]
|
||||
album_name = re.sub("/", " ", album.name) # type: ignore[reportOptionalMemberAccess]
|
||||
dest_path = f"{DEST_PATH}/{album_name}/cover.png" # type: ignore[reportOptionalMemberAccess]
|
||||
artist_name = re.sub("/", " ", track.artist.name) # type: ignore[reportOptionalMemberAccess]
|
||||
dest_path = f"{DEST_PATH}/{artist_name}/{album_name}/cover.png" # type: ignore[reportOptionalMemberAccess]
|
||||
url = album.image(1280)
|
||||
|
||||
if os.path.exists(dest_path) and SKIP_DOWNLOADED:
|
||||
print(dest_path + " exists!")
|
||||
print("Skipping downloaded cover")
|
||||
return
|
||||
|
||||
|
@ -164,13 +172,11 @@ else:
|
|||
user = session.get_user(USER_ID)
|
||||
favorites = tidalapi.user.Favorites(session, user.id)
|
||||
albums = favorites.albums()
|
||||
dl_tracks = []
|
||||
for album in albums:
|
||||
print(f"Queuing {album.name}")
|
||||
dl_tracks += album.tracks()
|
||||
|
||||
for track in dl_tracks:
|
||||
download_cover(track.album)
|
||||
check, _ = download_track(track)
|
||||
if check:
|
||||
time.sleep(3)
|
||||
print(f"Starting {album.name}")
|
||||
tracks = album.tracks()
|
||||
for track in tracks:
|
||||
download_cover(track.album)
|
||||
check, _ = download_track(track)
|
||||
if check:
|
||||
time.sleep(3)
|
||||
|
|
Loading…
Add table
Reference in a new issue