mirror of
https://codeberg.org/polarisfm/youtube-dl
synced 2024-11-26 10:24:33 +01:00
Add live.le.com functionality
This commit is contained in:
parent
a919ca0ad6
commit
e44267772b
@ -513,6 +513,7 @@ from .leeco import (
|
|||||||
LeIE,
|
LeIE,
|
||||||
LePlaylistIE,
|
LePlaylistIE,
|
||||||
LetvCloudIE,
|
LetvCloudIE,
|
||||||
|
LeLiveLunboIE,
|
||||||
)
|
)
|
||||||
from .libraryofcongress import LibraryOfCongressIE
|
from .libraryofcongress import LibraryOfCongressIE
|
||||||
from .libsyn import LibsynIE
|
from .libsyn import LibsynIE
|
||||||
|
@ -21,6 +21,7 @@ from ..utils import (
|
|||||||
orderedSet,
|
orderedSet,
|
||||||
parse_iso8601,
|
parse_iso8601,
|
||||||
str_or_none,
|
str_or_none,
|
||||||
|
try_get,
|
||||||
url_basename,
|
url_basename,
|
||||||
urshift,
|
urshift,
|
||||||
)
|
)
|
||||||
@ -202,8 +203,64 @@ class LeIE(InfoExtractor):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class LeLiveLunboIE(InfoExtractor):
|
||||||
|
_VALID_URL = r'https?://live\.le\.com/lunbo/play/index\.shtml\?channel=(?P<id>[0-9]+)'
|
||||||
|
_TEST = {
|
||||||
|
'url': 'http://live.le.com/lunbo/play/index.shtml?channel=225',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '225',
|
||||||
|
'ext': 'm3u8',
|
||||||
|
'title': '电视剧',
|
||||||
|
'is_live': True,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def _real_extract(self, url):
|
||||||
|
video_id = self._match_id(url)
|
||||||
|
json = self._download_json('http://player.pc.le.com/player/startup_by_channel_id/1001/%s' % video_id,
|
||||||
|
video_id, query={'host': 'live.le.com'})
|
||||||
|
streams = json['streams']
|
||||||
|
formats = []
|
||||||
|
for stream in streams:
|
||||||
|
surl = try_get(stream, lambda x: x['streamUrl'])
|
||||||
|
if not surl:
|
||||||
|
continue
|
||||||
|
bitrate = int_or_none(stream.get('rate'))
|
||||||
|
query = {'format': '1',
|
||||||
|
'expect': '2',
|
||||||
|
'platid': '10',
|
||||||
|
'splatid': '1001',
|
||||||
|
'uuid': '28394F488CFCF69F405F55B6B046EA4AAC32713C_0',
|
||||||
|
'vkit': '20161017'
|
||||||
|
}
|
||||||
|
if surl:
|
||||||
|
surl = self._download_json(surl, video_id, query=query)
|
||||||
|
surl = try_get(surl, lambda x: x['location'])
|
||||||
|
formats.append({
|
||||||
|
'url': surl,
|
||||||
|
'ext': 'mp4',
|
||||||
|
'bitrate': bitrate
|
||||||
|
})
|
||||||
|
|
||||||
|
self._sort_formats(formats)
|
||||||
|
|
||||||
|
titles = self._download_json('http://static.api.letv.com/live/proxy',
|
||||||
|
video_id, query={'belongArea': '100', 'clientId': '1001'})['data']
|
||||||
|
for entry in titles:
|
||||||
|
if entry['channelId'] == video_id:
|
||||||
|
title = entry['channelName']
|
||||||
|
break
|
||||||
|
|
||||||
|
return {
|
||||||
|
'id': video_id,
|
||||||
|
'title': self._live_title(title),
|
||||||
|
'is_live': True,
|
||||||
|
'formats': formats
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
class LePlaylistIE(InfoExtractor):
|
class LePlaylistIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://[a-z]+\.le\.com/(?!video)[a-z]+/(?P<id>[a-z0-9_]+)'
|
_VALID_URL = r'https?://(?!live)[a-z]+\.le\.com/(?!video)[a-z]+/(?P<id>[a-z0-9_]+)'
|
||||||
|
|
||||||
_TESTS = [{
|
_TESTS = [{
|
||||||
'url': 'http://www.le.com/tv/46177.html',
|
'url': 'http://www.le.com/tv/46177.html',
|
||||||
|
Loading…
Reference in New Issue
Block a user