mirror of
https://github.com/glomatico/gamdl.git
synced 2026-06-13 12:15:18 +03:00
Improve error handling for missing media in downloader
This commit is contained in:
+7
-3
@@ -551,18 +551,22 @@ def main(
|
||||
for url_index, url in enumerate(urls, start=1):
|
||||
url_progress = color_text(f"URL {url_index}/{len(urls)}", colorama.Style.DIM)
|
||||
try:
|
||||
logger.info(f'({url_progress}) Checking "{url}"')
|
||||
logger.info(f'({url_progress}) Processing "{url}"')
|
||||
url_info = downloader.parse_url_info(url)
|
||||
|
||||
if not url_info:
|
||||
error_count += 1
|
||||
logger.error(f"({url_progress}) Invalid URL, skipping")
|
||||
continue
|
||||
|
||||
download_queue = downloader.get_download_queue(url_info)
|
||||
download_queue_medias_metadata = download_queue.medias_metadata
|
||||
if not download_queue_medias_metadata[0]:
|
||||
|
||||
if not download_queue:
|
||||
error_count += 1
|
||||
logger.error(f"({url_progress}) Media not found, skipping")
|
||||
continue
|
||||
|
||||
download_queue_medias_metadata = download_queue.medias_metadata
|
||||
except Exception as e:
|
||||
error_count += 1
|
||||
logger.error(
|
||||
|
||||
+46
-15
@@ -187,39 +187,70 @@ class Downloader:
|
||||
url_type: str,
|
||||
id: str,
|
||||
is_library: bool,
|
||||
) -> DownloadQueue:
|
||||
) -> DownloadQueue | None:
|
||||
download_queue = DownloadQueue()
|
||||
|
||||
if url_type == "artist":
|
||||
artist = self.apple_music_api.get_artist(id)
|
||||
|
||||
if artist is None:
|
||||
return None
|
||||
|
||||
download_queue.medias_metadata = list(
|
||||
self.get_download_queue_from_artist(artist)
|
||||
)
|
||||
elif url_type == "song":
|
||||
download_queue.medias_metadata = [self.apple_music_api.get_song(id)]
|
||||
elif url_type in {"album", "albums"}:
|
||||
|
||||
if url_type == "song":
|
||||
song = self.apple_music_api.get_song(id)
|
||||
|
||||
if song is None:
|
||||
return None
|
||||
|
||||
download_queue.medias_metadata = [song]
|
||||
|
||||
if url_type in {"album", "albums"}:
|
||||
if is_library:
|
||||
album = self.apple_music_api.get_library_album(id)
|
||||
else:
|
||||
album = self.apple_music_api.get_album(id)
|
||||
|
||||
if album is None:
|
||||
return None
|
||||
|
||||
download_queue.medias_metadata = [
|
||||
track for track in album["relationships"]["tracks"]["data"]
|
||||
]
|
||||
elif url_type == "playlist":
|
||||
|
||||
if url_type == "playlist":
|
||||
if is_library:
|
||||
playlist = self.apple_music_api.get_library_playlist(id)
|
||||
download_queue.medias_metadata = [
|
||||
track for track in playlist["relationships"]["tracks"]["data"]
|
||||
]
|
||||
else:
|
||||
playlist = self.apple_music_api.get_playlist(id)
|
||||
download_queue.medias_metadata = [
|
||||
track for track in playlist["relationships"]["tracks"]["data"]
|
||||
]
|
||||
|
||||
if playlist is None:
|
||||
return None
|
||||
|
||||
download_queue.medias_metadata = [
|
||||
track for track in playlist["relationships"]["tracks"]["data"]
|
||||
]
|
||||
download_queue.playlist_attributes = playlist["attributes"]
|
||||
elif url_type == "music-video":
|
||||
download_queue.medias_metadata = [self.apple_music_api.get_music_video(id)]
|
||||
elif url_type == "post":
|
||||
download_queue.medias_metadata = [self.apple_music_api.get_post(id)]
|
||||
|
||||
if url_type == "music-video":
|
||||
music_video = self.apple_music_api.get_music_video(id)
|
||||
|
||||
if music_video is None:
|
||||
return None
|
||||
|
||||
download_queue.medias_metadata = [music_video]
|
||||
|
||||
if url_type == "post":
|
||||
post = self.apple_music_api.get_post(id)
|
||||
|
||||
if post is None:
|
||||
return None
|
||||
|
||||
download_queue.medias_metadata = [post]
|
||||
|
||||
return download_queue
|
||||
|
||||
def get_download_queue_from_artist(
|
||||
|
||||
Reference in New Issue
Block a user