diff options
Diffstat (limited to 'youtube_dl/extractor/teamcoco.py')
| -rw-r--r-- | youtube_dl/extractor/teamcoco.py | 31 | 
1 files changed, 28 insertions, 3 deletions
| diff --git a/youtube_dl/extractor/teamcoco.py b/youtube_dl/extractor/teamcoco.py index 1caf08cb7..2381676b4 100644 --- a/youtube_dl/extractor/teamcoco.py +++ b/youtube_dl/extractor/teamcoco.py @@ -1,3 +1,4 @@ +# -*- coding: utf-8 -*-  from __future__ import unicode_literals  import base64 @@ -35,6 +36,17 @@ class TeamcocoIE(InfoExtractor):                  'duration': 288,                  'age_limit': 0,              } +        }, { +            'url': 'http://teamcoco.com/video/timothy-olyphant-drinking-whiskey', +            'info_dict': { +                'id': '88748', +                'ext': 'mp4', +                'title': 'Timothy Olyphant Raises A Toast To “Justified”', +                'description': 'md5:15501f23f020e793aeca761205e42c24', +            }, +            'params': { +                'skip_download': True,  # m3u8 downloads +            }          }      ]      _VIDEO_ID_REGEXES = ( @@ -54,10 +66,23 @@ class TeamcocoIE(InfoExtractor):              video_id = self._html_search_regex(                  self._VIDEO_ID_REGEXES, webpage, 'video id') +        preload = None          preloads = re.findall(r'"preload":\s*"([^"]+)"', webpage) -        if not preloads: -            raise ExtractorError('Preload information could not be extracted') -        preload = max([(len(p), p) for p in preloads])[1] +        if preloads: +            preload = max([(len(p), p) for p in preloads])[1] + +        if not preload: +            preload = ''.join(re.findall(r'this\.push\("([^"]+)"\);', webpage)) + +        if not preload: +            preload = self._html_search_regex([ +                r'player,\[?"([^"]+)"\]?', r'player.init\(\[?"([^"]+)"\]?\)' +            ], webpage.replace('","', ''), 'preload data', default=None) + +        if not preload: +            raise ExtractorError( +                'Preload information could not be extracted', expected=True) +          data = self._parse_json(              base64.b64decode(preload.encode('ascii')).decode('utf-8'), video_id) | 
