mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-11-04 00:25:15 +00:00 
			
		
		
		
	[iqiyi] Cache encryption keys
This commit is contained in:
		@@ -3,6 +3,7 @@ from __future__ import unicode_literals
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import hashlib
 | 
					import hashlib
 | 
				
			||||||
import math
 | 
					import math
 | 
				
			||||||
 | 
					import os.path
 | 
				
			||||||
import random
 | 
					import random
 | 
				
			||||||
import re
 | 
					import re
 | 
				
			||||||
import time
 | 
					import time
 | 
				
			||||||
@@ -11,7 +12,10 @@ import zlib
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
from .common import InfoExtractor
 | 
					from .common import InfoExtractor
 | 
				
			||||||
from ..compat import compat_urllib_parse
 | 
					from ..compat import compat_urllib_parse
 | 
				
			||||||
from ..utils import ExtractorError
 | 
					from ..utils import (
 | 
				
			||||||
 | 
					    ExtractorError,
 | 
				
			||||||
 | 
					    url_basename,
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class IqiyiIE(InfoExtractor):
 | 
					class IqiyiIE(InfoExtractor):
 | 
				
			||||||
@@ -207,12 +211,20 @@ class IqiyiIE(InfoExtractor):
 | 
				
			|||||||
        return raw_data
 | 
					        return raw_data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_enc_key(self, swf_url, video_id):
 | 
					    def get_enc_key(self, swf_url, video_id):
 | 
				
			||||||
 | 
					        filename, _ = os.path.splitext(url_basename(swf_url))
 | 
				
			||||||
 | 
					        enc_key_json = self._downloader.cache.load('iqiyi-enc-key', filename)
 | 
				
			||||||
 | 
					        if enc_key_json is not None:
 | 
				
			||||||
 | 
					            return enc_key_json[0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        req = self._request_webpage(
 | 
					        req = self._request_webpage(
 | 
				
			||||||
            swf_url, video_id, note='download swf content')
 | 
					            swf_url, video_id, note='download swf content')
 | 
				
			||||||
        cn = req.read()
 | 
					        cn = req.read()
 | 
				
			||||||
        cn = zlib.decompress(cn[8:])
 | 
					        cn = zlib.decompress(cn[8:])
 | 
				
			||||||
        pt = re.compile(b'MixerRemote\x08(?P<enc_key>.+?)\$&vv')
 | 
					        pt = re.compile(b'MixerRemote\x08(?P<enc_key>.+?)\$&vv')
 | 
				
			||||||
        enc_key = self._search_regex(pt, cn, 'enc_key').decode('utf8')
 | 
					        enc_key = self._search_regex(pt, cn, 'enc_key').decode('utf8')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self._downloader.cache.store('iqiyi-enc-key', filename, [enc_key])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return enc_key
 | 
					        return enc_key
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _real_extract(self, url):
 | 
					    def _real_extract(self, url):
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user