diff options
Diffstat (limited to 'youtube_dl/extractor/myvideo.py')
| -rw-r--r-- | youtube_dl/extractor/myvideo.py | 18 | 
1 files changed, 17 insertions, 1 deletions
| diff --git a/youtube_dl/extractor/myvideo.py b/youtube_dl/extractor/myvideo.py index b2a7b1df0..0404e6e43 100644 --- a/youtube_dl/extractor/myvideo.py +++ b/youtube_dl/extractor/myvideo.py @@ -2,11 +2,13 @@ import binascii  import base64  import hashlib  import re +import json  from .common import InfoExtractor  from ..utils import (      compat_ord,      compat_urllib_parse, +    compat_urllib_request,      ExtractorError,  ) @@ -16,7 +18,7 @@ from ..utils import (  class MyVideoIE(InfoExtractor):      """Information Extractor for myvideo.de.""" -    _VALID_URL = r'(?:http://)?(?:www\.)?myvideo\.de/watch/([0-9]+)/([^?/]+).*' +    _VALID_URL = r'(?:http://)?(?:www\.)?myvideo\.de/(?:[^/]+/)?watch/([0-9]+)/([^?/]+).*'      IE_NAME = u'myvideo'      _TEST = {          u'url': u'http://www.myvideo.de/watch/8229274/bowling_fail_or_win', @@ -85,6 +87,20 @@ class MyVideoIE(InfoExtractor):                  'ext':      video_ext,              }] +        mobj = re.search(r'data-video-service="/service/data/video/%s/config' % video_id, webpage) +        if mobj is not None: +            request = compat_urllib_request.Request('http://www.myvideo.de/service/data/video/%s/config' % video_id, '') +            response = self._download_webpage(request, video_id, +                                              u'Downloading video info') +            info = json.loads(base64.b64decode(response).decode('utf-8')) +            return {'id': video_id, +                    'title': info['title'], +                    'url': info['streaming_url'].replace('rtmpe', 'rtmpt'), +                    'play_path': info['filename'], +                    'ext': 'flv', +                    'thumbnail': info['thumbnail'][0]['url'], +                    } +          # try encxml          mobj = re.search('var flashvars={(.+?)}', webpage)          if mobj is None: | 
