mirror of
https://github.com/l1ving/youtube-dl
synced 2024-11-20 23:52:50 +08:00
[byutv] Add support (Fixes #2612)
This commit is contained in:
parent
f847ca02d3
commit
6949d81095
@ -25,6 +25,7 @@ from .bloomberg import BloombergIE
|
|||||||
from .br import BRIE
|
from .br import BRIE
|
||||||
from .breakcom import BreakIE
|
from .breakcom import BreakIE
|
||||||
from .brightcove import BrightcoveIE
|
from .brightcove import BrightcoveIE
|
||||||
|
from .byutv import BYUtvIE
|
||||||
from .c56 import C56IE
|
from .c56 import C56IE
|
||||||
from .canal13cl import Canal13clIE
|
from .canal13cl import Canal13clIE
|
||||||
from .canalplus import CanalplusIE
|
from .canalplus import CanalplusIE
|
||||||
|
50
youtube_dl/extractor/byutv.py
Normal file
50
youtube_dl/extractor/byutv.py
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
|
||||||
|
from .common import InfoExtractor
|
||||||
|
from ..utils import (
|
||||||
|
ExtractorError,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class BYUtvIE(InfoExtractor):
|
||||||
|
_VALID_URL = r'^https?://(?:www\.)?byutv.org/watch/[0-9a-f-]+/(?P<video_id>[^/?#]+)'
|
||||||
|
_TEST = {
|
||||||
|
'url': 'http://www.byutv.org/watch/44e80f7b-e3ba-43ba-8c51-b1fd96c94a79/granite-flats-talking',
|
||||||
|
'info_dict': {
|
||||||
|
'id': 'granite-flats-talking',
|
||||||
|
'ext': 'mp4',
|
||||||
|
'description': 'md5:1a7ae3e153359b7cc355ef3963441e5f',
|
||||||
|
'title': 'Talking',
|
||||||
|
'thumbnail': 're:^https?://.*promo.*'
|
||||||
|
},
|
||||||
|
'params': {
|
||||||
|
'skip_download': True,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def _real_extract(self, url):
|
||||||
|
mobj = re.match(self._VALID_URL, url)
|
||||||
|
video_id = mobj.group('video_id')
|
||||||
|
|
||||||
|
webpage = self._download_webpage(url, video_id)
|
||||||
|
episode_code = self._search_regex(
|
||||||
|
r'(?s)episode:(.*?\}),\s*\n', webpage, 'episode information')
|
||||||
|
episode_json = re.sub(
|
||||||
|
r'(\n\s+)([a-zA-Z]+):\s+\'(.*?)\'', r'\1"\2": "\3"', episode_code)
|
||||||
|
ep = json.loads(episode_json)
|
||||||
|
|
||||||
|
if ep['providerType'] == 'Ooyala':
|
||||||
|
return {
|
||||||
|
'_type': 'url_transparent',
|
||||||
|
'ie_key': 'Ooyala',
|
||||||
|
'url': 'ooyala:%s' % ep['providerId'],
|
||||||
|
'id': video_id,
|
||||||
|
'title': ep['title'],
|
||||||
|
'description': ep.get('description'),
|
||||||
|
'thumbnail': ep.get('imageThumbnail'),
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
raise ExtractorError('Unsupported provider %s' % ep['provider'])
|
@ -7,7 +7,7 @@ from ..utils import unescapeHTML
|
|||||||
|
|
||||||
|
|
||||||
class OoyalaIE(InfoExtractor):
|
class OoyalaIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://.+?\.ooyala\.com/.*?(?:embedCode|ec)=(?P<id>.+?)(&|$)'
|
_VALID_URL = r'(?:ooyala:|https?://.+?\.ooyala\.com/.*?(?:embedCode|ec)=)(?P<id>.+?)(&|$)'
|
||||||
|
|
||||||
_TEST = {
|
_TEST = {
|
||||||
# From http://it.slashdot.org/story/13/04/25/178216/recovering-data-from-broken-hard-drives-and-ssds-video
|
# From http://it.slashdot.org/story/13/04/25/178216/recovering-data-from-broken-hard-drives-and-ssds-video
|
||||||
|
Loading…
Reference in New Issue
Block a user