Compare commits
2 Commits
6226ae4a13
...
72531f0bee
Author | SHA1 | Date | |
---|---|---|---|
72531f0bee | |||
207ca1b6a5 |
@ -68,9 +68,11 @@ def write_metadata_to_target(metadata: Metadata, target: Target, song: Song):
|
|||||||
LOGGER.info(str(metadata))
|
LOGGER.info(str(metadata))
|
||||||
|
|
||||||
if song.artwork.best_variant is not None:
|
if song.artwork.best_variant is not None:
|
||||||
|
best_variant = song.artwork.best_variant
|
||||||
|
|
||||||
r = artwork_connection.get(
|
r = artwork_connection.get(
|
||||||
url=song.artwork.best_variant["url"],
|
url=best_variant["url"],
|
||||||
disable_cache=False,
|
name=song.artwork.get_variant_name(best_variant, song.option_string),
|
||||||
)
|
)
|
||||||
|
|
||||||
temp_target: Target = Target.temp()
|
temp_target: Target = Target.temp()
|
||||||
|
@ -8,7 +8,7 @@ from .metadata import (
|
|||||||
ID3Timestamp,
|
ID3Timestamp,
|
||||||
Metadata
|
Metadata
|
||||||
)
|
)
|
||||||
from ..utils.string_processing import unify, hash_url
|
from ..utils.string_processing import unify, hash_url, hash_url
|
||||||
|
|
||||||
from .parents import OuterProxy as Base
|
from .parents import OuterProxy as Base
|
||||||
|
|
||||||
@ -50,6 +50,9 @@ class Artwork:
|
|||||||
return None
|
return None
|
||||||
return min(self._variant_mapping.values(), key=lambda x: x["deviation"])
|
return min(self._variant_mapping.values(), key=lambda x: x["deviation"])
|
||||||
|
|
||||||
|
def get_variant_name(self, variant: ArtworkVariant, option_string: str) -> str:
|
||||||
|
return f"artwork_{variant['width']}x{variant['height']}_{option_string}"
|
||||||
|
|
||||||
def __merge__(self, other: Artwork, override: bool = False) -> None:
|
def __merge__(self, other: Artwork, override: bool = False) -> None:
|
||||||
for key, value in other._variant_mapping.items():
|
for key, value in other._variant_mapping.items():
|
||||||
if key not in self._variant_mapping or override:
|
if key not in self._variant_mapping or override:
|
||||||
|
@ -552,7 +552,12 @@ class YoutubeMusic(SuperYouTube):
|
|||||||
return self.download_values_by_url[source.url]
|
return self.download_values_by_url[source.url]
|
||||||
|
|
||||||
if ydl_res is None:
|
if ydl_res is None:
|
||||||
|
try:
|
||||||
ydl_res = self.ydl.extract_info(url=source.url, download=False)
|
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", [{}]))
|
_best_format = _get_best_format(ydl_res.get("formats", [{}]))
|
||||||
|
|
||||||
self.download_values_by_url[source.url] = {
|
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:
|
def download_song_to_target(self, source: Source, target: Target, desc: str = None) -> DownloadResult:
|
||||||
media = self.fetch_media_url(source)
|
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(
|
result = self.download_connection.stream_into(
|
||||||
media["url"],
|
media["url"],
|
||||||
target,
|
target,
|
||||||
@ -580,7 +585,7 @@ class YoutubeMusic(SuperYouTube):
|
|||||||
method="GET",
|
method="GET",
|
||||||
)
|
)
|
||||||
else:
|
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:
|
if result.is_fatal_error:
|
||||||
result.merge(super().download_song_to_target(source=source, target=target, desc=desc))
|
result.merge(super().download_song_to_target(source=source, target=target, desc=desc))
|
||||||
|
Loading…
Reference in New Issue
Block a user