diff options
| author | Sergey M․ <dstftw@gmail.com> | 2014-03-25 21:16:10 +0700 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2014-03-25 21:16:10 +0700 | 
| commit | b4461b6ebe1276e98bc7566cc6a706ed26d3488b (patch) | |
| tree | 9ab88e015e8cf46dc5bb7b736dbfb0458e746067 | |
| parent | 80959224fe4de51a2cba5a7f3da396b842e858c7 (diff) | |
[auengine] Modernize
| -rw-r--r-- | youtube_dl/extractor/auengine.py | 20 | ||||
| -rw-r--r-- | youtube_dl/extractor/cspan.py | 57 | 
2 files changed, 62 insertions, 15 deletions
| diff --git a/youtube_dl/extractor/auengine.py b/youtube_dl/extractor/auengine.py index c6f30e626..94caad0cf 100644 --- a/youtube_dl/extractor/auengine.py +++ b/youtube_dl/extractor/auengine.py @@ -11,22 +11,24 @@ from ..utils import (  class AUEngineIE(InfoExtractor): +    _VALID_URL = r'http://(?:www\.)?auengine\.com/embed\.php\?.*?file=(?P<id>[^&]+).*?' +      _TEST = {          'url': 'http://auengine.com/embed.php?file=lfvlytY6&w=650&h=370', -        'file': 'lfvlytY6.mp4',          'md5': '48972bdbcf1a3a2f5533e62425b41d4f',          'info_dict': { +            'id': 'lfvlytY6', +            'ext': 'mp4',              'title': '[Commie]The Legend of the Legendary Heroes - 03 - Replication Eye (Alpha Stigma)[F9410F5A]'          }      } -    _VALID_URL = r'(?:http://)?(?:www\.)?auengine\.com/embed\.php\?.*?file=([^&]+).*?'      def _real_extract(self, url):          mobj = re.match(self._VALID_URL, url) -        video_id = mobj.group(1) +        video_id = mobj.group('id') +          webpage = self._download_webpage(url, video_id) -        title = self._html_search_regex(r'<title>(?P<title>.+?)</title>', -                webpage, 'title') +        title = self._html_search_regex(r'<title>(?P<title>.+?)</title>', webpage, 'title')          title = title.strip()          links = re.findall(r'\s(?:file|url):\s*["\']([^\'"]+)["\']', webpage)          links = map(compat_urllib_parse.unquote, links) @@ -39,14 +41,14 @@ class AUEngineIE(InfoExtractor):              elif '/videos/' in link:                  video_url = link          if not video_url: -            raise ExtractorError(u'Could not find video URL') +            raise ExtractorError('Could not find video URL')          ext = '.' + determine_ext(video_url)          if ext == title[-len(ext):]:              title = title[:-len(ext)]          return { -            'id':        video_id, -            'url':       video_url, -            'title':     title, +            'id': video_id, +            'url': video_url, +            'title': title,              'thumbnail': thumbnail,          } diff --git a/youtube_dl/extractor/cspan.py b/youtube_dl/extractor/cspan.py index 2a8eda9ef..795ccd926 100644 --- a/youtube_dl/extractor/cspan.py +++ b/youtube_dl/extractor/cspan.py @@ -56,16 +56,61 @@ class CSpanIE(InfoExtractor):          url = unescapeHTML(data['video']['files'][0]['path']['#text']) -        doc = self._download_xml('http://www.c-span.org/common/services/flashXml.php?programid=' + video_id, +        doc = self._download_xml('http://www.c-span.org/common/services/flashXml.php?programid=' + video_id + '&version=2014-01-23',              video_id) -        def find_string(s): -            return find_xpath_attr(doc, './/string', 'name', s).text +        formats = [ +            { +                'url': url, +            } +        ] + +        def find_string(node, s): +            return find_xpath_attr(node, './/string', 'name', s).text + +        def find_number(node, s): +            return int(find_xpath_attr(node, './/number', 'name', s).text) + +        def find_array(node, s): +            return find_xpath_attr(node, './/array', 'name', s) + +        def process_files(files, url, formats): +            for file in files: +                path = find_string(file, 'path') +                #duration = find_number(file, './number', 'name', 'length') +                hd = find_number(file, 'hd') +                formats.append({ +                    'url': url, +                    'play_path': path, +                    'ext': 'flv', +                    'quality': hd, +                }) + +        def process_node(node, formats): +            url = find_xpath_attr(node, './string', 'name', 'url') +            if url is None: +                url = find_xpath_attr(node, './string', 'name', 'URL') +                if url is None: +                    return +            url = url.text.replace('$(protocol)', 'rtmp').replace('$(port)', '1935') +            files = find_array(node, 'files') +            if files is None: +                return +            process_files(files, url, formats) + +        process_node(doc.find('./media-link'), formats) + +        streams = find_array(doc, 'streams') +        if streams is not None: +            for stream in streams: +                if find_string(stream, 'name') != 'vod': +                    continue +                process_node(stream, formats)          return {              'id': video_id, -            'title': find_string('title'), -            'url': url, +            'title': find_string(doc, 'title'),              'description': description, -            'thumbnail': find_string('poster'), +            'thumbnail': find_string(doc, 'poster'), +            'formats': formats,          } | 
