mirror of https://github.com/yt-dlp/yt-dlp.git
[laola1tv] Add support for livestreams (Closes #8934)
This commit is contained in:
parent
cc7397b04d
commit
2beeb286e1
|
@ -19,7 +19,7 @@ from ..utils import (
|
||||||
|
|
||||||
|
|
||||||
class Laola1TvIE(InfoExtractor):
|
class Laola1TvIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:www\.)?laola1\.tv/(?P<lang>[a-z]+)-(?P<portal>[a-z]+)/[^/]+/(?P<slug>[^/?#&]+)'
|
_VALID_URL = r'https?://(?:www\.)?laola1\.tv/(?P<lang>[a-z]+)-(?P<portal>[a-z]+)/(?P<kind>[^/]+)/(?P<slug>[^/?#&]+)'
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'http://www.laola1.tv/de-de/video/straubing-tigers-koelner-haie/227883.html',
|
'url': 'http://www.laola1.tv/de-de/video/straubing-tigers-koelner-haie/227883.html',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
|
@ -33,7 +33,7 @@ class Laola1TvIE(InfoExtractor):
|
||||||
},
|
},
|
||||||
'params': {
|
'params': {
|
||||||
'skip_download': True,
|
'skip_download': True,
|
||||||
}
|
},
|
||||||
}, {
|
}, {
|
||||||
'url': 'http://www.laola1.tv/de-de/video/straubing-tigers-koelner-haie',
|
'url': 'http://www.laola1.tv/de-de/video/straubing-tigers-koelner-haie',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
|
@ -47,12 +47,28 @@ class Laola1TvIE(InfoExtractor):
|
||||||
},
|
},
|
||||||
'params': {
|
'params': {
|
||||||
'skip_download': True,
|
'skip_download': True,
|
||||||
}
|
},
|
||||||
|
}, {
|
||||||
|
'url': 'http://www.laola1.tv/de-de/livestream/2016-03-22-belogorie-belgorod-trentino-diatec-lde',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '487850',
|
||||||
|
'display_id': '2016-03-22-belogorie-belgorod-trentino-diatec-lde',
|
||||||
|
'ext': 'flv',
|
||||||
|
'title': 'Belogorie BELGOROD - TRENTINO Diatec',
|
||||||
|
'upload_date': '20160322',
|
||||||
|
'uploader': 'CEV - Europäischer Volleyball Verband',
|
||||||
|
'is_live': True,
|
||||||
|
'categories': ['Volleyball'],
|
||||||
|
},
|
||||||
|
'params': {
|
||||||
|
'skip_download': True,
|
||||||
|
},
|
||||||
}]
|
}]
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
mobj = re.match(self._VALID_URL, url)
|
mobj = re.match(self._VALID_URL, url)
|
||||||
display_id = mobj.group('slug')
|
display_id = mobj.group('slug')
|
||||||
|
kind = mobj.group('kind')
|
||||||
lang = mobj.group('lang')
|
lang = mobj.group('lang')
|
||||||
portal = mobj.group('portal')
|
portal = mobj.group('portal')
|
||||||
|
|
||||||
|
@ -85,12 +101,17 @@ class Laola1TvIE(InfoExtractor):
|
||||||
_v = lambda x, **k: xpath_text(hd_doc, './/video/' + x, **k)
|
_v = lambda x, **k: xpath_text(hd_doc, './/video/' + x, **k)
|
||||||
title = _v('title', fatal=True)
|
title = _v('title', fatal=True)
|
||||||
|
|
||||||
|
VS_TARGETS = {
|
||||||
|
'video': '2',
|
||||||
|
'livestream': '17',
|
||||||
|
}
|
||||||
|
|
||||||
req = sanitized_Request(
|
req = sanitized_Request(
|
||||||
'https://club.laola1.tv/sp/laola1/api/v3/user/session/premium/player/stream-access?%s' %
|
'https://club.laola1.tv/sp/laola1/api/v3/user/session/premium/player/stream-access?%s' %
|
||||||
compat_urllib_parse.urlencode({
|
compat_urllib_parse.urlencode({
|
||||||
'videoId': video_id,
|
'videoId': video_id,
|
||||||
'target': '2',
|
'target': VS_TARGETS.get(kind, '2'),
|
||||||
'label': 'laola1tv',
|
'label': _v('label'),
|
||||||
'area': _v('area'),
|
'area': _v('area'),
|
||||||
}),
|
}),
|
||||||
urlencode_postdata(
|
urlencode_postdata(
|
||||||
|
|
Loading…
Reference in New Issue