1
0
mirror of https://github.com/l1ving/youtube-dl synced 2025-03-10 04:56:10 +08:00

[tele5] Playlist downloading

This commit is contained in:
FliegendeWurst 2020-04-12 13:22:20 +02:00
parent 444a763e50
commit cba6cb6986
No known key found for this signature in database
GPG Key ID: CA38E82B54B32A88

View File

@ -12,7 +12,9 @@ from ..compat import (
) )
from ..utils import ( from ..utils import (
NO_DEFAULT, NO_DEFAULT,
smuggle_url,
try_get, try_get,
unsmuggle_url,
) )
@ -48,9 +50,11 @@ class Tele5IE(InfoExtractor):
'skip_download': True, 'skip_download': True,
}, },
}, { }, {
# TODO: 400 Bad Request error on webpage, remove this test? (they might fix it eventually) 'url': 'https://www.tele5.de/timeless/',
'url': 'https://www.tele5.de/video-clip/?ve_id=1609440', 'info_dict': {
'only_matching': True, 'title': 'Timeless',
},
'playlist_count': 6,
}, { }, {
'url': 'https://www.tele5.de/filme/making-of/avengers-endgame/', 'url': 'https://www.tele5.de/filme/making-of/avengers-endgame/',
'only_matching': True, 'only_matching': True,
@ -60,6 +64,9 @@ class Tele5IE(InfoExtractor):
}] }]
def _real_extract(self, url): def _real_extract(self, url):
url, smuggled_data = unsmuggle_url(url, {})
# TODO: do we really need this?
qs = compat_urlparse.parse_qs(compat_urlparse.urlparse(url).query) qs = compat_urlparse.parse_qs(compat_urlparse.urlparse(url).query)
video_id = (qs.get('vid') or qs.get('ve_id') or [None])[0] video_id = (qs.get('vid') or qs.get('ve_id') or [None])[0]
@ -84,6 +91,23 @@ class Tele5IE(InfoExtractor):
display_id = self._match_id(url) display_id = self._match_id(url)
webpage = self._download_webpage(url, display_id) webpage = self._download_webpage(url, display_id)
if not smuggled_data.get('force_singlevideo', False):
# TODO: user now has to specify --no-playlist every time (bad)
if not self._downloader.params.get('noplaylist'):
# TODO: use something other than a regex?
urls = re.findall('href="([^"]+)"\\s+class="special-video__link(?: video-teaser__link)?"', webpage, re.MULTILINE)
entries = []
for url in urls:
entries.append({
'_type': 'url_transparent',
'ie_key': 'Tele5',
'url': smuggle_url(
'https://tele5.de%s' % url,
{'force_singlevideo': True}),
})
title = self._html_search_regex("<h1>([^<]+)</h1>", webpage, 'playlist title')
return self.playlist_result(entries, playlist_title=title)
def extract_id(pattern, name, default=NO_DEFAULT): def extract_id(pattern, name, default=NO_DEFAULT):
return self._html_search_regex( return self._html_search_regex(
(r'id\s*=\s*["\']video-player["\'][^>]+data-id\s*=\s*["\'](%s)' % pattern, (r'id\s*=\s*["\']video-player["\'][^>]+data-id\s*=\s*["\'](%s)' % pattern,