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