|  | @@ -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:
 |