Merge branch 'master' into subtitles_rework
[youtube-dl] / youtube_dl / extractor / mtv.py
index 65c8c2d5267e7488f589252bc548504c806cb7f5..8f956571d54dc4a42a4f3726642929e4b2497f13 100644 (file)
@@ -7,6 +7,8 @@ from ..utils import (
     ExtractorError,
 )
 
+def _media_xml_tag(tag):
+    return '{http://search.yahoo.com/mrss/}%s' % tag
 
 class MTVIE(InfoExtractor):
     _VALID_URL = r'^https?://(?:www\.)?mtv\.com/videos/.+?/(?P<videoid>[0-9]+)/[^/]+$'
@@ -47,7 +49,10 @@ class MTVIE(InfoExtractor):
         if not m:
             raise ExtractorError(u'Cannot transform RTMP url')
         base = 'http://mtvnmobile.vo.llnwd.net/kip0/_pxn=1+_pxI0=Ripod-h264+_pxL0=undefined+_pxM0=+_pxK=18639+_pxE=mp4/44620/mtvnorigin/'
-        return base + m.group('finalid') 
+        return base + m.group('finalid')
+
+    def _get_thumbnail_url(self, uri, itemdoc):
+        return 'http://mtv.mtvnimages.com/uri/' + uri
 
     def _extract_video_url(self, metadataXml):
         if '/error_country_block.swf' in metadataXml:
@@ -71,8 +76,7 @@ class MTVIE(InfoExtractor):
         uri = itemdoc.find('guid').text
         video_id = self._id_from_uri(uri)
         self.report_extraction(video_id)
-        media_namespace = {'media': 'http://search.yahoo.com/mrss/'}
-        mediagen_url = itemdoc.find('media:group/media:content', media_namespace).attrib['url']
+        mediagen_url = itemdoc.find('%s/%s' % (_media_xml_tag('group'), _media_xml_tag('content'))).attrib['url']
         if 'acceptMethods' not in mediagen_url:
             mediagen_url += '&acceptMethods=fms'
         mediagen_page = self._download_webpage(mediagen_url, video_id,
@@ -86,7 +90,7 @@ class MTVIE(InfoExtractor):
             description = None
         video_info.update({'title': itemdoc.find('title').text,
                            'id': video_id,
-                           'thumbnail': 'http://mtv.mtvnimages.com/uri/' + uri,
+                           'thumbnail': self._get_thumbnail_url(uri, itemdoc),
                            'description': description,
                            })
         return video_info