Update iqiyi_new.py

This commit is contained in:
blusunny
2024-09-05 19:55:41 +08:00
committed by GitHub
parent 086a966545
commit 167b9cab1c

View File

@@ -1,108 +1,125 @@
#!/usr/bin/python3
# -- coding: utf-8 --
# @env : iqyck
# 功能:爱奇艺签到 刷观影时长 做任务领取奖励
# -------------------------------
# @Author : github@limoruirui https://github.com/limoruirui
# @Time : 5/5/2022 20:09
# -------------------------------
# cron "30 7,10 * * *" script-path=xxx.py,tag=匹配cron用
# const $ = new Env('爱奇艺签到加刷时长')
"""
1.爱奇艺每日任务脚本 请低调使用 请不要用于商业牟利 一天一次 请自行斟酌设置crontab
2.cookie获取方式
1.cookie可以用别人loon、qx等软件的mitm类自动获取再去boxjs里复制出来填写到环境变量或本脚本中
2.也可以自行抓包 电脑或者手机都可以
3.实在都不会
3.cookie食用方式: 可以只保留P00001=xxx;中xxx的值 也可以整段都要 青龙运行可新建并放入到环境变量 iqy_ck 中 也可以直接填写在本脚本中
4.关于dfp
1.dfp相当于爱奇艺的浏览器指纹 不需要登录也会有 有效期非常长 实测半年多前的还能用 其中领取每日任务的奖励和刷观影时长都需要使用到
2.dfp目前本脚本写死了一个 但是多用户使用同一个不知道有没有风险
3.建议有能力的自己抓包 在cookie里的__dfp字段 然后环境变量新增 iqiyi_dfp 填入 或者在本脚本内写死
4.不会自己抓的话 请打开设置环境变量 get_iqiyi_dfp 为 True 再执行脚本会获得并输出到面板 请复制后按上一条填入环境变量 获取完请删除get_iqiyi_dfp环境变量 小鸡经不起操
5.get请求 没携带任何东西出去 开源脚本 请不要说什么提交什么东西到我服务器
5.库中有每月自动领取爱奇艺会员天数红包的脚本 可配合使用(需有高等级的运行脚本提供红包 其它人才可以领取)
cookie为爱奇艺整个cookie
export iqy_ck = "cookie"
"""
cookie = ""
iqiyi_dfp = ""
from time import sleep, time
from random import randint, choice
from json import dumps
from datetime import datetime
from hashlib import md5 as md5Encode
from json import dumps
from time import sleep, time
from os import environ, system, path
from random import randint, choice
from re import findall
from string import digits, ascii_lowercase, ascii_uppercase
from sys import exit, stdout
from os import environ, system
from re import findall
from uuid import uuid4
import requests
def load_send():
cur_path = path.abspath(path.dirname(__file__))
if path.exists(cur_path + "/notify.py"):
try:
from notify import send
return send
except ImportError:
return False
else:
return False
try:
from requests import Session, get, post
from fake_useragent import UserAgent
except:
print(
"你还没有安装requests库和fake_useragent库 正在尝试自动安装 请在安装结束后重新执行此脚本\n若还是提示本条消息 请自行运行pip3 install requests和pip3 install fake-useragent或者在青龙的依赖管理里安装python的requests和fake-useragent")
"你还没有安装requests库和TL库_useragent库 正在尝试自动安装 请在安装结束后重新执行此脚本\n若还是提示本条消息 请自行运行pip3 install requests和pip3 install fake-useragent或者在青龙的依赖管理里安装python的requests和fake-useragent")
system("pip3 install fake-useragent")
system("pip3 install requests")
print("安装完成 脚本退出 请重新执行")
exit(0)
iqy_ck = environ.get("iqy_ck") if environ.get("iqy_ck") else cookie
get_iqiyi_dfp = environ.get("get_iqiyi_dfp") if environ.get("get_iqiyi_dfp") else False
pushplus_token = environ.get("PUSH_PLUS_TOKEN") if environ.get("PUSH_PLUS_TOKEN") else ""
tgbot_token = environ.get("TG_BOT_TOKEN") if environ.get("TG_BOT_TOKEN") else ""
tg_userId = environ.get("TG_USER_ID") if environ.get("TG_USER_ID") else ""
tg_push_api = environ.get("TG_API_HOST") if environ.get("TG_API_HOST") else ""
if iqy_ck == "":
print("未填写cookie 青龙可在环境变量设置 iqy_ck 或者在本脚本文件上方将获取到的cookie填入cookie中")
iqyck = environ.get("iqy_ck") if environ.get("iqy_ck") else ""
P00001 = P00003 = dfp = qyid = ""
if iqyck == "":
print("未找到iqy_ck请填写iqy_ck变量")
exit(0)
if "__dfp" in iqy_ck:
iqiyi_dfp = findall(r"__dfp=(.*?)(;|$)", iqy_ck)[0][0]
iqiyi_dfp = iqiyi_dfp.split("@")[0]
if "P00001" in iqy_ck:
iqy_ck = findall(r"P00001=(.*?)(;|$)", iqy_ck)[0][0]
if iqiyi_dfp == "":
iqiyi_dfp = environ.get("iqiyi_dfp") if environ.get(
"iqiyi_dfp") else "a18af56a9b6a224272ab8ed00d1a587078cd5c8ab119b2a4a689d5a22f06bcbd8b"
check_items = ["P00001", "P00003", "QC005", "__dfp"]
class Iqiyi:
def __init__(self, ck, dfp):
self.ck = ck
for item in check_items:
try:
found = findall(rf"{item}=(.*?)(;|$)", iqyck)
if found:
value = found[0][0]
if item == "P00001":
P00001 = value
elif item == "P00003":
P00003 = value
elif item == "QC005":
qyid = value
elif item == "__dfp":
dfp = value
dfp = dfp.split("@")[0]
else:
print(f"{item}未在iqyck中找到")
except IndexError:
print(f"{item}存在但无法被正确解析")
class IQiYi:
name = "爱奇艺"
def __init__(self):
self.P00001 = P00001
self.userId = P00003
self.dfp = dfp
self.qyid = qyid
self.platform = str(uuid4())[:16],
self.session = Session()
self.user_agent = UserAgent().chrome
self.headers = {
"User-Agent": self.user_agent,
"Cookie": f"P00001={self.ck}",
"Content-Type": "application/json"
"Cookie": f"P00001={self.P00001}",
'Accept': "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
'sec-fetch-site': "none",
'sec-fetch-dest': "document",
'accept-language': "zh-CN,zh-Hans;q=0.9",
'sec-fetch-mode': "navigate"
}
self.dfp = dfp
self.uid = ""
self.msg = ""
self.user_info = ""
self.task_info = ""
self.msg = ""
self.taskList = []
self.lotteryList = []
self.shakeLotteryList = []
self.gift_list = []
self.sleep_await = environ.get("sleep_await") if environ.get("sleep_await") else 1
"""工具"""
def req(self, url, req_method="GET", body=None):
data = {}
if req_method.upper() == "GET":
try:
data = self.session.get(url, headers=self.headers, params=body).json()
except:
self.print_now("请求发送失败,可能为网络异常")
# data = self.session.get(url, headers=self.headers, params=body).text
return data
elif req_method.upper() == "POST":
try:
data = self.session.post(url, headers=self.headers, data=dumps(body)).json()
except:
self.print_now("请求发送失败,可能为网络异常")
# data = self.session.post(url, headers=self.headers, data=dumps(body)).text
return data
elif req_method.upper() == "OTHER":
try:
self.session.get(url, headers=self.headers, params=dumps(body))
except:
self.print_now("请求发送失败,可能为网络异常")
else:
self.print_now("您当前使用的请求方式有误,请检查")
method = req_method.upper()
if method not in ["GET", "POST", "OTHER"]:
self.print_now(f"错误:不支持的请求方法:{method}")
return
try:
if method == "GET":
response = self.session.get(url, headers=self.headers, params=body)
elif method == "POST":
response = self.session.post(url, headers=self.headers, data=dumps(body))
elif method == "OTHER":
response = self.session.get(url, headers=self.headers, params=dumps(body))
if method in ["GET", "POST"]:
data = response.json()
except requests.exceptions.RequestException as e:
self.print_now(f"请求发送失败,可能为网络异常,异常详细信息:{str(e)}")
return data
def timestamp(self, short=False):
if (short):
@@ -123,89 +140,54 @@ class Iqiyi:
str += choice(digits + ascii_lowercase)
return str
def pushplus(self, title, content):
url = "http://www.pushplus.plus/send"
headers = {
"Content-Type": "application/json"
}
data = {
"token": pushplus_token,
"title": title,
"content": content
}
try:
post(url, headers=headers, data=dumps(data))
except:
self.print_now('推送失败')
def tgpush(self, content):
url = f"https://api.telegram.org/bot{tgbot_token}/sendMessage"
if tg_push_api != "":
url = f"https://{tg_push_api}/bot{tgbot_token}/sendMessage"
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
data = {'chat_id': str(tg_userId), 'text': content, 'disable_web_page_preview': 'true'}
try:
post(url, headers=headers, data=data, timeout=10)
except:
self.print_now('推送失败')
def print_now(self, content):
print(content)
stdout.flush()
def get_dfp_params(self):
get_params_url = "https://api.lomoruirui.com/iqiyi/get_dfp"
data = get(get_params_url).json()
return data
def get_dfp(self):
body = self.get_dfp_params()
url = "https://cook.iqiyi.com/security/dfp_pcw/sign"
def sign(self):
# lequ-qfe.iqiyi.com
time_stamp = self.timestamp()
data = f'agenttype=20|agentversion=15.5.5|appKey=lequ_rn|appver=15.5.5|authCookie={self.P00001}|qyid={self.qyid}|srcplatform=20|task_code=natural_month_sign|timestamp={time_stamp}|userId={self.userId}|cRcFakm9KSPSjFEufg3W'
url = f'https://community.iqiyi.com/openApi/task/execute?task_code=natural_month_sign&timestamp={time_stamp}&appKey=lequ_rn&userId={self.userId}&authCookie={self.P00001}&agenttype=20&agentversion=15.5.5&srcplatform=20&appver=15.5.5&qyid={self.qyid}&sign={self.md5(data)}'
headers = {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-CN,zh;q=0.9",
"Cache-Control": "no-cache",
"Connection": "keep-alive",
"Content-Length": "1059",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "cook.iqiyi.com",
"Origin": "https://www.iqiyi.com",
"Pragma": "no-cache",
"Referer": "https://www.iqiyi.com/",
"sec-ch-ua": f"\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"{body['data']['sv']}\", \"Google Chrome\";v=\"{body['data']['sv']}\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "Windows",
"Sec-Fetch-Dest": "empty",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Site": "same-site",
"User-Agent": self.user_agent
'Content-Type': 'application/json'
}
data = post(url, headers=headers, data=body["data"]["body"]).json()
self.dfp = data["result"]["dfp"]
self.print_now(self.dfp)
def get_userinfo(self):
url = f"https://tc.vip.iqiyi.com/growthAgency/v2/growth-aggregation?messageId={self.qyid}&platform=97ae2982356f69d8&P00001={self.ck}&responseNodes=duration%2Cgrowth%2Cupgrade%2CviewTime%2CgrowthAnnualCard&_={self.timestamp()}"
data = self.req(url)
msg = data['data']['growth']
try:
self.user_info = f"查询成功: 到期时间{msg['deadline']}\t当前等级为{msg['level']}\n\t今日获得成长值{msg['todayGrowthValue']}\t总成长值{msg['growthvalue']}\t距离下一等级还差{msg['distance']}成长值"
self.print_now(self.user_info)
except:
self.user_info = f"查询失败,未获取到用户信息"
"""获取用户id"""
def getUid(self):
url = f'https://passport.iqiyi.com/apis/user/info.action?authcookie={self.ck}&fields=userinfo%2Cqiyi_vip&timeout=15000'
data = self.req(url)
if data.get("code") == 'A00000':
self.uid = data['data']['userinfo']['pru']
else:
self.print_now("请求api失败 最大可能是cookie失效了 也可能是网络问题")
self.tgpush("爱奇艺每日任务: 请求api失败 最大可能是cookie失效了 也可能是网络问题")
body = {
"natural_month_sign": {
"verticalCode": "iQIYI",
"agentVersion": "15.4.6",
"authCookie": self.P00001,
"taskCode": "iQIYI_mofhr",
"dfp": self.dfp,
"qyid": self.qyid,
"agentType": 20,
"signFrom": 1
}
}
data = post(url, headers=headers, data=dumps(body)).json()
signDays = None
if 'code' in data and data['code'] == 'A0003':
self.print_now("iqyck已失效请重新获取")
exit(0)
elif 'code' in data and data['code'] == 'A00000':
data_data = data.get('data', {})
msg = data_data.get('msg')
if data_data.get('data'):
signDays = data_data.get('data', {}).get('signDays')
if msg and '已经到达上限' in msg:
self.print_now(f"签到失败,今天已签到")
self.task_info += f"签到失败,今天已签到\n"
elif signDays is not None:
self.print_now(f"签到成功, 本月累计签到{signDays}")
self.task_info += f"签到成功, 本月累计签到{signDays}\n"
if data_data['code'] != 'A0000' and data_data['code'] != 'A0014' and not (data_data.get('success')):
self.print_now(f"签到失败:{msg}")
self.task_info += f"签到失败:{msg}\n"
else:
self.print_now(f"签到失败:{data}")
self.task_info += f"签到失败:{data}\n"
def get_watch_time(self):
url = "https://tc.vip.iqiyi.com/growthAgency/watch-film-duration"
@@ -213,148 +195,181 @@ class Iqiyi:
watch_time = data['data']['viewtime']['time']
return watch_time
def get_sign(self):
self.qyid = self.md5(self.uuid(16))
time_stamp = self.timestamp()
if self.uid == "":
self.print_now("获取用户id失败 可能为cookie设置错误或者网络异常,请重试或者检查cookie")
exit(0)
data = f'agentType=1|agentversion=1|appKey=basic_pcw|authCookie={self.ck}|qyid={self.qyid}|task_code=natural_month_sign|timestamp={time_stamp}|typeCode=point|userId={self.uid}|UKobMjDMsDoScuWOfp6F'
url = f'https://community.iqiyi.com/openApi/task/execute?agentType=1&agentversion=1&appKey=basic_pcw&authCookie={self.ck}&qyid={self.qyid}&sign={self.md5(data)}&task_code=natural_month_sign&timestamp={time_stamp}&typeCode=point&userId={self.uid}'
return url
def getUrl(self, Time, dfp):
return f'https://msg.qy.net/b?u=f600a23f03c26507f5482e6828cfc6c5&pu={self.uid}&p1=1_10_101&v=5.2.66&ce={self.uuid(32)}&de=1616773143.1639632721.1639653680.29&c1=2&ve={self.uuid(32)}&ht=0&pt={randint(1000000000, 9999999999) / 1000000}&isdm=0&duby=0&ra=5&clt=&ps2=DIRECT&ps3=&ps4=&br=mozilla%2F5.0%20(windows%20nt%2010.0%3B%20win64%3B%20x64)%20applewebkit%2F537.36%20(khtml%2C%20like%20gecko)%20chrome%2F96.0.4664.110%20safari%2F537.36&mod=cn_s&purl=https%3A%2F%2Fwww.iqiyi.com%2Fv_1eldg8u3r08.html%3Fvfrm%3Dpcw_home%26vfrmblk%3D712211_cainizaizhui%26vfrmrst%3D712211_cainizaizhui_image1%26r_area%3Drec_you_like%26r_source%3D62%2540128%26bkt%3DMBA_PW_T3_53%26e%3Db3ec4e6c74812510c7719f7ecc8fbb0f%26stype%3D2&tmplt=2&ptid=01010031010000000000&os=window&nu=0&vfm=&coop=&ispre=0&videotp=0&drm=&plyrv=&rfr=https%3A%2F%2Fwww.iqiyi.com%2F&fatherid={randint(1000000000000000, 9999999999999999)}&stauto=1&algot=abr_v12-rl&vvfrom=&vfrmtp=1&pagev=playpage_adv_xb&engt=2&ldt=1&krv=1.1.85&wtmk=0&duration={randint(1000000, 9999999)}&bkt=&e=&stype=&r_area=&r_source=&s4={randint(100000, 999999)}_dianshiju_tbrb_image2&abtest=1707_B%2C1550_B&s3={randint(100000, 999999)}_dianshiju_tbrb&vbr={randint(100000, 999999)}&mft=0&ra1=2&wint=3&s2=pcw_home&bw=10&ntwk=18&dl={randint(10, 999)}.27999999999997&rn=0.{randint(1000000000000000, 9999999999999999)}&dfp={dfp}&stime={self.timestamp()}&r={randint(1000000000000000, 9999999999999999)}&hu=1&t=2&tm={Time}&_={self.timestamp()}'
def sign(self):
url = self.get_sign()
body = {
"natural_month_sign": {
"taskCode": "iQIYI_mofhr",
"agentType": 1,
"agentversion": 1,
"authCookie": self.ck,
"qyid": self.qyid,
"verticalCode": "iQIYI"
}
}
data = self.req(url, "post", body)
# print(data)
if data.get('code') == 'A00000':
self.print_now(f"签到执行成功, {data['data']['msg']}")
else:
self.print_now("签到失败,原因可能是签到接口又又又又改了")
def dailyTask(self):
taskcodeList = {
'b6e688905d4e7184': "浏览生活福利",
'a7f02e895ccbf416': "看看热b榜",
'8ba31f70013989a8': "每日观影成就",
"freeGetVip": "浏览会员兑换活动",
"GetReward": "逛领福利频道"}
for taskcode in taskcodeList:
# 领任务
url = f'https://tc.vip.iqiyi.com/taskCenter/task/joinTask?P00001={self.ck}&taskCode={taskcode}&platform=b6c13e26323c537d&lang=zh_CN&app_lm=cn'
if self.req(url)['code'] == 'A00000':
# print(f'领取{taskcodeList[taskcode]}任务成功')
sleep(10)
# 完成任务
url = f'https://tc.vip.iqiyi.com/taskCenter/task/notify?taskCode={taskcode}&P00001={self.ck}&platform=97ae2982356f69d8&lang=cn&bizSource=component_browse_timing_tasks&_={self.timestamp()}'
if self.req(url)['code'] == 'A00000':
# print(f'完成{taskcodeList[taskcode]}任务成功')
sleep(2)
# 领取奖励
# url = f'https://tc.vip.iqiyi.com/taskCenter/task/getTaskRewards?P00001={self.ck}&taskCode={taskcode}&dfp={self.dfp}&platform=b6c13e26323c537d&lang=zh_CN&app_lm=cn&deviceID={self.md5(self.uuid(8))}&token=&multiReward=1&fv=bed99b2cf5722bfe'
url = f"https://tc.vip.iqiyi.com/taskCenter/task/getTaskRewards?P00001={self.ck}&taskCode={taskcode}&lang=zh_CN&platform=b2f2d9af351b8603"
try:
price = self.req(url)['dataNew'][0]["value"]
self.print_now(f"领取{taskcodeList[taskcode]}任务奖励成功, 获得{price}点成长值")
except:
self.print_now(f"领取{taskcodeList[taskcode]}任务奖励可能出错了 也可能没出错 只是你今天跑了第二次")
sleep(5)
def lottery_draw(self, lottery=True):
"""
查询剩余抽奖次数和抽奖
True 抽
False 查
"""
url = "https://iface2.iqiyi.com/aggregate/3.0/lottery_activity"
lottery_params = {
"app_k": "0",
"app_v": "0",
"platform_id": 10,
"dev_os": "2.0.0",
"dev_ua": "COL-AL10",
"net_sts": 1,
"qyid": self.qyid,
"psp_uid": self.uid,
"psp_cki": self.ck,
"psp_status": 3,
"secure_v": 1,
"secure_p": "0",
"req_sn": self.timestamp()
}
# get_change_params = deepcopy(lottery_params)
# get_change_params["lottery_chance"] = 1
# params = get_change_params
# if lottery:
# params = lottery_params
params = lottery_params
data = self.req(url, "get", params)
# if lottery and data.get("code") == 0:
if data.get("code") == 0:
self.print_now(f'抽奖成功, 获得{data["awardName"]}')
return data["daysurpluschance"]
elif data.get("code") == 3:
self.print_now(f"抽奖成功, 但是获得奖励信息错误, 大概率是没用的开通会员优惠券")
return data["daysurpluschance"]
else:
return 0
# elif not lottery and data.get("code") == 0:
# return data["daysurpluschance"]
def start(self):
self.print_now("正在执行刷观影时长脚本 为减少风控 本过程运行时间较长 大概半个小时")
def watchVideo(self):
totalTime = self.get_watch_time()
if totalTime >= 7200:
self.print_now(f"的账号今日观影时长大于2小时 不执行刷观影时长")
self.print_now(f"的账号今日观影时长大于2小时不执行刷观影时长")
self.task_info += f"今日观影任务已完成\n"
return
for i in range(150):
Time = randint(60, 120)
url = self.getUrl(Time, self.dfp)
self.print_now("正在刷观影时长为减少风控本过程运行大概1个小时")
for i in range(1, 121):
Time = randint(70, 90)
url = f"https://msg.qy.net/b?u=f600a23f03c26507f5482e6828cfc6c5&pu={self.userId}&p1=1_10_101&v=5.2.66&ce={self.uuid(32)}&de=1616773143.1639632721.1639653680.29&c1=2&ve={self.uuid(32)}&ht=0&pt={randint(1000000000, 9999999999) / 1000000}&isdm=0&duby=0&ra=5&clt=&ps2=DIRECT&ps3=&ps4=&br=mozilla%2F5.0%20(windows%20nt%2010.0%3B%20win64%3B%20x64)%20applewebkit%2F537.36%20(khtml%2C%20like%20gecko)%20chrome%2F96.0.4664.110%20safari%2F537.36&mod=cn_s&purl=https%3A%2F%2Fwww.iqiyi.com%2Fv_1eldg8u3r08.html%3Fvfrm%3Dpcw_home%26vfrmblk%3D712211_cainizaizhui%26vfrmrst%3D712211_cainizaizhui_image1%26r_area%3Drec_you_like%26r_source%3D62%2540128%26bkt%3DMBA_PW_T3_53%26e%3Db3ec4e6c74812510c7719f7ecc8fbb0f%26stype%3D2&tmplt=2&ptid=01010031010000000000&os=window&nu=0&vfm=&coop=&ispre=0&videotp=0&drm=&plyrv=&rfr=https%3A%2F%2Fwww.iqiyi.com%2F&fatherid={randint(1000000000000000, 9999999999999999)}&stauto=1&algot=abr_v12-rl&vvfrom=&vfrmtp=1&pagev=playpage_adv_xb&engt=2&ldt=1&krv=1.1.85&wtmk=0&duration={randint(1000000, 9999999)}&bkt=&e=&stype=&r_area=&r_source=&s4={randint(100000, 999999)}_dianshiju_tbrb_image2&abtest=1707_B%2C1550_B&s3={randint(100000, 999999)}_dianshiju_tbrb&vbr={randint(100000, 999999)}&mft=0&ra1=2&wint=3&s2=pcw_home&bw=10&ntwk=18&dl={randint(10, 999)}.27999999999997&rn=0.{randint(1000000000000000, 9999999999999999)}&dfp={dfp}&stime={self.timestamp()}&r={randint(1000000000000000, 9999999999999999)}&hu=1&t=2&tm={Time}&_={self.timestamp()}"
self.req(url, 'other')
totalTime += Time
sleep(randint(20, 40))
if i % 20 == 3:
sleep(randint(30, 50))
if i % 30 == 0:
self.print_now(f"现在已经刷到了{totalTime}秒, 数据同步有延迟, 仅供参考")
if totalTime >= 7600:
if totalTime >= 7200:
sleep(60)
self.print_now(f"今日观影任务已完成")
self.task_info += f"今日观影任务已完成\n"
break
def dailyTask(self):
# 查询任务
"""
status: 0 已完成,未领奖 1 已完成,已领奖 2 未完成
"""
url = f'https://tc.vip.iqiyi.com/taskCenter/task/queryUserTask?P00001={self.P00001}'
data = self.req(url)
if data['code'] == 'A00000':
for item in data["data"].get("tasks", {}).get("daily", []):
if item["taskCode"] != "WatchVideo60mins" and item["status"] != 1:
self.taskList.append(
{
"taskTitle": item["taskTitle"],
"taskCode": item["taskCode"],
"status": item["status"]
}
)
if self.taskList:
for item in self.taskList:
if item["status"] == 2:
# 领任务
url = f'https://tc.vip.iqiyi.com/taskCenter/task/joinTask?P00001={self.P00001}&taskCode={item["taskCode"]}&platform={self.platform}&lang=zh_CN&app_lm=cn'
if self.req(url)['code'] == 'A00000':
sleep(10)
# 完成任务
url = f'https://tc.vip.iqiyi.com/taskCenter/task/notify?taskCode={item["taskCode"]}&P00001={self.P00001}&platform={self.platform}&lang=cn&bizSource=component_browse_timing_tasks&_={self.timestamp()}'
if self.req(url)['code'] == 'A00000':
sleep(2)
if item["status"] == 2 or item["status"] == 0:
# 领取奖励
url = f"https://tc.vip.iqiyi.com/taskCenter/task/getTaskRewards?P00001={self.P00001}&taskCode={item['taskCode']}&lang=zh_CN&platform={self.platform}"
data = self.req(url)
if data['code'] == 'A00000':
price = data['dataNew'][0]["value"]
self.print_now(f"{item['taskTitle']}任务已完成, 获得{int(price[1:])}点成长值")
self.task_info += f"{item['taskTitle']}任务已完成, 获得{int(price[1:])}点成长值\n"
sleep(5)
else:
self.print_now("今日日常浏览任务已全部完成")
self.task_info += "今日日常浏览任务已全部完成\n"
def lottery(self):
url = "https://iface2.iqiyi.com/aggregate/3.0/lottery_activity"
lottery_params = {
"app_k": 0,
"app_v": 0,
"platform_id": 10,
"dev_os": 0,
"dev_ua": 0,
"net_sts": 0,
"qyid": self.qyid,
"psp_uid": self.userId,
"psp_cki": self.P00001,
"psp_status": 3,
"secure_v": 1,
"secure_p": 0,
"req_sn": self.timestamp()
}
params = lottery_params
data = self.req(url, "get", params)
if data.get("code") == 0:
daysurpluschance = int(data.get("daysurpluschance"))
if daysurpluschance == 0:
if self.lotteryList:
self.print_now(f"抽奖奖品:{''.join(self.lotteryList)}")
self.task_info += f"抽奖奖品:{''.join(self.lotteryList)}\n"
else:
self.print_now(f"抽奖次数已用完, 明日再来吧")
self.task_info += f"抽奖次数已用完, 明日再来吧\n"
else:
award_info = data.get("awardName")
self.lotteryList.append(award_info)
sleep(2)
self.lottery()
else:
self.print_now(f"抽奖接口请求失败:{data}\n")
def shake_lottery(self):
url = f'https://act.vip.iqiyi.com/shake-api/lottery?P00001={self.P00001}&dfp={self.dfp}&qyid={self.qyid}&deviceID={self.qyid}&version=15.4.6&agentType=12&platform=bb35a104d95490f6&ptid=02030031010000000000&fv=afc0b50ed49e732d&source=afc0b50ed49e732d&_={self.timestamp()}&vipType=1&lotteryType=0&actCode=0k9GkUcjqqj4tne8&freeLotteryNum=3&extendParams={{"appIds":"iqiyi_pt_vip_iphone_video_autorenew_12m_348yuan_v2","supportSk2Identity":true,"testMode":"0","iosSystemVersion":"17.4.1","bundleId":"com.qiyi.iphone"}}'
data = self.req(url)
if data.get("code") == 'A00000':
award_info = data.get("data", {}).get("title")
self.shakeLotteryList.append(award_info)
sleep(2)
self.shake_lottery()
elif data.get("msg") == "抽奖次数用完":
if self.shakeLotteryList:
self.print_now(f"每天摇一摇奖品:{''.join(self.shakeLotteryList)}")
self.task_info += f"每天摇一摇奖品:{''.join(self.shakeLotteryList)}\n"
else:
self.print_now(f"每天摇一摇次数已用完, 明日再来吧")
self.task_info += f"每天摇一摇次数已用完, 明日再来吧\n"
else:
self.print_now(f'每天摇一摇:{data.get("msg")}\n')
def giveTimes(self):
times_code_list = ["browseWeb", "browseWeb", "bookingMovie"]
for times_code in times_code_list:
url = f"https://pcell.iqiyi.com/lotto/giveTimes?dfp&qyid={self.qyid}&version&deviceId={self.qyid}&_cctimer={self.timestamp()}&actCode=bcf9d354bc9f677c&timesCode={times_code}&P00001={self.P00001}"
data = self.req(url)
def queryTimes(self):
url = f"https://pcell.iqiyi.com/lotto/queryTimes?dfp&qyid={self.qyid}&version&deviceId={self.qyid}&_cctimer={self.timestamp()}&actCode=bcf9d354bc9f677c&P00001={self.P00001}"
data = self.req(url)
if data.get("code") == 'A00000':
times = data["data"]["times"]
return times
def lotto_lottery(self):
self.giveTimes()
times = self.queryTimes()
if times == 0:
self.print_now(f"白金抽奖次数已用完, 明日再来吧")
self.task_info += f"白金抽奖次数已用完, 明日再来吧"
for _ in range(times):
url = f"https://pcell.iqiyi.com/lotto/lottery?dfp&qyid={self.qyid}&version&deviceId={self.qyid}&_cctimer={self.timestamp()}&actCode=bcf9d354bc9f677c&P00001={self.P00001}"
data = self.req(url)
gift_name = data["data"]["giftName"]
if gift_name and "未中奖" not in gift_name:
self.gift_list.append(gift_name)
if self.gift_list:
self.print_now(f"白金抽奖奖品:{''.join(self.gift_list)}")
self.task_info += f"白金抽奖奖品:{''.join(self.gift_list)}"
elif times != 0:
self.print_now(f"很遗憾,白金抽奖未中奖")
self.task_info += f"很遗憾,白金抽奖未中奖"
def get_userinfo(self):
url = f"https://tc.vip.iqiyi.com/growthAgency/v2/growth-aggregation?messageId=b7d48dbba64c4fd0f9f257dc89de8e25&platform=97ae2982356f69d8&P00001={self.P00001}&responseNodes=duration,growth,upgrade,viewTime,growthAnnualCard&_={self.timestamp()}"
data = self.req(url)
growth_info = data['data']['growth']
if data.get("code") == 'A00000':
self.user_info += f"用户昵称:{ data['data']['user']['nickname']}\nVIP等级{growth_info['level']}\nVIP到期时间{growth_info['deadline']}\n今日成长:{growth_info['todayGrowthValue']}\n当前成长:{growth_info['growthvalue']}\n升级还需:{growth_info['distance']}\n"
else:
self.user_info = f"查询失败,未获取到用户信息\n"
def main(self):
if get_iqiyi_dfp:
self.get_dfp()
self.getUid()
self.get_sign()
self.start()
for i in range(10):
change = self.lottery_draw()
if int(change) == 0:
break
sleep(3)
self.sign()
self.watchVideo()
self.dailyTask()
self.print_now(f"任务已经执行完成, 因爱奇艺观影时间同步较慢,这里等待3分钟再查询今日成长值信息,若不需要等待直接查询,请设置环境变量名 sleep_await = 0 默认为等待")
self.lottery()
self.shake_lottery()
self.lotto_lottery()
self.print_now(f"任务已经执行完成因爱奇艺观影时间同步较慢这里等待1分钟再查询今日成长值信息\n若不需要等待直接查询,请设置环境变量名 sleep_await = 0")
if int(self.sleep_await) == 1:
sleep(180)
sleep(60)
self.get_userinfo()
if pushplus_token != "":
self.pushplus("爱奇艺每日任务签到", self.user_info)
if tgbot_token != "" and tg_userId != "":
self.tgpush(self.user_info)
self.msg = self.user_info + self.task_info
send = load_send()
if callable(send):
send("爱奇艺", self.msg)
else:
print('\n加载通知服务失败')
if __name__ == '__main__':
iqiyi = Iqiyi(iqy_ck, iqiyi_dfp)
iqiyi = IQiYi()
iqiyi.main()