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
|
#!/bin/env python3
|
||||||
import tidalapi
|
import tidalapi
|
||||||
import aigpy
|
import aigpy.tagHelper
|
||||||
import aigpy.downloadHelper
|
import aigpy.downloadHelper
|
||||||
import json
|
import json
|
||||||
import sys
|
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:
|
def set_metadata(track: tidalapi.Track, file: str) -> None:
|
||||||
# This function could be more fleshed out (lyrics, covers)
|
# This function could be more fleshed out (lyrics, covers)
|
||||||
# but I will leave that to external programs
|
# but I will leave that to external programs
|
||||||
tagger = aigpy.tag.TagTool(file)
|
tagger = aigpy.tagHelper.TagTool(file)
|
||||||
|
|
||||||
tagger.title = track.name
|
tagger.title = track.name
|
||||||
tagger.artist = list(map(lambda artist: artist.name, track.artists)) # type: ignore[reportOptionalMemberAccess]
|
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:
|
if tagger.totaldisc <= 1:
|
||||||
tagger.totaltrack = track.album.num_tracks # type: ignore[reportOptionalMemberAccess]
|
tagger.totaltrack = track.album.num_tracks # type: ignore[reportOptionalMemberAccess]
|
||||||
|
|
||||||
coverpath = f"{DEST_PATH}/{track.album.name}/cover.png" # type: ignore[reportOptionalMemberAccess]
|
tagger.save()
|
||||||
tagger.save(coverpath)
|
|
||||||
|
|
||||||
|
|
||||||
def download_track(
|
def download_track(
|
||||||
|
@ -82,8 +81,9 @@ def download_track(
|
||||||
try:
|
try:
|
||||||
album_name = re.sub("/", " ", track.album.name) # type: ignore[reportOptionalMemberAccess]
|
album_name = re.sub("/", " ", track.album.name) # type: ignore[reportOptionalMemberAccess]
|
||||||
track_name = re.sub("/", " ", track.name) # type: ignore[reportOptionalMemberAccess]
|
track_name = re.sub("/", " ", track.name) # type: ignore[reportOptionalMemberAccess]
|
||||||
dl_path = f"{DL_PATH}/{track_name}.part" # type: ignore[reportOptionalMemberAccess]
|
artist_name = re.sub("/", " ", track.artist.name) # type: ignore[reportOptionalMemberAccess]
|
||||||
dest_path = f"{DEST_PATH}/{album_name}/{track_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:
|
if os.path.exists(dest_path) and SKIP_DOWNLOADED:
|
||||||
print(dest_path + " exists!")
|
print(dest_path + " exists!")
|
||||||
|
@ -94,6 +94,14 @@ def download_track(
|
||||||
|
|
||||||
stream.manifest = json.loads(base64.b64decode(stream.manifest))
|
stream.manifest = json.loads(base64.b64decode(stream.manifest))
|
||||||
url = stream.manifest["urls"][0]
|
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:
|
try:
|
||||||
key = stream.manifest["keyId"]
|
key = stream.manifest["keyId"]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
|
@ -123,11 +131,11 @@ def download_track(
|
||||||
def download_cover(album: tidalapi.Album) -> None:
|
def download_cover(album: tidalapi.Album) -> None:
|
||||||
print(f"Downloading cover for {album.name}") # type: ignore[reportOptionalMemberAccess]
|
print(f"Downloading cover for {album.name}") # type: ignore[reportOptionalMemberAccess]
|
||||||
album_name = re.sub("/", " ", 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)
|
url = album.image(1280)
|
||||||
|
|
||||||
if os.path.exists(dest_path) and SKIP_DOWNLOADED:
|
if os.path.exists(dest_path) and SKIP_DOWNLOADED:
|
||||||
print(dest_path + " exists!")
|
|
||||||
print("Skipping downloaded cover")
|
print("Skipping downloaded cover")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -164,13 +172,11 @@ else:
|
||||||
user = session.get_user(USER_ID)
|
user = session.get_user(USER_ID)
|
||||||
favorites = tidalapi.user.Favorites(session, user.id)
|
favorites = tidalapi.user.Favorites(session, user.id)
|
||||||
albums = favorites.albums()
|
albums = favorites.albums()
|
||||||
dl_tracks = []
|
|
||||||
for album in albums:
|
for album in albums:
|
||||||
print(f"Queuing {album.name}")
|
print(f"Starting {album.name}")
|
||||||
dl_tracks += album.tracks()
|
tracks = album.tracks()
|
||||||
|
for track in tracks:
|
||||||
for track in dl_tracks:
|
download_cover(track.album)
|
||||||
download_cover(track.album)
|
check, _ = download_track(track)
|
||||||
check, _ = download_track(track)
|
if check:
|
||||||
if check:
|
time.sleep(3)
|
||||||
time.sleep(3)
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue