Authored by: bashonly
pull/9850/head
bashonly 4 weeks ago
parent d5a3888291
commit 0c922cd588
No known key found for this signature in database
GPG Key ID: 783F096F253D15B0

@ -360,12 +360,6 @@ class PatreonIE(PatreonBaseIE):
'channel_follower_count': ('attributes', 'patron_count', {int_or_none}),
}))
# Not all `info` is extracted until after the previous loop is exhausted
for entry in entries:
entry.update(info)
# Add `id` field after updating entries so indexed id is not overwritten
info['id'] = video_id
# handle Vimeo embeds
if traverse_obj(attributes, ('embed', 'provider')) == 'Vimeo':
v_url = urllib.parse.unquote(self._html_search_regex(
@ -377,11 +371,11 @@ class PatreonIE(PatreonBaseIE):
fatal=False, errnote=False):
entries.append(self.url_result(
VimeoIE._smuggle_referrer(v_url, 'https://patreon.com/'),
VimeoIE, url_transparent=True, **info))
VimeoIE, url_transparent=True))
embed_url = traverse_obj(attributes, ('embed', 'url', {url_or_none}))
if embed_url and self._request_webpage(embed_url, video_id, 'Checking embed URL', fatal=False, errnote=False):
entries.append(self.url_result(embed_url, **info))
entries.append(self.url_result(embed_url))
post_file = traverse_obj(attributes, ('post_file', {dict}))
if post_file:
@ -389,32 +383,36 @@ class PatreonIE(PatreonBaseIE):
ext = determine_ext(name)
if ext in KNOWN_EXTENSIONS:
entries.append({
**info,
'id': video_id,
'ext': ext,
'url': post_file['url'],
})
elif name == 'video' or determine_ext(post_file.get('url')) == 'm3u8':
formats, subtitles = self._extract_m3u8_formats_and_subtitles(post_file['url'], video_id)
entries.append({
**info,
'id': video_id,
'formats': formats,
'subtitles': subtitles,
})
can_view_post = traverse_obj(attributes, 'current_user_can_view')
comments = None
if can_view_post and info.get('comment_count'):
info['__post_extractor'] = self.extract_comments(video_id)
comments = self.extract_comments(video_id)
if not entries and can_view_post is False:
self.raise_no_formats('You do not have access to this post', video_id=video_id, expected=True)
elif not entries:
self.raise_no_formats('No supported media found in this post', video_id=video_id, expected=True)
elif len(entries) == 1:
# Need to unpack info again to add comments and overwrite potentially indexed id
return {**entries[0], **info}
info.update(entries[0])
else:
return self.playlist_result(entries, **info)
# Return only metadata for --ignore-no-formats-error
for entry in entries:
entry.update(info)
return self.playlist_result(entries, video_id, **info, __post_extract=comments)
info['id'] = video_id
info['__post_extract'] = comments
return info
def _get_comments(self, post_id):

Loading…
Cancel
Save