def _is_success(cookie: str): rm = RequestManager() rm.add_cookies(cookie) cookiedict = rm.cookiedict qq_openid = cookiedict['vqq_openid'] qq_access_token = cookiedict['vqq_access_token'] qq_client_id = cookiedict['vqq_appid'] success = False url = ( f'https://vip.video.qq.com/fcgi-bin/svip_comm_cgi?svr_name=svipupdate&cmd=5633&callback=jQuery&TvReqType=1' f'&OpenId={qq_openid}' f'&AccessToken={qq_access_token}' f'&Appid={qq_client_id}') headers = { "accept": "*/*", "accept-encoding": "gzip, deflate, br", "accept-language": "zh-CN,zh;q=0.9", "cookie": cookie, "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " "(KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36" } with suppress(Exception): resp_str = RequestManager().request('get', url, headers=headers).text logger.info(f'验证接口返回数据: {resp_str}') resp_dict = json.loads(resp_str[7:-2]) if (resp_dict.get('result') or {}).get('code') == 0: success = True return success
def download(self, play_url: str): api = f'http://127.0.0.1:{BackEndPort.video}/video/tencent_video/get_download_url' resp_dict = RequestManager().request('post', api, json={ 'play_url': play_url }).json() cover_id, video_id = get_cvid(play_url) code = resp_dict['code'] message = resp_dict['message'] logger.info(f'获取下载链接接口返回数据: {resp_dict}') if code == Code.Success: data = resp_dict['data'] return data elif code in [Code.CookieError, Code.ParseError, Code.NeedPayError]: video_col.update_one(filter={'video_id': video_id}, update={ '$set': { 'download.status': DownloadStatus.failure, 'download.reason': message, 'download.time': time.strftime('%Y-%m-%d %H:%M:%S'), } })
def _download(url: str, filename: str): if not url.startswith('http'): url = f'https://t.captcha.qq.com{url}' headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " "(KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36" } resp_bytes = RequestManager().request('get', url, headers=headers).content with open(filename, 'wb') as fw: fw.write(resp_bytes)
def auth_refresh(self): params = { 'vappid': '11059694', 'vsecret': 'fdf61a6be0aad57132bc5cdf78ac30145b6cd2c1470b0cfe', 'type': 'qq', '_': str(int(time.time() * 1000)), 'g_tk': '', 'g_vstk': self._time33(self.session.cookiedict['vqq_vusession']), 'g_actk': self._time33(self.session.cookiedict['vqq_access_token']), } api = 'https://access.video.qq.com/user/auth_refresh?' headers = { "Host": "access.video.qq.com", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/85.0.4183.121 Safari/537.36", "Accept": "*/*", "Referer": "https://v.qq.com/", "Accept-Encoding": "gzip, deflate, br", "Accept-Language": "zh-CN,zh;q=0.9" } cookie_dict: dict = self.session.cookiedict resp = self.session.request('get', api, params=params, headers=headers) self.session.close() self.session = RequestManager() self.session.add_cookies(resp.cookies) cookie_dict.update(self.session.cookiedict) self.session.close() self.session = RequestManager() self.session.add_cookies(cookie_dict) self.cookie = self.session.cookiestr
def __init__(self, play_url: str, platform: str = '10201', app_ver: str = '3.5.57', sdtfrom: str = 'v1010'): self._cookie = None self.session = RequestManager() self.session.add_cookies(self.cookie) self.auth_refresh() self._platform = platform self._app_ver = app_ver self._sdtfrom = sdtfrom self._flowid = f'{ciphers(32)}_{self._platform}' self._guid = ciphers(32) self.play_url = play_url cover_id, video_id = get_cvid(self.play_url) self.cid = cover_id self.vid = video_id logger.info(f'{self.cid=}, {self.vid=}, {self.play_url=}')
def _request(self): content = RequestManager().request( 'get', self.play_url, headers=self.headers).content.decode('utf-8') return content