Skip to content

Commit

Permalink
Fixes Tidal 429 Error by avoiding to many calls
Browse files Browse the repository at this point in the history
  • Loading branch information
bloedboemmel committed Nov 28, 2022
1 parent fb8046c commit 422a03b
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 23 deletions.
28 changes: 17 additions & 11 deletions TIDALDL-PY/tidal_dl/download.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,11 @@ def downloadAlbumInfo(album, tracks):
aigpy.file.write(path, infos, "w+")


def downloadVideo(video: Video, path, stream, album: Album = None, playlist: Playlist = None):
def downloadVideo(video: Video, album: Album = None, playlist: Playlist = None):
try:
stream = TIDAL_API.getVideoStreamUrl(video.id, SETTINGS.videoQuality)
path = getVideoPath(video, album, playlist)

if __isSkip__(path, stream.m3u8Url):
Printf.success(aigpy.path.getFileName(path) + " (skip:already exists!)")
return True, ''
Expand Down Expand Up @@ -146,8 +149,13 @@ def downloadVideo(video: Video, path, stream, album: Album = None, playlist: Pla
return False, str(e)


def downloadTrack(track: Track, album=None, path=None, stream=None, userProgress=None, partSize=1048576):
def downloadTrack(track: Track, album=None, playlist=None, userProgress=None, partSize=1048576):
try:
path = getTrackPath(track, album, playlist)
if os.path.exists(path):
Printf.success(aigpy.path.getFileName(path) + " (skip:already exists!)")
return True, ''
stream = TIDAL_API.getStreamUrl(track.id, SETTINGS.audioQuality)
if SETTINGS.showTrackInfo and not SETTINGS.multiThread:
Printf.track(track, stream)

Expand Down Expand Up @@ -215,24 +223,22 @@ def __getAlbum__(item: Track):
if itemAlbum is None:
itemAlbum = __getAlbum__(item)
item.trackNumberOnPlaylist = index + 1
stream = TIDAL_API.getStreamUrl(item.id, SETTINGS.audioQuality)
path = getTrackPath(item, stream, album, playlist)
downloadTrack(item, path=path, stream=stream, album=itemAlbum)

downloadTrack(item, playlist=playlist, album=itemAlbum)

else:
thread_pool = ThreadPoolExecutor(max_workers=5)
for index, item in enumerate(tracks):
itemAlbum = album
if itemAlbum is None:
itemAlbum = __getAlbum__(item)
item.trackNumberOnPlaylist = index + 1
stream = TIDAL_API.getStreamUrl(item.id, SETTINGS.audioQuality)
path = getTrackPath(item, stream, album, playlist)
thread_pool.submit(downloadTrack, item, path=path, stream=stream, album=itemAlbum)

thread_pool.submit(downloadTrack, item, playlist=playlist, album=itemAlbum)

thread_pool.shutdown(wait=True)


def downloadVideos(videos, album: Album, playlist=None):
for video in videos:
stream = TIDAL_API.getVideoStreamUrl(video.id, SETTINGS.videoQuality)
path = getVideoPath(video, album, playlist)
downloadVideo(video, path, stream, album, playlist)
downloadVideo(video, album, playlist)
18 changes: 6 additions & 12 deletions TIDALDL-PY/tidal_dl/paths.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,16 +32,10 @@ def __getDurationStr__(seconds):
time_string = time_string[2:]
return time_string


def __getExtension__(stream: StreamUrl):
if '.flac' in stream.url:
return '.flac'
if '.mp4' in stream.url:
if 'ac4' in stream.codec or 'mha1' in stream.codec:
return '.mp4'
return '.m4a'
return '.m4a'

def __getExtension__(track):
if track.audioQuality == "LOSSLESS" or track.audioQuality == "HI_RES":
return ".flac"
return ".m4a"

def getAlbumPath(album):
artistName = __fixPath__(TIDAL_API.getArtistsName(album.artists))
Expand Down Expand Up @@ -92,7 +86,7 @@ def getPlaylistPath(playlist):
return f"{SETTINGS.downloadPath}/{retpath}"


def getTrackPath(track, stream, album=None, playlist=None):
def getTrackPath(track, album=None, playlist=None):
base = './'
number = str(track.trackNumber).rjust(2, '0')
if album is not None:
Expand All @@ -117,7 +111,7 @@ def getTrackPath(track, stream, album=None, playlist=None):
explicit = "(Explicit)" if track.explicit else ''

# extension
extension = __getExtension__(stream)
extension = __getExtension__(track)

retpath = SETTINGS.trackFileFormat
if retpath is None or len(retpath) <= 0:
Expand Down

0 comments on commit 422a03b

Please sign in to comment.