mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-08-23 07:40:57 +02:00
[wistia] Use API and make more generic
This commit is contained in:
parent
532f5bff70
commit
746c67d72f
@ -382,6 +382,19 @@ class GenericIE(InfoExtractor):
|
|||||||
'thumbnail': 're:^https?://.*\.jpg$',
|
'thumbnail': 're:^https?://.*\.jpg$',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
# Wistia embed
|
||||||
|
{
|
||||||
|
'url': 'http://education-portal.com/academy/lesson/north-american-exploration-failed-colonies-of-spain-france-england.html#lesson',
|
||||||
|
'md5': '8788b683c777a5cf25621eaf286d0c23',
|
||||||
|
'info_dict': {
|
||||||
|
'id': '1cfaf6b7ea',
|
||||||
|
'ext': 'mov',
|
||||||
|
'title': 'md5:51364a8d3d009997ba99656004b5e20d',
|
||||||
|
'duration': 643.0,
|
||||||
|
'filesize': 182808282,
|
||||||
|
'uploader': 'education-portal.com',
|
||||||
|
},
|
||||||
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
def report_download_webpage(self, video_id):
|
def report_download_webpage(self, video_id):
|
||||||
@ -654,6 +667,16 @@ def _playlist_from_matches(matches, getter, ie=None):
|
|||||||
'title': video_title,
|
'title': video_title,
|
||||||
'id': video_id,
|
'id': video_id,
|
||||||
}
|
}
|
||||||
|
match = re.search(r'(?:id=["\']wistia_|data-wistiaid=["\']|Wistia\.embed\(["\'])(?P<id>[^"\']+)', webpage)
|
||||||
|
if match:
|
||||||
|
return {
|
||||||
|
'_type': 'url_transparent',
|
||||||
|
'url': 'http://fast.wistia.net/embed/iframe/{0:}'.format(match.group('id')),
|
||||||
|
'ie_key': 'Wistia',
|
||||||
|
'uploader': video_uploader,
|
||||||
|
'title': video_title,
|
||||||
|
'id': match.group('id')
|
||||||
|
}
|
||||||
|
|
||||||
# Look for embedded blip.tv player
|
# Look for embedded blip.tv player
|
||||||
mobj = re.search(r'<meta\s[^>]*https?://api\.blip\.tv/\w+/redirect/\w+/(\d+)', webpage)
|
mobj = re.search(r'<meta\s[^>]*https?://api\.blip\.tv/\w+/redirect/\w+/(\d+)', webpage)
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import json
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
|
from ..utils import ExtractorError, compat_urllib_request
|
||||||
|
|
||||||
|
|
||||||
class WistiaIE(InfoExtractor):
|
class WistiaIE(InfoExtractor):
|
||||||
_VALID_URL = r'https?://(?:fast\.)?wistia\.net/embed/iframe/(?P<id>[a-z0-9]+)'
|
_VALID_URL = r'https?://(?:fast\.)?wistia\.net/embed/iframe/(?P<id>[a-z0-9]+)'
|
||||||
|
_API_URL = 'http://fast.wistia.com/embed/medias/{0:}.json'
|
||||||
|
|
||||||
_TEST = {
|
_TEST = {
|
||||||
'url': 'http://fast.wistia.net/embed/iframe/sh7fpupwlt',
|
'url': 'http://fast.wistia.net/embed/iframe/sh7fpupwlt',
|
||||||
@ -24,11 +25,13 @@ def _real_extract(self, url):
|
|||||||
mobj = re.match(self._VALID_URL, url)
|
mobj = re.match(self._VALID_URL, url)
|
||||||
video_id = mobj.group('id')
|
video_id = mobj.group('id')
|
||||||
|
|
||||||
webpage = self._download_webpage(url, video_id)
|
request = compat_urllib_request.Request(self._API_URL.format(video_id))
|
||||||
data_json = self._html_search_regex(
|
request.add_header('Referer', url) # Some videos require this.
|
||||||
r'Wistia\.iframeInit\((.*?), {}\);', webpage, 'video data')
|
data_json = self._download_json(request, video_id)
|
||||||
|
if data_json.get('error'):
|
||||||
data = json.loads(data_json)
|
raise ExtractorError('Error while getting the playlist',
|
||||||
|
expected=True)
|
||||||
|
data = data_json['media']
|
||||||
|
|
||||||
formats = []
|
formats = []
|
||||||
thumbnails = []
|
thumbnails = []
|
||||||
|
Loading…
Reference in New Issue
Block a user