diff options
| -rw-r--r-- | youtube_dl/extractor/generic.py | 23 | ||||
| -rw-r--r-- | youtube_dl/extractor/wistia.py | 15 | 
2 files changed, 32 insertions, 6 deletions
| diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index 0dcbb39db..367f930dd 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -382,6 +382,19 @@ class GenericIE(InfoExtractor):                  '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): @@ -656,6 +669,16 @@ class GenericIE(InfoExtractor):                  'title': video_title,                  '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          mobj = re.search(r'<meta\s[^>]*https?://api\.blip\.tv/\w+/redirect/\w+/(\d+)', webpage) diff --git a/youtube_dl/extractor/wistia.py b/youtube_dl/extractor/wistia.py index e6bfa9e14..748443f81 100644 --- a/youtube_dl/extractor/wistia.py +++ b/youtube_dl/extractor/wistia.py @@ -1,13 +1,14 @@  from __future__ import unicode_literals -import json  import re  from .common import InfoExtractor +from ..utils import ExtractorError, compat_urllib_request  class WistiaIE(InfoExtractor):      _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 = {          'url': 'http://fast.wistia.net/embed/iframe/sh7fpupwlt', @@ -24,11 +25,13 @@ class WistiaIE(InfoExtractor):          mobj = re.match(self._VALID_URL, url)          video_id = mobj.group('id') -        webpage = self._download_webpage(url, video_id) -        data_json = self._html_search_regex( -            r'Wistia\.iframeInit\((.*?), {}\);', webpage, 'video data') - -        data = json.loads(data_json) +        request = compat_urllib_request.Request(self._API_URL.format(video_id)) +        request.add_header('Referer', url)  # Some videos require this. +        data_json = self._download_json(request, video_id) +        if data_json.get('error'): +            raise ExtractorError('Error while getting the playlist', +                                 expected=True) +        data = data_json['media']          formats = []          thumbnails = [] | 
