adjust get_cover_url

This commit is contained in:
Rafael Moraes
2024-12-15 00:09:05 -03:00
parent 5318837ebd
commit e16a84dd2e
8 changed files with 42 additions and 34 deletions
+8 -1
View File
@@ -72,13 +72,20 @@ MEDIA_TYPE_MP4_MAPPING = {
"Music video": 6,
}
COVER_SIZE_X_KEY_MAPPING_AUDIO = {
COVER_SIZE_X_KEY_MAPPING_SONG = {
CoverSize.SMALL: "ab67616d00004851",
CoverSize.MEDIUM: "ab67616d00001e02",
CoverSize.LARGE: "ab67616d0000b273",
CoverSize.EXTRA_LARGE: "ab67616d000082c1",
}
COVER_SIZE_X_KEY_MAPPING_EPISODE= {
CoverSize.SMALL: "ab6765630000f68d",
CoverSize.MEDIUM: "ab67656300005f1f",
CoverSize.LARGE: "ab6765630000ba8a",
CoverSize.EXTRA_LARGE: "ab6765630000ba8a",
}
COVER_SIZE_X_KEY_MAPPING_VIDEO = {
CoverSize.SMALL: "ab6742d3000052b7",
CoverSize.MEDIUM: "ab6742d3000052b7",
+13 -1
View File
@@ -20,7 +20,6 @@ from PIL import Image
from pywidevine import PSSH, Cdm, Device
from .constants import (
COVER_SIZE_X_KEY_MAPPING_AUDIO,
MEDIA_TYPE_MP4_MAPPING,
MP4_TAGS_MAP,
VORBIS_TAGS_MAPPING,
@@ -259,6 +258,19 @@ class Downloader:
)
return download_queue
def get_cover_url(self, metadata: dict, cover_size_mapping: dict) -> str | None:
if not metadata.get("images"):
return None
return self._get_cover_url(metadata["images"], cover_size_mapping)
def _get_cover_url(self, images_dict: list[dict], cover_size_mapping: dict) -> str:
original_cover_url = images_dict[0]["url"]
original_cover_id = original_cover_url.split("/")[-1]
cover_key = cover_size_mapping[self.cover_size]
cover_id = cover_key + original_cover_id[len(cover_key) :]
cover_url = f"{original_cover_url.rpartition('/')[0]}/{cover_id}"
return cover_url
def get_media_id(self, media_metadata: dict) -> str:
return (media_metadata.get("linked_from") or media_metadata)["id"]
+1 -14
View File
@@ -10,7 +10,7 @@ from yt_dlp.YoutubeDL import YoutubeDL
from .constants import (
AAC_AUDIO_QUALITIES,
AUDIO_QUALITY_X_FORMAT_ID_MAPPING,
COVER_SIZE_X_KEY_MAPPING_AUDIO,
COVER_SIZE_X_KEY_MAPPING_SONG,
VORBIS_AUDIO_QUALITIES,
)
from .downloader import Downloader
@@ -35,19 +35,6 @@ class DownloaderAudio:
self.download_mode = download_mode
self.remux_mode = remux_mode
def get_cover_url(self, metadata: dict) -> str | None:
if not metadata.get("images"):
return None
return self._get_cover_url(metadata["images"])
def _get_cover_url(self, images_dict: list[dict]) -> str:
original_cover_url = images_dict[0]["url"]
original_cover_id = original_cover_url.split("/")[-1]
cover_key = COVER_SIZE_X_KEY_MAPPING_AUDIO[self.downloader.cover_size]
cover_id = cover_key + original_cover_id[len(cover_key) :]
cover_url = f"{original_cover_url.rpartition('/')[0]}/{cover_id}"
return cover_url
def get_file_extension(
self,
) -> str:
+5 -2
View File
@@ -3,7 +3,7 @@ from __future__ import annotations
import logging
from pathlib import Path
from .constants import AAC_AUDIO_QUALITIES
from .constants import AAC_AUDIO_QUALITIES, COVER_SIZE_X_KEY_MAPPING_EPISODE
from .downloader_audio import DownloaderAudio
from .models import StreamInfoAudio
@@ -114,7 +114,10 @@ class DownloaderEpisode(DownloaderAudio):
file_extension,
)
cover_path = self.get_cover_path(final_path)
cover_url = self.get_cover_url(episode_metadata)
cover_url = self.downloader.get_cover_url(
episode_metadata,
COVER_SIZE_X_KEY_MAPPING_EPISODE,
)
decrypted_path = None
remuxed_path = None
if final_path.exists() and not self.downloader.overwrite:
+5 -1
View File
@@ -4,6 +4,7 @@ import logging
from .downloader_episode import DownloaderEpisode
from .downloader_video import DownloaderVideo
from .constants import COVER_SIZE_X_KEY_MAPPING_EPISODE
logger = logging.getLogger("votify")
@@ -80,7 +81,10 @@ class DownloaderEpisodeVideo(DownloaderVideo):
file_extension,
)
cover_path = self.get_cover_path(final_path)
cover_url = self.downloader_episode.get_cover_url(show_metadata)
cover_url = self.downloader.get_cover_url(
show_metadata,
COVER_SIZE_X_KEY_MAPPING_EPISODE,
)
remuxed_path = None
if final_path.exists() and not self.downloader.overwrite:
logger.warning(f'Episode already exists at "{final_path}", skipping')
+5 -1
View File
@@ -5,6 +5,7 @@ import logging
from InquirerPy import inquirer
from InquirerPy.base.control import Choice
from .constants import COVER_SIZE_X_KEY_MAPPING_VIDEO
from .downloader_video import DownloaderVideo
logger = logging.getLogger("votify")
@@ -189,7 +190,10 @@ class DownloaderMusicVideo(DownloaderVideo):
file_extension,
)
cover_path = self.get_cover_path(final_path)
cover_url = self.get_cover_url(album_metadata)
cover_url = self.downloader.get_cover_url(
album_metadata,
COVER_SIZE_X_KEY_MAPPING_VIDEO,
)
remuxed_path = None
if final_path.exists() and not self.downloader.overwrite:
logger.warning(f'Music video already exists at "{final_path}", skipping')
+5 -1
View File
@@ -4,6 +4,7 @@ import datetime
import logging
from pathlib import Path
from .constants import COVER_SIZE_X_KEY_MAPPING_SONG
from .downloader_audio import DownloaderAudio
from .models import Lyrics, StreamInfoAudio
@@ -200,7 +201,10 @@ class DownloaderSong(DownloaderAudio):
)
lrc_path = self.downloader.get_lrc_path(final_path)
cover_path = self.get_cover_path(final_path)
cover_url = self.get_cover_url(album_metadata)
cover_url = self.downloader.get_cover_url(
album_metadata,
COVER_SIZE_X_KEY_MAPPING_SONG,
)
decrypted_path = None
remuxed_path = None
if self.lrc_only:
-13
View File
@@ -26,19 +26,6 @@ class DownloaderVideo:
self.remux_mode = remux_mode
self._adjust_remux_mode()
def get_cover_url(self, metadata: dict) -> str | None:
if not metadata.get("images"):
return None
return self._get_cover_url(metadata["images"])
def _get_cover_url(self, images_dict: list[dict]) -> str:
original_cover_url = images_dict[0]["url"]
original_cover_id = original_cover_url.split("/")[-1]
cover_key = COVER_SIZE_X_KEY_MAPPING_VIDEO[self.downloader.cover_size]
cover_id = cover_key + original_cover_id[len(cover_key) :]
cover_url = f"{original_cover_url.rpartition('/')[0]}/{cover_id}"
return cover_url
def _adjust_remux_mode(self):
if self.video_format == VideoFormat.WEBM:
self.remux_mode = RemuxModeVideo.FFMPEG