1
1
mirror of https://github.com/ytdl-org/youtube-dl synced 2024-11-27 17:26:51 +01:00

[picarto] Extract more metadata (closes #16518)

This commit is contained in:
Sergey M․ 2018-11-11 16:08:54 +07:00
parent f17a24a6df
commit 730c0d12a0
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D

View File

@ -1,6 +1,7 @@
# coding: utf-8 # coding: utf-8
from __future__ import unicode_literals from __future__ import unicode_literals
import re
import time import time
from .common import InfoExtractor from .common import InfoExtractor
@ -8,6 +9,7 @@ from ..compat import compat_str
from ..utils import ( from ..utils import (
ExtractorError, ExtractorError,
js_to_json, js_to_json,
try_get,
update_url_query, update_url_query,
urlencode_postdata, urlencode_postdata,
) )
@ -32,7 +34,9 @@ class PicartoIE(InfoExtractor):
return False if PicartoVodIE.suitable(url) else super(PicartoIE, cls).suitable(url) return False if PicartoVodIE.suitable(url) else super(PicartoIE, cls).suitable(url)
def _real_extract(self, url): def _real_extract(self, url):
channel_id = self._match_id(url) mobj = re.match(self._VALID_URL, url)
channel_id = mobj.group('id')
metadata = self._download_json( metadata = self._download_json(
'https://api.picarto.tv/v1/channel/name/' + channel_id, 'https://api.picarto.tv/v1/channel/name/' + channel_id,
channel_id) channel_id)
@ -45,7 +49,7 @@ class PicartoIE(InfoExtractor):
data=urlencode_postdata({'loadbalancinginfo': channel_id}), data=urlencode_postdata({'loadbalancinginfo': channel_id}),
note='Downloading load balancing info') note='Downloading load balancing info')
token = self._VALID_URL_RE.match(url).group('token') or 'public' token = mobj.group('token') or 'public'
params = { params = {
'con': int(time.time() * 1000), 'con': int(time.time() * 1000),
'token': token, 'token': token,
@ -99,9 +103,11 @@ class PicartoIE(InfoExtractor):
return { return {
'id': channel_id, 'id': channel_id,
'title': self._live_title(channel_id), 'title': self._live_title(metadata.get('title') or channel_id),
'is_live': True, 'is_live': True,
'thumbnail': metadata.get('thumbnails', {}).get('web'), 'thumbnail': try_get(metadata, lambda x: x['thumbnails']['web']),
'channel': channel_id,
'channel_url': 'https://picarto.tv/%s' % channel_id,
'age_limit': age_limit, 'age_limit': age_limit,
'formats': formats, 'formats': formats,
} }