aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfunniray <funniray10@gmail.com>2021-08-09 22:39:20 +0100
committerGitHub <noreply@github.com>2021-08-10 03:09:20 +0530
commit245d43cacfea78c04f8ce52e5a03267bb67b988f (patch)
tree0daf372e118908b93d9311fc7363e6bb0cd57e3c
parent246fb276e0d9ffd407a962c494f265d5d88c0ff3 (diff)
downloadhypervideo-pre-245d43cacfea78c04f8ce52e5a03267bb67b988f.tar.lz
hypervideo-pre-245d43cacfea78c04f8ce52e5a03267bb67b988f.tar.xz
hypervideo-pre-245d43cacfea78c04f8ce52e5a03267bb67b988f.zip
[crunchyroll] Fix thumbnail (#650)
Authored by: funniray
-rw-r--r--yt_dlp/extractor/crunchyroll.py27
1 files changed, 22 insertions, 5 deletions
diff --git a/yt_dlp/extractor/crunchyroll.py b/yt_dlp/extractor/crunchyroll.py
index 98aa1dd9a..091e15e8d 100644
--- a/yt_dlp/extractor/crunchyroll.py
+++ b/yt_dlp/extractor/crunchyroll.py
@@ -29,6 +29,7 @@ from ..utils import (
merge_dicts,
remove_end,
sanitized_Request,
+ try_get,
urlencode_postdata,
xpath_text,
)
@@ -458,6 +459,18 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
video_description = (self._parse_json(self._html_search_regex(
r'<script[^>]*>\s*.+?\[media_id=%s\].+?({.+?"description"\s*:.+?})\);' % video_id,
webpage, 'description', default='{}'), video_id) or media_metadata).get('description')
+
+ thumbnails = []
+ thumbnail_url = (self._parse_json(self._html_search_regex(
+ r'<script type="application\/ld\+json">\n\s*(.+?)<\/script>',
+ webpage, 'thumbnail_url', default='{}'), video_id)).get('image')
+ if thumbnail_url:
+ thumbnails.append({
+ 'url': thumbnail_url,
+ 'width': 1920,
+ 'height': 1080
+ })
+
if video_description:
video_description = lowercase_escape(video_description.replace(r'\r\n', '\n'))
video_uploader = self._html_search_regex(
@@ -592,21 +605,25 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
r'(?s)<h\d[^>]+\bid=["\']showmedia_about_episode_num[^>]+>(.+?)</h\d',
webpage, 'series', fatal=False)
- season = episode = episode_number = duration = thumbnail = None
+ season = episode = episode_number = duration = None
if isinstance(metadata, compat_etree_Element):
season = xpath_text(metadata, 'series_title')
episode = xpath_text(metadata, 'episode_title')
episode_number = int_or_none(xpath_text(metadata, 'episode_number'))
duration = float_or_none(media_metadata.get('duration'), 1000)
- thumbnail = xpath_text(metadata, 'episode_image_url')
if not episode:
episode = media_metadata.get('title')
if not episode_number:
episode_number = int_or_none(media_metadata.get('episode_number'))
- if not thumbnail:
- thumbnail = media_metadata.get('thumbnail', {}).get('url')
+ thumbnail_url = try_get(media, lambda x: x['thumbnail']['url'])
+ if thumbnail_url:
+ thumbnails.append({
+ 'url': thumbnail_url,
+ 'width': 640,
+ 'height': 360
+ })
season_number = int_or_none(self._search_regex(
r'(?s)<h\d[^>]+id=["\']showmedia_about_episode_num[^>]+>.+?</h\d>\s*<h4>\s*Season (\d+)',
@@ -619,7 +636,7 @@ Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
'title': video_title,
'description': video_description,
'duration': duration,
- 'thumbnail': thumbnail,
+ 'thumbnails': thumbnails,
'uploader': video_uploader,
'series': series,
'season': season,