2
0
Fork 0

change outputs, create conf.yml

This commit is contained in:
Luca Bilke 2023-06-27 17:16:15 +02:00
parent 0d6de77db1
commit c50320c35d
3 changed files with 19 additions and 21 deletions

5
conf.yml Normal file
View File

@ -0,0 +1,5 @@
user id:
dl dir: 'downloading'
dest dir: 'downloaded'
authfile dir: ''
skip existing: true

View File

@ -1,7 +0,0 @@
#!/bin/sh
export USER_ID=
export DL_PATH=
export DEST_PATH=
export AUTH_PATH=
export SKIP_DOWNLOADED=True
/bin/env python tidal_scrape.py

View File

@ -8,18 +8,19 @@ import base64
import os import os
import time import time
import re import re
import yaml
from Crypto.Cipher import AES from Crypto.Cipher import AES
from Crypto.Util import Counter from Crypto.Util import Counter
from typing import Tuple from typing import Tuple
from datetime import datetime from datetime import datetime
USER_ID = os.getenv("USER_ID") with open("conf.yml", "r") as f:
# Must be on same disk unless you replace the conf = yaml.safe_load(f)
# os.replace on line 105 with something better USER_ID = conf["user id"]
DL_PATH = os.getenv("DL_PATH") DL_PATH = conf["dl dir"]
DEST_PATH = os.getenv("DEST_PATH") DEST_PATH = os.getenv("dest dir")
AUTH_PATH = os.getenv("AUTH_PATH") AUTH_PATH = os.getenv("authfile dir")
SKIP_DOWNLOADED = bool(os.getenv("SKIP_DOWNLOADED")) SKIP_DOWNLOADED = bool(os.getenv("skip existing"))
config = tidalapi.Config(quality=tidalapi.Quality.lossless) config = tidalapi.Config(quality=tidalapi.Quality.lossless)
session = tidalapi.Session(config) session = tidalapi.Session(config)
@ -77,12 +78,11 @@ def download_track(
track: tidalapi.Track, track: tidalapi.Track,
partSize: int = 1048576, partSize: int = 1048576,
) -> Tuple[bool, str]: ) -> Tuple[bool, str]:
print(f"Downloading {track.name} - {track.artist.name}") # type: ignore[reportOptionalMemberAccess]
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]
artist_name = re.sub("/", " ", track.artist.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] 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] dest_path = f"{DEST_PATH}/{artist_name}/{album_name}/{track.track_num} {track_name}" # type: ignore[reportOptionalMemberAccess]
stream = track.stream() stream = track.stream()
@ -128,14 +128,12 @@ 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]
album_name = re.sub("/", " ", album.name) # type: ignore[reportOptionalMemberAccess] album_name = re.sub("/", " ", album.name) # type: ignore[reportOptionalMemberAccess]
artist_name = re.sub("/", " ", album.artist.name) # type: ignore[reportOptionalMemberAccess] artist_name = re.sub("/", " ", album.artist.name) # type: ignore[reportOptionalMemberAccess]
dest_path = f"{DEST_PATH}/{artist_name}/{album_name}/cover.png" # 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("Skipping downloaded cover")
return return
aigpy.net.downloadFile(url, dest_path) aigpy.net.downloadFile(url, dest_path)
@ -171,11 +169,13 @@ 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()
for album in albums: for i, album in enumerate(albums):
print(f"Starting {album.name}") print(f"Starting {i}/{len(albums)}: {album.name} - {album.artist.name}")
download_cover(album) download_cover(album)
tracks = album.tracks() tracks = album.tracks()
for track in tracks: for j, track in enumerate(tracks):
print(f"Downloading {i}/{len(tracks)}: {track.track_num} - {track.name}") # type: ignore[reportOptionalMemberAccess]
check, _ = download_track(track) check, _ = download_track(track)
if check: if check:
time.sleep(3) time.sleep(3)
print("\n")