mirror of
https://codeberg.org/polarisfm/youtube-dl.git
synced 2024-12-30 19:45:06 +00:00
[godtv] Improve and add support for playlists (Closes #9608)
This commit is contained in:
parent
bb1e44cc8e
commit
c0fed3bda5
1 changed files with 32 additions and 4 deletions
|
@ -1,13 +1,13 @@
|
||||||
# coding: utf-8
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
from .ooyala import OoyalaIE
|
from .ooyala import OoyalaIE
|
||||||
|
from ..utils import js_to_json
|
||||||
|
|
||||||
|
|
||||||
class GodTVIE(InfoExtractor):
|
class GodTVIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:www\.)?god\.tv(?:/[^/]+)+/(?P<id>[^/?#&]+)'
|
_VALID_URL = r'https?://(?:www\.)?god\.tv(?:/[^/]+)+/(?P<id>[^/?#&]+)'
|
||||||
_TEST = {
|
_TESTS = [{
|
||||||
'url': 'http://god.tv/jesus-image/video/jesus-conference-2016/randy-needham',
|
'url': 'http://god.tv/jesus-image/video/jesus-conference-2016/randy-needham',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': 'lpd3g2MzE6D1g8zFAKz8AGpxWcpu6o_3',
|
'id': 'lpd3g2MzE6D1g8zFAKz8AGpxWcpu6o_3',
|
||||||
|
@ -18,12 +18,40 @@ class GodTVIE(InfoExtractor):
|
||||||
'params': {
|
'params': {
|
||||||
'skip_download': True,
|
'skip_download': True,
|
||||||
}
|
}
|
||||||
}
|
}, {
|
||||||
|
'url': 'http://god.tv/playlist/bible-study',
|
||||||
|
'info_dict': {
|
||||||
|
'id': 'bible-study',
|
||||||
|
},
|
||||||
|
'playlist_mincount': 37,
|
||||||
|
}]
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
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)
|
||||||
ooyala_id = self._search_regex(r'"content_id"\s*:\s*"([\w-]{32})"', webpage, display_id)
|
|
||||||
|
settings = self._parse_json(
|
||||||
|
self._search_regex(
|
||||||
|
r'jQuery\.extend\(Drupal\.settings\s*,\s*({.+?})\);',
|
||||||
|
webpage, 'settings', default='{}'),
|
||||||
|
display_id, transform_source=js_to_json, fatal=False)
|
||||||
|
|
||||||
|
ooyala_id = None
|
||||||
|
|
||||||
|
if settings:
|
||||||
|
playlist = settings.get('playlist')
|
||||||
|
if playlist and isinstance(playlist, list):
|
||||||
|
entries = [
|
||||||
|
OoyalaIE._build_url_result(video['content_id'])
|
||||||
|
for video in playlist if video.get('content_id')]
|
||||||
|
if entries:
|
||||||
|
return self.playlist_result(entries, display_id)
|
||||||
|
ooyala_id = settings.get('ooyala', {}).get('content_id')
|
||||||
|
|
||||||
|
if not ooyala_id:
|
||||||
|
ooyala_id = self._search_regex(
|
||||||
|
r'["\']content_id["\']\s*:\s*(["\'])(?P<id>[\w-]+)\1',
|
||||||
|
webpage, 'ooyala id', group='id')
|
||||||
|
|
||||||
return OoyalaIE._build_url_result(ooyala_id)
|
return OoyalaIE._build_url_result(ooyala_id)
|
||||||
|
|
Loading…
Reference in a new issue