feature/sponsorblock #17

Merged
Hazel merged 20 commits from feature/sponsorblock into experimental 2024-04-27 09:41:36 +00:00
Showing only changes of commit 72531f0bee - Show all commits

View File

@ -552,7 +552,12 @@ class YoutubeMusic(SuperYouTube):
return self.download_values_by_url[source.url]
if ydl_res is None:
ydl_res = self.ydl.extract_info(url=source.url, download=False)
try:
ydl_res = self.ydl.extract_info(url=source.url, download=False)
except DownloadError as e:
self.not_download[source.hash_url] = e
self.LOGGER.error(f"Couldn't fetch song from {source.url}. {e}")
return {"error": e}
_best_format = _get_best_format(ydl_res.get("formats", [{}]))
self.download_values_by_url[source.url] = {
@ -567,7 +572,7 @@ class YoutubeMusic(SuperYouTube):
def download_song_to_target(self, source: Source, target: Target, desc: str = None) -> DownloadResult:
media = self.fetch_media_url(source)
if source.hash_url not in self.not_download:
if source.hash_url not in self.not_download and "error" not in media:
result = self.download_connection.stream_into(
media["url"],
target,
@ -580,7 +585,7 @@ class YoutubeMusic(SuperYouTube):
method="GET",
)
else:
result = DownloadResult(error_message=str(self.not_download[source.hash_url]))
result = DownloadResult(error_message=str(media.get("error") or self.not_download[source.hash_url]))
if result.is_fatal_error:
result.merge(super().download_song_to_target(source=source, target=target, desc=desc))