|  | @@ -1,13 +1,12 @@
 | 
	
		
			
				|  |  |  # coding: utf-8
 | 
	
		
			
				|  |  |  from __future__ import unicode_literals
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import random
 | 
	
		
			
				|  |  | +import time
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  from .common import InfoExtractor
 | 
	
		
			
				|  |  |  from ..utils import strip_jsonp
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -# guid is a random number generated in javascript, but seems a fixed number
 | 
	
		
			
				|  |  | -# also works
 | 
	
		
			
				|  |  | -guid = '1'
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  class QQMusicIE(InfoExtractor):
 | 
	
		
			
				|  |  |      _VALID_URL = r'http://y.qq.com/#type=song&mid=(?P<id>[0-9A-Za-z]+)'
 | 
	
	
		
			
				|  | @@ -23,6 +22,13 @@ class QQMusicIE(InfoExtractor):
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }]
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    # Reference: m_r_GetRUin() in top_player.js
 | 
	
		
			
				|  |  | +    # http://imgcache.gtimg.cn/music/portal_v3/y/top_player.js
 | 
	
		
			
				|  |  | +    @staticmethod
 | 
	
		
			
				|  |  | +    def m_r_get_ruin():
 | 
	
		
			
				|  |  | +        curMs = int(time.time() * 1000) % 1000
 | 
	
		
			
				|  |  | +        return int(round(random.random() * 2147483647) * curMs % 1E10)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      def _real_extract(self, url):
 | 
	
		
			
				|  |  |          mid = self._match_id(url)
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -41,6 +47,8 @@ class QQMusicIE(InfoExtractor):
 | 
	
		
			
				|  |  |          singer = self._html_search_regex(
 | 
	
		
			
				|  |  |              r"singer:\s*'([^']+)", detail_info_page, 'singer')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        guid = self.m_r_get_ruin()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          vkey = self._download_json(
 | 
	
		
			
				|  |  |              'http://base.music.qq.com/fcgi-bin/fcg_musicexpress.fcg?json=3&guid=%s' % guid,
 | 
	
		
			
				|  |  |              mid, note='Retrieve vkey', errnote='Unable to get vkey',
 |