2014-01-22 00:07:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  __future__  import  unicode_literals  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-06-23 21:34:03 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  re  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-02-18 18:27:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  . common  import  InfoExtractor  
						 
					
						
							
								
									
										
										
										
											2014-12-13 12:24:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  . . compat  import  (  
						 
					
						
							
								
									
										
										
										
											2015-01-30 21:57:59 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    compat_str , 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-18 04:46:26 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    compat_xpath , 
							 
						 
					
						
							
								
									
										
										
										
											2014-12-13 12:24:42 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								from  . . utils  import  (  
						 
					
						
							
								
									
										
										
										
											2013-06-23 21:34:03 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    ExtractorError , 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-22 00:17:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    find_xpath_attr , 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-20 22:11:34 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    fix_xml_ampersands , 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-19 17:52:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    float_or_none , 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-08 22:06:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    HEADRequest , 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-24 23:58:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    RegexNotFoundError , 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-21 22:18:17 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    sanitized_Request , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-17 16:56:39 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    strip_or_none , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-26 11:03:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    timeconvert , 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-14 06:17:03 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    try_get , 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-08 20:06:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    unescapeHTML , 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-24 23:58:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    update_url_query , 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-21 20:54:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    url_basename , 
							 
						 
					
						
							
								
									
										
										
										
											2016-03-24 22:23:31 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    xpath_text , 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-23 21:34:03 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-22 00:17:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-07-14 14:02:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								def  _media_xml_tag ( tag ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    return  ' { http://search.yahoo.com/mrss/} %s '  %  tag 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-23 21:34:03 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-07-14 13:41:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-02-18 18:27:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  MTVServicesInfoExtractor ( InfoExtractor ) :  
						 
					
						
							
								
									
										
										
										
											2014-03-08 20:06:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _MOBILE_TEMPLATE  =  None 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-25 20:22:20 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _LANG  =  None 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-22 19:19:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-07-14 13:41:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @staticmethod 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  _id_from_uri ( uri ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  uri . split ( ' : ' ) [ - 1 ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-24 23:58:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @staticmethod 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  _remove_template_parameter ( url ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Remove the templates, like &device={device} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  re . sub ( r ' &[^=]*?= { .*?}(?=(&|$)) ' ,  ' ' ,  url ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-06-22 19:19:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  _get_feed_url ( self ,  uri ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  self . _FEED_URL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-07-14 14:29:15 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  _get_thumbnail_url ( self ,  uri ,  itemdoc ) : 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-03 14:58:24 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        search_path  =  ' %s / %s '  %  ( _media_xml_tag ( ' group ' ) ,  _media_xml_tag ( ' thumbnail ' ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        thumb_node  =  itemdoc . find ( search_path ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  thumb_node  is  None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  None 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  thumb_node . attrib [ ' url ' ] 
							 
						 
					
						
							
								
									
										
										
										
											2013-07-14 13:41:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-08 20:06:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  _extract_mobile_video_formats ( self ,  mtvn_id ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        webpage_url  =  self . _MOBILE_TEMPLATE  %  mtvn_id 
							 
						 
					
						
							
								
									
										
										
										
											2015-11-21 22:18:17 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        req  =  sanitized_Request ( webpage_url ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-08 20:06:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # Otherwise we get a webpage that would execute some javascript 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-24 18:07:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        req . add_header ( ' User-Agent ' ,  ' curl/7 ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-08 20:06:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        webpage  =  self . _download_webpage ( req ,  mtvn_id , 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 21:39:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                         ' Downloading mobile page ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-08 22:06:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        metrics_url  =  unescapeHTML ( self . _search_regex ( r ' <a href= " (http://metrics.+?) " ' ,  webpage ,  ' url ' ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        req  =  HEADRequest ( metrics_url ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        response  =  self . _request_webpage ( req ,  mtvn_id ,  ' Resolving url ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        url  =  response . geturl ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # Transform the url to get the best quality: 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        url  =  re . sub ( r ' .+pxE=mp4 ' ,  ' http://mtvnmobile.vo.llnwd.net/kip0/_pxn=0+_pxK=18639+_pxE=mp4 ' ,  url ,  1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 20:41:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  [ { ' url ' :  url ,  ' ext ' :  ' mp4 ' } ] 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-08 20:06:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 22:35:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  _extract_video_formats ( self ,  mdoc ,  mtvn_id ,  video_id ) : 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 21:45:29 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  re . match ( r ' .*/(error_country_block \ .swf|geoblock \ .mp4|copyright_error \ .flv(?: \ ?geo \ b.+?)?)$ ' ,  mdoc . find ( ' .//src ' ) . text )  is  not  None : 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-08 20:06:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  mtvn_id  is  not  None  and  self . _MOBILE_TEMPLATE  is  not  None : 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-08 22:06:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                self . to_screen ( ' The normal version is not available from your  ' 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 21:39:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                               ' country, trying with the mobile version ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-08 20:06:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                return  self . _extract_mobile_video_formats ( mtvn_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-08 19:43:18 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            raise  ExtractorError ( ' This video is not available from your country. ' , 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 21:39:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                 expected = True ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-07-14 13:41:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 11:10:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        formats  =  [ ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  rendition  in  mdoc . findall ( ' .//rendition ' ) : 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-10 22:27:23 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  rendition . get ( ' method ' )  ==  ' hls ' : 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 22:35:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                hls_url  =  rendition . find ( ' ./src ' ) . text 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-10 22:31:20 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                formats . extend ( self . _extract_m3u8_formats ( 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-14 06:17:03 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    hls_url ,  video_id ,  ext = ' mp4 ' ,  entry_protocol = ' m3u8_native ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    m3u8_id = ' hls ' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 22:35:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            else : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                # fms 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                try : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    _ ,  _ ,  ext  =  rendition . attrib [ ' type ' ] . partition ( ' / ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    rtmp_video_url  =  rendition . find ( ' ./src ' ) . text 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-14 06:17:03 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  ' error_not_available.swf '  in  rtmp_video_url : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        raise  ExtractorError ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            ' %s  said: video is not available '  %  self . IE_NAME , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            expected = True ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 22:35:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    if  rtmp_video_url . endswith ( ' siteunavail.png ' ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    formats . extend ( [ { 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-14 06:17:03 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        ' ext ' :  ' flv '  if  rtmp_video_url . startswith ( ' rtmp ' )  else  ext , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        ' url ' :  rtmp_video_url , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        ' format_id ' :  ' - ' . join ( filter ( None ,  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            ' rtmp '  if  rtmp_video_url . startswith ( ' rtmp ' )  else  None , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            rendition . get ( ' bitrate ' ) ] ) ) , 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 22:35:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        ' width ' :  int ( rendition . get ( ' width ' ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        ' height ' :  int ( rendition . get ( ' height ' ) ) , 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-14 06:17:03 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    } ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 22:35:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                except  ( KeyError ,  TypeError ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    raise  ExtractorError ( ' Invalid rendition field. ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 23:49:41 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        self . _sort_formats ( formats ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 11:10:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  formats 
							 
						 
					
						
							
								
									
										
										
										
											2013-07-14 13:41:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-01-30 21:57:59 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  _extract_subtitles ( self ,  mdoc ,  mtvn_id ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        subtitles  =  { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  transcript  in  mdoc . findall ( ' .//transcript ' ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  transcript . get ( ' kind ' )  !=  ' captions ' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                continue 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            lang  =  transcript . get ( ' srclang ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-18 18:27:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            subtitles [ lang ]  =  [ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' url ' :  compat_str ( typographic . get ( ' src ' ) ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' ext ' :  typographic . get ( ' format ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            }  for  typographic  in  transcript . findall ( ' ./typographic ' ) ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  subtitles 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-30 21:57:59 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-10 22:30:47 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  _get_video_info ( self ,  itemdoc ,  use_hls = True ) : 
							 
						 
					
						
							
								
									
										
										
										
											2013-07-14 13:41:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        uri  =  itemdoc . find ( ' guid ' ) . text 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_id  =  self . _id_from_uri ( uri ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        self . report_extraction ( video_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-19 20:56:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        content_el  =  itemdoc . find ( ' %s / %s '  %  ( _media_xml_tag ( ' group ' ) ,  _media_xml_tag ( ' content ' ) ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-24 23:58:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        mediagen_url  =  self . _remove_template_parameter ( content_el . attrib [ ' url ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 22:35:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        mediagen_url  =  mediagen_url . replace ( ' device= {device} ' ,  ' ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-07-14 13:41:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  ' acceptMethods '  not  in  mediagen_url : 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 21:27:36 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            mediagen_url  + =  ' & '  if  ' ? '  in  mediagen_url  else  ' ? ' 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 22:35:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            mediagen_url  + =  ' acceptMethods= ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            mediagen_url  + =  ' hls '  if  use_hls  else  ' fms ' 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-22 00:21:27 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-21 19:57:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        mediagen_doc  =  self . _download_xml ( mediagen_url ,  video_id , 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 21:39:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                          ' Downloading video urls ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-07-14 13:41:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-04-15 21:02:34 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        item  =  mediagen_doc . find ( ' ./video/item ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  item  is  not  None  and  item . get ( ' type ' )  ==  ' text ' : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            message  =  ' %s  returned error:  '  %  self . IE_NAME 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  item . get ( ' code ' )  is  not  None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                message  + =  ' %s  -  '  %  item . get ( ' code ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            message  + =  item . text 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            raise  ExtractorError ( message ,  expected = True ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-17 16:56:39 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        description  =  strip_or_none ( xpath_text ( itemdoc ,  ' description ' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 11:10:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-26 11:03:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        timestamp  =  timeconvert ( xpath_text ( itemdoc ,  ' pubDate ' ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-22 00:17:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        title_el  =  None 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  title_el  is  None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            title_el  =  find_xpath_attr ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                itemdoc ,  ' .// { http://search.yahoo.com/mrss/}category ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' scheme ' ,  ' urn:mtvn:video_title ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  title_el  is  None : 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-18 04:46:26 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            title_el  =  itemdoc . find ( compat_xpath ( ' .// { http://search.yahoo.com/mrss/}title ' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-12 01:07:30 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  title_el  is  None : 
							 
						 
					
						
							
								
									
										
										
										
											2016-06-18 04:46:26 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            title_el  =  itemdoc . find ( compat_xpath ( ' .//title ' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-06 04:15:11 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  title_el . text  is  None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                title_el  =  None 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-22 00:17:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        title  =  title_el . text 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  title  is  None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            raise  ExtractorError ( ' Could not find video title ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-22 03:49:16 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        title  =  title . strip ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-22 00:17:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-08 20:06:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # This a short id that's used in the webpage urls 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        mtvn_id  =  None 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        mtvn_id_node  =  find_xpath_attr ( itemdoc ,  ' .// { http://search.yahoo.com/mrss/}category ' , 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 21:39:15 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                       ' scheme ' ,  ' urn:mtvn:id ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-08 20:06:20 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  mtvn_id_node  is  not  None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            mtvn_id  =  mtvn_id_node . text 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 22:35:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        formats  =  self . _extract_video_formats ( mediagen_doc ,  mtvn_id ,  video_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-12-03 14:21:06 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-22 00:17:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' title ' :  title , 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 22:35:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' formats ' :  formats , 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-30 21:57:59 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' subtitles ' :  self . _extract_subtitles ( mediagen_doc ,  mtvn_id ) , 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 11:10:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' id ' :  video_id , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' thumbnail ' :  self . _get_thumbnail_url ( uri ,  itemdoc ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' description ' :  description , 
							 
						 
					
						
							
								
									
										
										
										
											2016-02-19 20:56:45 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' duration ' :  float_or_none ( content_el . attrib . get ( ' duration ' ) ) , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-26 11:03:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' timestamp ' :  timestamp , 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-04 11:10:04 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-12-31 22:10:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  _get_feed_query ( self ,  uri ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data  =  { ' uri ' :  uri } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  self . _LANG : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            data [ ' lang ' ]  =  self . _LANG 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-24 23:58:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  data 
							 
						 
					
						
							
								
									
										
										
										
											2015-12-31 22:10:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-10 22:30:47 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  _get_videos_info ( self ,  uri ,  use_hls = True ) : 
							 
						 
					
						
							
								
									
										
										
										
											2013-07-14 13:41:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_id  =  self . _id_from_uri ( uri ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-22 19:19:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        feed_url  =  self . _get_feed_url ( uri ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-24 23:58:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        info_url  =  update_url_query ( feed_url ,  self . _get_feed_query ( uri ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 22:35:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  self . _get_videos_info_from_url ( info_url ,  video_id ,  use_hls ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 21:24:54 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-10 22:30:47 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  _get_videos_info_from_url ( self ,  url ,  video_id ,  use_hls = True ) : 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-10 12:45:22 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        idoc  =  self . _download_xml ( 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 21:24:54 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            url ,  video_id , 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-22 00:07:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' Downloading info ' ,  transform_source = fix_xml_ampersands ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-26 11:03:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        title  =  xpath_text ( idoc ,  ' ./channel/title ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        description  =  xpath_text ( idoc ,  ' ./channel/description ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-11-20 16:25:19 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  self . playlist_result ( 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-05 22:35:12 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            [ self . _get_video_info ( item ,  use_hls )  for  item  in  idoc . findall ( ' .//item ' ) ] , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-26 11:03:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            playlist_title = title ,  playlist_description = description ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-06-23 21:34:03 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-14 06:17:03 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  _extract_triforce_mgid ( self ,  webpage ,  data_zone = None ,  video_id = None ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        triforce_feed  =  self . _parse_json ( self . _search_regex ( 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-18 23:34:11 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            r ' triforceManifestFeed \ s*= \ s*( { .+?}) \ s*; \ s* \ n ' ,  webpage , 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-14 06:17:03 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' triforce feed ' ,  default = ' {} ' ) ,  video_id ,  fatal = False ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        data_zone  =  self . _search_regex ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            r ' data-zone=([ " \' ])(?P<zone>.+?_lc_promo.*?) \ 1 ' ,  webpage , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' data zone ' ,  default = data_zone ,  group = ' zone ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        feed_url  =  try_get ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            triforce_feed ,  lambda  x :  x [ ' manifest ' ] [ ' zones ' ] [ data_zone ] [ ' feed ' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            compat_str ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  not  feed_url : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        feed  =  self . _download_json ( feed_url ,  video_id ,  fatal = False ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  not  feed : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  try_get ( feed ,  lambda  x :  x [ ' result ' ] [ ' data ' ] [ ' id ' ] ,  compat_str ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  _extract_mgid ( self ,  webpage ) : 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-21 20:54:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        try : 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-22 11:35:17 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # the url can be http://media.mtvnservices.com/fb/{mgid}.swf 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # or http://media.mtvnservices.com/{mgid} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            og_url  =  self . _og_search_video_url ( webpage ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            mgid  =  url_basename ( og_url ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  mgid . endswith ( ' .swf ' ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                mgid  =  mgid [ : - 4 ] 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-21 20:54:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        except  RegexNotFoundError : 
							 
						 
					
						
							
								
									
										
										
										
											2014-07-13 21:15:18 +10:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            mgid  =  None 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  mgid  is  None  or  ' : '  not  in  mgid : 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-30 19:04:33 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            mgid  =  self . _search_regex ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                [ r ' data-mgid= " (.*?) " ' ,  r ' swfobject.embedSWF \ ( " .*?(mgid:.*?) " ' ] , 
							 
						 
					
						
							
								
									
										
										
										
											2015-09-26 19:45:43 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                webpage ,  ' mgid ' ,  default = None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  not  mgid : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            sm4_embed  =  self . _html_search_meta ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' sm4:video:embed ' ,  webpage ,  ' sm4 embed ' ,  default = ' ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            mgid  =  self . _search_regex ( 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-14 06:17:03 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                r ' embed/(mgid:.+?)[ " \' &?/] ' ,  sm4_embed ,  ' mgid ' ,  default = None ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  not  mgid : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            mgid  =  self . _extract_triforce_mgid ( webpage ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-12-31 22:10:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  mgid 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-30 21:57:59 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-12-31 22:10:00 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  _real_extract ( self ,  url ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        title  =  url_basename ( url ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        webpage  =  self . _download_webpage ( url ,  title ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        mgid  =  self . _extract_mgid ( webpage ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-01-30 21:57:59 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        videos_info  =  self . _get_videos_info ( mgid ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  videos_info 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-21 20:54:47 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-12-03 14:58:24 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-06-22 19:19:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  MTVServicesEmbeddedIE ( MTVServicesInfoExtractor ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IE_NAME  =  ' mtvservices:embedded ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _VALID_URL  =  r ' https?://media \ .mtvnservices \ .com/embed/(?P<mgid>.+?)( \ ?|/|$) ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _TEST  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # From http://www.thewrap.com/peter-dinklage-sums-up-game-of-thrones-in-45-seconds-video/ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' url ' :  ' http://media.mtvnservices.com/embed/mgid:uma:video:mtv.com:1043906/cp~vid % 3D1043906 %26u ri % 3Dmgid % 3Auma % 3Avideo % 3Amtv.com % 3A1043906 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' md5 ' :  ' cb349b21a7897164cede95bd7bf3fbb9 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' info_dict ' :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' id ' :  ' 1043906 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' ext ' :  ' mp4 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' title ' :  ' Peter Dinklage Sums Up  \' Game Of Thrones \'  In 45 Seconds ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' description ' :  ' " Sexy sexy sexy, stabby stabby stabby, beautiful language, "  says Peter Dinklage as he tries summarizing  " Game of Thrones "  in under a minute. ' , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-26 11:03:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' timestamp ' :  1400126400 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' upload_date ' :  ' 20140515 ' , 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-22 19:19:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-09-26 19:46:42 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    @staticmethod 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  _extract_url ( webpage ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        mobj  =  re . search ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            r ' <iframe[^>]+?src=([ " \' ])(?P<url>(?:https?:)?//media.mtvnservices.com/embed/.+?) \ 1 ' ,  webpage ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  mobj : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  mobj . group ( ' url ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-06-22 19:19:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    def  _get_feed_url ( self ,  uri ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_id  =  self . _id_from_uri ( uri ) 
							 
						 
					
						
							
								
									
										
										
										
											2016-08-24 23:58:22 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        config  =  self . _download_json ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' http://media.mtvnservices.com/pmt/e1/access/index.html?uri= %s &configtype=edge '  %  uri ,  video_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  self . _remove_template_parameter ( config [ ' feedWithQueryParams ' ] ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-22 19:19:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  _real_extract ( self ,  url ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        mobj  =  re . match ( self . _VALID_URL ,  url ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        mgid  =  mobj . group ( ' mgid ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  self . _get_videos_info ( mgid ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-12-03 14:58:24 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  MTVIE ( MTVServicesInfoExtractor ) :  
						 
					
						
							
								
									
										
										
										
											2016-09-24 10:50:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IE_NAME  =  ' mtv ' 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-26 21:49:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _VALID_URL  =  r ' https?://(?:www \ .)?mtv \ .com/(?:video-clips|(?:full-)?episodes)/(?P<id>[^/?#.]+) ' 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-24 10:41:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _FEED_URL  =  ' http://www.mtv.com/feeds/mrss/ ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _TESTS  =  [ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' url ' :  ' http://www.mtv.com/video-clips/vl8qof/unlocking-the-truth-trailer ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' md5 ' :  ' 1edbcdf1e7628e414a8c5dcebca3d32b ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' info_dict ' :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' id ' :  ' 5e14040d-18a4-47c4-a582-43ff602de88e ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' ext ' :  ' mp4 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' title ' :  ' Unlocking The Truth|July 18, 2016|1|101|Trailer ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' description ' :  ' " Unlocking the Truth "  premieres August 17th at 11/10c. ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' timestamp ' :  1468846800 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' upload_date ' :  ' 20160718 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' url ' :  ' http://www.mtv.com/full-episodes/94tujl/unlocking-the-truth-gates-of-hell-season-1-ep-101 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' only_matching ' :  True , 
							 
						 
					
						
							
								
									
										
										
										
											2017-01-26 21:49:34 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' url ' :  ' http://www.mtv.com/episodes/g8xu7q/teen-mom-2-breaking-the-wall-season-7-ep-713 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' only_matching ' :  True , 
							 
						 
					
						
							
								
									
										
										
										
											2016-09-24 10:41:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-01-28 20:29:22 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  MTV81IE ( InfoExtractor ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IE_NAME  =  ' mtv81 ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _VALID_URL  =  r ' https?://(?:www \ .)?mtv81 \ .com/videos/(?P<id>[^/?#.]+) ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _TEST  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' url ' :  ' http://www.mtv81.com/videos/artist-to-watch/the-godfather-of-japanese-hip-hop-segment-1/ ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' md5 ' :  ' 1edbcdf1e7628e414a8c5dcebca3d32b ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' info_dict ' :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' id ' :  ' 5e14040d-18a4-47c4-a582-43ff602de88e ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' ext ' :  ' mp4 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' title ' :  ' Unlocking The Truth|July 18, 2016|1|101|Trailer ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' description ' :  ' " Unlocking the Truth "  premieres August 17th at 11/10c. ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' timestamp ' :  1468846800 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' upload_date ' :  ' 20160718 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  _extract_mgid ( self ,  webpage ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  self . _search_regex ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            r ' getTheVideo \ (([ " \' ])(?P<id>mgid:.+?) \ 1 ' ,  webpage , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' mgid ' ,  group = ' id ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  _real_extract ( self ,  url ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_id  =  self . _match_id ( url ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        webpage  =  self . _download_webpage ( url ,  video_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        mgid  =  self . _extract_mgid ( webpage ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  self . url_result ( ' http://media.mtvnservices.com/embed/ %s '  %  mgid ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-09-24 10:41:38 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  MTVVideoIE ( MTVServicesInfoExtractor ) :  
						 
					
						
							
								
									
										
										
										
											2016-09-24 10:50:14 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    IE_NAME  =  ' mtv:video ' 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-16 22:05:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _VALID_URL  =  r ''' (?x)^https?:// 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ( ? : ( ? : www \. ) ? mtv \. com / videos / . + ? / ( ? P < videoid > [ 0 - 9 ] + ) / [ ^ / ] + $ | 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								           m \. mtv \. com / videos / video \. rbml \? . * ? id = ( ? P < mgid > [ ^ & ] + ) ) ''' 
 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-03 14:58:24 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _FEED_URL  =  ' http://www.mtv.com/player/embed/AS3/rss/ ' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    _TESTS  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-22 00:07:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' url ' :  ' http://www.mtv.com/videos/misc/853555/ours-vh1-storytellers.jhtml ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' md5 ' :  ' 850f3f143316b1e71fa56a4edfd6e0f8 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' info_dict ' :  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-01 12:08:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' id ' :  ' 853555 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' ext ' :  ' mp4 ' , 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-22 00:07:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' title ' :  ' Taylor Swift -  " Ours (VH1 Storytellers) " ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' description ' :  ' Album: Taylor Swift performs  " Ours "  for VH1 Storytellers at Harvey Mudd College. ' , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-26 11:03:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                ' timestamp ' :  1352610000 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                ' upload_date ' :  ' 20121111 ' , 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-03 14:58:24 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  _get_thumbnail_url ( self ,  uri ,  itemdoc ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        return  ' http://mtv.mtvnimages.com/uri/ '  +  uri 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-06-23 21:34:03 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    def  _real_extract ( self ,  url ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        mobj  =  re . match ( self . _VALID_URL ,  url ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        video_id  =  mobj . group ( ' videoid ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-31 17:21:44 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        uri  =  mobj . groupdict ( ) . get ( ' mgid ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-16 22:05:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        if  uri  is  None : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            webpage  =  self . _download_webpage ( url ,  video_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 20:41:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-12-16 22:05:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            # Some videos come from Vevo.com 
							 
						 
					
						
							
								
									
										
										
										
											2015-02-01 12:08:21 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            m_vevo  =  re . search ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                r ' (?s)isVevoVideo = true;.*?vevoVideoId =  " (.*?) " ; ' ,  webpage ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-16 22:05:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            if  m_vevo : 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 21:20:46 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                vevo_id  =  m_vevo . group ( 1 ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-22 00:07:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                self . to_screen ( ' Vevo video detected:  %s '  %  vevo_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-16 22:05:28 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                return  self . url_result ( ' vevo: %s '  %  vevo_id ,  ie = ' Vevo ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-11-23 20:41:03 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-22 00:07:02 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            uri  =  self . _html_search_regex ( r ' /uri/(.*?) \ ? ' ,  webpage ,  ' uri ' ) 
							 
						 
					
						
							
								
									
										
										
										
											2013-07-14 13:41:46 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        return  self . _get_videos_info ( uri ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-21 20:59:31 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-26 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								class  MTVDEIE ( MTVServicesInfoExtractor ) :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    IE_NAME  =  ' mtv.de ' 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 21:41:54 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _VALID_URL  =  r ' https?://(?:www \ .)?mtv \ .de/(?:artists|shows|news)/(?:[^/]+/)*(?P<id> \ d+)-[^/#?]+/*(?:[#?].*)?$ ' 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 21:24:54 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    _TESTS  =  [ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' url ' :  ' http://www.mtv.de/artists/10571-cro/videos/61131-traum ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' info_dict ' :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' id ' :  ' music_video-a50bc5f0b3aa4b3190aa ' , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-26 11:03:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' ext ' :  ' flv ' , 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 21:24:54 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' title ' :  ' MusicVideo_cro-traum ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' description ' :  ' Cro - Traum ' , 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-26 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 21:24:54 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ' params ' :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # rtmp download 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' skip_download ' :  True , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-26 13:19:47 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ' skip ' :  ' Blocked at Travis CI ' , 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 21:31:38 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # mediagen URL without query (e.g. http://videos.mtvnn.com/mediagen/e865da714c166d18d6f80893195fcb97) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' url ' :  ' http://www.mtv.de/shows/933-teen-mom-2/staffeln/5353/folgen/63565-enthullungen ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' info_dict ' :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' id ' :  ' local_playlist-f5ae778b9832cc837189 ' , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-26 11:03:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' ext ' :  ' flv ' , 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 21:31:38 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            ' title ' :  ' Episode_teen-mom-2_shows_season-5_episode-1_full-episode_part1 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' params ' :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # rtmp download 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' skip_download ' :  True , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-26 13:19:47 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ' skip ' :  ' Blocked at Travis CI ' , 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 21:41:54 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' url ' :  ' http://www.mtv.de/news/77491-mtv-movies-spotlight-pixels-teil-3 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' info_dict ' :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' id ' :  ' local_playlist-4e760566473c4c8c5344 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' ext ' :  ' mp4 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' title ' :  ' Article_mtv-movies-spotlight-pixels-teil-3_short-clips_part1 ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' description ' :  ' MTV Movies Supercut ' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        ' params ' :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # rtmp download 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ' skip_download ' :  True , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } , 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-26 11:03:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        ' skip ' :  ' Das Video kann zur Zeit nicht abgespielt werden. ' , 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 21:24:54 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    } ] 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-26 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    def  _real_extract ( self ,  url ) : 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 21:24:54 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        video_id  =  self . _match_id ( url ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        webpage  =  self . _download_webpage ( url ,  video_id ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        playlist  =  self . _parse_json ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            self . _search_regex ( 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                r ' window \ .pagePlaylist \ s*= \ s*( \ [.+? \ ]); \ n ' ,  webpage ,  ' page playlist ' ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            video_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-26 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-07-26 11:03:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        def  _mrss_url ( item ) : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            return  item [ ' mrss ' ]  +  item . get ( ' mrssvars ' ,  ' ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 21:41:54 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        # news pages contain single video in playlist with different id 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  len ( playlist )  ==  1 : 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-26 11:03:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            return  self . _get_videos_info_from_url ( _mrss_url ( playlist [ 0 ] ) ,  video_id ) 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 21:41:54 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-08-26 00:06:44 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        for  item  in  playlist : 
							 
						 
					
						
							
								
									
										
										
										
											2015-08-28 21:24:54 +06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								            item_id  =  item . get ( ' id ' ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            if  item_id  and  compat_str ( item_id )  ==  video_id : 
							 
						 
					
						
							
								
									
										
										
										
											2016-07-26 11:03:43 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                return  self . _get_videos_info_from_url ( _mrss_url ( item ) ,  video_id )