aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRemita Amine <remitamine@gmail.com>2021-04-04 19:16:17 +0100
committerRemita Amine <remitamine@gmail.com>2021-04-04 19:16:17 +0100
commit6beb1ac65b03415764c487fd139298f22e1e0313 (patch)
tree012eb3e73fbaa0bc8454f2723145a4b2c504643d
parent3ae9c0f410b1d4f63e8bada67dd62a8d2852be32 (diff)
[extractor/common] keep support for non standard JSON-LD VideoObject author values
-rw-r--r--youtube_dl/extractor/common.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py
index 8ef22779a..78ff5b6d0 100644
--- a/youtube_dl/extractor/common.py
+++ b/youtube_dl/extractor/common.py
@@ -70,7 +70,6 @@ from ..utils import (
str_or_none,
str_to_int,
strip_or_none,
- try_get,
unescapeHTML,
unified_strdate,
unified_timestamp,
@@ -1276,6 +1275,7 @@ class InfoExtractor(object):
def extract_video_object(e):
assert e['@type'] == 'VideoObject'
+ author = e.get('author')
info.update({
'url': url_or_none(e.get('contentUrl')),
'title': unescapeHTML(e.get('name')),
@@ -1283,7 +1283,11 @@ class InfoExtractor(object):
'thumbnail': url_or_none(e.get('thumbnailUrl') or e.get('thumbnailURL')),
'duration': parse_duration(e.get('duration')),
'timestamp': unified_timestamp(e.get('uploadDate')),
- 'uploader': try_get(e, lambda x: x['author']['name'], compat_str),
+ # author can be an instance of 'Organization' or 'Person' types.
+ # both types can have 'name' property(inherited from 'Thing' type). [1]
+ # however some websites are using 'Text' type instead.
+ # 1. https://schema.org/VideoObject
+ 'uploader': author.get('name') if isinstance(author, dict) else author if isinstance(author, compat_str) else None,
'filesize': float_or_none(e.get('contentSize')),
'tbr': int_or_none(e.get('bitrate')),
'width': int_or_none(e.get('width')),