aboutsummaryrefslogtreecommitdiff
path: root/yt_dlp/extractor
diff options
context:
space:
mode:
Diffstat (limited to 'yt_dlp/extractor')
-rw-r--r--yt_dlp/extractor/la7.py4
-rw-r--r--yt_dlp/extractor/redtube.py2
-rw-r--r--yt_dlp/extractor/videoken.py15
-rw-r--r--yt_dlp/extractor/youtube.py2
4 files changed, 12 insertions, 11 deletions
diff --git a/yt_dlp/extractor/la7.py b/yt_dlp/extractor/la7.py
index a3cd12b00..f5fd24134 100644
--- a/yt_dlp/extractor/la7.py
+++ b/yt_dlp/extractor/la7.py
@@ -208,9 +208,9 @@ class LA7PodcastIE(LA7PodcastEpisodeIE): # XXX: Do not subclass from concrete I
'url': 'https://www.la7.it/propagandalive/podcast',
'info_dict': {
'id': 'propagandalive',
- 'title': "Propaganda Live",
+ 'title': 'Propaganda Live',
},
- 'playlist_count_min': 10,
+ 'playlist_mincount': 10,
}]
def _real_extract(self, url):
diff --git a/yt_dlp/extractor/redtube.py b/yt_dlp/extractor/redtube.py
index 49076ccd8..172c31b39 100644
--- a/yt_dlp/extractor/redtube.py
+++ b/yt_dlp/extractor/redtube.py
@@ -39,7 +39,7 @@ class RedTubeIE(InfoExtractor):
def _real_extract(self, url):
video_id = self._match_id(url)
webpage = self._download_webpage(
- 'http://www.redtube.com/%s' % video_id, video_id)
+ f'https://www.redtube.com/{video_id}', video_id)
ERRORS = (
(('video-deleted-info', '>This video has been removed'), 'has been removed'),
diff --git a/yt_dlp/extractor/videoken.py b/yt_dlp/extractor/videoken.py
index 560b41a6d..eaf0cc8ae 100644
--- a/yt_dlp/extractor/videoken.py
+++ b/yt_dlp/extractor/videoken.py
@@ -11,6 +11,7 @@ from ..utils import (
ExtractorError,
InAdvancePagedList,
int_or_none,
+ remove_start,
traverse_obj,
update_url_query,
url_or_none,
@@ -39,11 +40,11 @@ class VideoKenBaseIE(InfoExtractor):
if not video_url and not video_id:
return
elif not video_url or 'embed/sign-in' in video_url:
- video_url = f'https://slideslive.com/embed/{video_id.lstrip("slideslive-")}'
+ video_url = f'https://slideslive.com/embed/{remove_start(video_id, "slideslive-")}'
if url_or_none(referer):
return update_url_query(video_url, {
'embed_parent_url': referer,
- 'embed_container_origin': f'https://{urllib.parse.urlparse(referer).netloc}',
+ 'embed_container_origin': f'https://{urllib.parse.urlparse(referer).hostname}',
})
return video_url
@@ -57,12 +58,12 @@ class VideoKenBaseIE(InfoExtractor):
video_url = video_id
ie_key = 'Youtube'
else:
- video_url = traverse_obj(video, 'embed_url', 'embeddableurl')
- if urllib.parse.urlparse(video_url).netloc == 'slideslive.com':
+ video_url = traverse_obj(video, 'embed_url', 'embeddableurl', expected_type=url_or_none)
+ if not video_url:
+ continue
+ elif urllib.parse.urlparse(video_url).hostname == 'slideslive.com':
ie_key = SlidesLiveIE
video_url = self._create_slideslive_url(video_url, video_id, url)
- if not video_url:
- continue
yield self.url_result(video_url, ie_key, video_id)
@@ -178,7 +179,7 @@ class VideoKenIE(VideoKenBaseIE):
return self.url_result(
self._create_slideslive_url(None, video_id, url), SlidesLiveIE, video_id)
elif re.match(r'^[\w-]{11}$', video_id):
- self.url_result(video_id, 'Youtube', video_id)
+ return self.url_result(video_id, 'Youtube', video_id)
else:
raise ExtractorError('Unable to extract without VideoKen API response')
diff --git a/yt_dlp/extractor/youtube.py b/yt_dlp/extractor/youtube.py
index adbac8e95..f6caf0970 100644
--- a/yt_dlp/extractor/youtube.py
+++ b/yt_dlp/extractor/youtube.py
@@ -6687,7 +6687,7 @@ class YoutubePlaylistIE(InfoExtractor):
'uploader_url': 'https://www.youtube.com/@milan5503',
'availability': 'public',
},
- 'expected_warnings': [r'[Uu]navailable videos? (is|are|will be) hidden'],
+ 'expected_warnings': [r'[Uu]navailable videos? (is|are|will be) hidden', 'Retrying', 'Giving up'],
}, {
'url': 'http://www.youtube.com/embed/_xDOZElKyNU?list=PLsyOSbh5bs16vubvKePAQ1x3PhKavfBIl',
'playlist_mincount': 455,