diff options
| -rw-r--r-- | youtube_dl/extractor/common.py | 6 | ||||
| -rw-r--r-- | youtube_dl/extractor/generic.py | 18 | ||||
| -rw-r--r-- | youtube_dl/extractor/ooyala.py | 5 | 
3 files changed, 26 insertions, 3 deletions
| diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index 939249d7b..f89df57ed 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -263,7 +263,8 @@ class InfoExtractor(object):          self.to_screen(u'Logging in')      #Methods for following #608 -    def url_result(self, url, ie=None, video_id=None): +    @staticmethod +    def url_result(url, ie=None, video_id=None):          """Returns a url that points to a page that should be processed"""          #TODO: ie should be the class used for getting the info          video_info = {'_type': 'url', @@ -272,7 +273,8 @@ class InfoExtractor(object):          if video_id is not None:              video_info['id'] = video_id          return video_info -    def playlist_result(self, entries, playlist_id=None, playlist_title=None): +    @staticmethod +    def playlist_result(entries, playlist_id=None, playlist_title=None):          """Returns a playlist"""          video_info = {'_type': 'playlist',                        'entries': entries} diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index fd32370c2..3c56daa02 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -17,6 +17,7 @@ from ..utils import (      url_basename,  )  from .brightcove import BrightcoveIE +from .ooyala import OoyalaIE  class GenericIE(InfoExtractor): @@ -83,7 +84,17 @@ class GenericIE(InfoExtractor):                  u'title': u'trailer',                  u'upload_date': u'20100513',              } -        } +        }, +        # ooyala video +        { +            u'url': u'http://www.rollingstone.com/music/videos/norwegian-dj-cashmere-cat-goes-spartan-on-with-me-premiere-20131219', +            u'md5': u'5644c6ca5d5782c1d0d350dad9bd840c', +            u'info_dict': { +                u'id': u'BwY2RxaTrTkslxOfcan0UCf0YqyvWysJ', +                u'ext': u'mp4', +                u'title': u'2cc213299525360.mov', #that's what we get +            }, +        },      ]      def report_download_webpage(self, video_id): @@ -277,6 +288,11 @@ class GenericIE(InfoExtractor):          if mobj is not None:              return self.url_result(mobj.group('url')) +        # Look for Ooyala videos +        mobj = re.search(r'player.ooyala.com/[^"?]+\?[^"]*?(?:embedCode|ec)=([^"&]+)', webpage) +        if mobj is not None: +            return OoyalaIE._build_url_result(mobj.group(1)) +          # Start with something easy: JW Player in SWFObject          mobj = re.search(r'flashvars: [\'"](?:.*&)?file=(http[^\'"&]*)', webpage)          if mobj is None: diff --git a/youtube_dl/extractor/ooyala.py b/youtube_dl/extractor/ooyala.py index 1f7b4d2e7..d08e47734 100644 --- a/youtube_dl/extractor/ooyala.py +++ b/youtube_dl/extractor/ooyala.py @@ -22,6 +22,11 @@ class OoyalaIE(InfoExtractor):      def _url_for_embed_code(embed_code):          return 'http://player.ooyala.com/player.js?embedCode=%s' % embed_code +    @classmethod +    def _build_url_result(cls, embed_code): +        return cls.url_result(cls._url_for_embed_code(embed_code), +            ie=cls.ie_key()) +      def _extract_result(self, info, more_info):          return {'id': info['embedCode'],                  'ext': 'mp4', | 
