You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
325 lines
11 KiB
325 lines
11 KiB
1 year ago
|
#!/usr/bin/python3
|
||
|
# -- coding: utf-8 --
|
||
|
# -------------------------------
|
||
|
# @Time : 2023/2/27 13:23
|
||
|
# -------------------------------
|
||
|
# cron "30 7,10 * * *" script-path=xxx.py,tag=匹配cron用
|
||
|
# const $ = new Env('爱奇艺签到')
|
||
|
|
||
|
|
||
|
import requests, random, string, hashlib, time, json,os
|
||
|
from json import dumps
|
||
|
|
||
|
#爱奇艺cookie
|
||
|
P00001 = os.getenv("P00001")
|
||
|
P00003 = os.getenv("P00003")
|
||
|
dfp = os.getenv("dfp")
|
||
|
|
||
|
# 推送加
|
||
|
plustoken = os.getenv("plustoken")
|
||
|
|
||
|
|
||
|
#推送函数
|
||
|
def Push(contents):
|
||
|
# 推送加
|
||
|
headers = {'Content-Type': 'application/json'}
|
||
|
json = {"token": plustoken, 'title': '爱奇艺签到', 'content': contents.replace('\n', '<br>'), "template": "json"}
|
||
|
resp = requests.post(f'http://www.pushplus.plus/send', json=json, headers=headers).json()
|
||
|
print('push+推送成功' if resp['code'] == 200 else 'push+推送失败')
|
||
|
|
||
|
|
||
|
# 任务列表
|
||
|
tasks = []
|
||
|
|
||
|
|
||
|
# 随机字符串 a-z A-Z 0-9
|
||
|
def strRandom(num):
|
||
|
return ''.join(random.sample(string.ascii_letters + string.digits, num))
|
||
|
|
||
|
|
||
|
# md5加密
|
||
|
def md5(data):
|
||
|
return hashlib.md5(bytes(data, encoding='utf-8')).hexdigest()
|
||
|
|
||
|
|
||
|
# 13位时间戳
|
||
|
def time_13():
|
||
|
return round(time.time() * 1000)
|
||
|
|
||
|
|
||
|
# 拼接 连接符 数据 特殊符号(可不填)
|
||
|
def k(c, t, e=None):
|
||
|
buf = []
|
||
|
for key, value in t.items():
|
||
|
buf.append('='.join([key, str(value)]))
|
||
|
if e != None:
|
||
|
buf.append(e)
|
||
|
return (md5(c.join(buf)))
|
||
|
return (c.join(buf))
|
||
|
|
||
|
|
||
|
# 登录
|
||
|
def login():
|
||
|
global title
|
||
|
url = "https://serv.vip.iqiyi.com/vipgrowth/query.action?P00001=" + P00001
|
||
|
res = requests.get(url).json()
|
||
|
if res['code'] == 'A00000':
|
||
|
level = res['data']['level'] # VIP等级
|
||
|
growthvalue = res['data']['growthvalue'] # 当前VIP成长值
|
||
|
distance = res['data']['distance'] # 升级需要成长值
|
||
|
deadline = res['data']['deadline'] # VIP到期时间
|
||
|
today_growth_value = res['data']['todayGrowthValue'] # 今日获得的成长值
|
||
|
logbuf = (
|
||
|
f"VIP 等级: {level}\n当前成长值: {growthvalue}\n升级需成长值: {distance}\n今日成长值: {today_growth_value}\n当月成长值:{monthlyGrowthValue}\nVIP 到期时间: {deadline}")
|
||
|
title = f"爱奇艺签到:今日成长值+{today_growth_value},预计还需{int(distance / today_growth_value) + 1}天升级"
|
||
|
else:
|
||
|
logbuf = (res['msg'])
|
||
|
print(logbuf)
|
||
|
return logbuf
|
||
|
|
||
|
|
||
|
# 签到
|
||
|
def Checkin():
|
||
|
sign_date = {
|
||
|
"agentType": "1",
|
||
|
"agentversion": "1.0",
|
||
|
"appKey": "basic_pcw",
|
||
|
"authCookie": P00001,
|
||
|
"qyid": md5(strRandom(16)),
|
||
|
"task_code": "natural_month_sign",
|
||
|
"timestamp": time_13(),
|
||
|
"typeCode": "point",
|
||
|
"userId": P00003
|
||
|
}
|
||
|
post_date = {
|
||
|
"natural_month_sign": {
|
||
|
"agentType": "1",
|
||
|
"agentversion": "1",
|
||
|
"authCookie": P00001,
|
||
|
"qyid": md5(strRandom(16)),
|
||
|
"taskCode": "iQIYI_mofhr",
|
||
|
"verticalCode": "iQIYI"
|
||
|
}
|
||
|
}
|
||
|
sign = k('|', sign_date, "UKobMjDMsDoScuWOfp6F")
|
||
|
url = f"https://community.iqiyi.com/openApi/task/execute?{k('&', sign_date)}&sign={sign}"
|
||
|
header = {
|
||
|
'Content-Type': 'application/json'
|
||
|
}
|
||
|
res = requests.post(url, headers=header, data=dumps(post_date)).json()
|
||
|
if res['code'] == 'A00000':
|
||
|
if res['data']['code'] == 'A0000':
|
||
|
quantity = res['data']['data']['rewards'][0]['rewardCount'] # 积分
|
||
|
addgrowthvalue = res['data']['data']['rewards'][1]['rewardCount'] # 新增成长值
|
||
|
continued = res['data']['data']['signDays'] # 签到天数
|
||
|
logbuf = (f"签到成功: 获得积分{quantity}, 成长值{addgrowthvalue},累计签到{continued}天")
|
||
|
else:
|
||
|
logbuf = (f"签到失败:{res['data']['msg']}")
|
||
|
else:
|
||
|
logbuf = (f"签到失败:{res['message']}")
|
||
|
print(logbuf)
|
||
|
return logbuf
|
||
|
|
||
|
|
||
|
# 网页端签到任务
|
||
|
def WebCheckin():
|
||
|
web_sign_date = {
|
||
|
"agenttype": "1",
|
||
|
"agentversion": "0",
|
||
|
"appKey": "basic_pca",
|
||
|
"appver": "0",
|
||
|
"authCookie": P00001,
|
||
|
"channelCode": "sign_pcw",
|
||
|
"dfp": dfp,
|
||
|
"scoreType": "1",
|
||
|
"srcplatform": "1",
|
||
|
"typeCode": "point",
|
||
|
"userId": P00003,
|
||
|
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36",
|
||
|
"verticalCode": "iQIYI"
|
||
|
}
|
||
|
sign = k('|', web_sign_date, "DO58SzN6ip9nbJ4QkM8H")
|
||
|
url = f"https://community.iqiyi.com/openApi/score/add?{k('&', web_sign_date)}&sign={sign}"
|
||
|
res = requests.get(url).json()
|
||
|
if res['code'] == 'A00000':
|
||
|
if res['data'][0]['code'] == 'A0000':
|
||
|
quantity = res['data'][0]['score'] # 积分
|
||
|
continued = res['data'][0]['continuousValue'] # 累计签到天数
|
||
|
logbuf = (f"网页端签到成功: 获得积分{quantity}, 累计签到{continued}天")
|
||
|
else:
|
||
|
logbuf = (f"网页端签到失败:{res['data'][0]['message']}")
|
||
|
else:
|
||
|
logbuf = (f"网页端签到失败:{res['message']}")
|
||
|
print(logbuf)
|
||
|
return logbuf
|
||
|
|
||
|
|
||
|
# 网页端访问热点首页任务
|
||
|
def Webtask():
|
||
|
web_sign_date = {
|
||
|
"agenttype": "1",
|
||
|
"agentversion": "0",
|
||
|
"appKey": "basic_pca",
|
||
|
"appver": "0",
|
||
|
"authCookie": P00001,
|
||
|
"channelCode": "paopao_pcw",
|
||
|
"dfp": dfp,
|
||
|
"scoreType": "1",
|
||
|
"srcplatform": "1",
|
||
|
"typeCode": "point",
|
||
|
"userId": P00003,
|
||
|
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36",
|
||
|
"verticalCode": "iQIYI"
|
||
|
}
|
||
|
sign = k('|', web_sign_date, "DO58SzN6ip9nbJ4QkM8H")
|
||
|
url = f"https://community.iqiyi.com/openApi/task/complete?{k('&', web_sign_date)}&sign={sign}"
|
||
|
res = requests.get(url).json()
|
||
|
if res['code'] == 'A00000':
|
||
|
logbuf = (f"网页端访问任务成功:{res['message']}")
|
||
|
print(logbuf)
|
||
|
# 领取奖励
|
||
|
url = f"https://community.iqiyi.com/openApi/score/getReward?{k('&', web_sign_date)}&sign={sign}"
|
||
|
res = requests.get(url).json()
|
||
|
print(res)
|
||
|
if res['code'] == 'A00000':
|
||
|
logbuf = (f"网页端访问任务成功:获得{res['data']['score']}积分")
|
||
|
else:
|
||
|
logbuf = (f"网页端访问任务失败:{res['message']}")
|
||
|
else:
|
||
|
logbuf = (f"网页端访问任务失败:{res['message']}")
|
||
|
print(logbuf)
|
||
|
return logbuf
|
||
|
|
||
|
|
||
|
# 抽奖
|
||
|
def Lottery():
|
||
|
url = f"https://iface2.iqiyi.com/aggregate/3.0/lottery_activity?app_k=0&app_v=0&platform_id=0&dev_os=0&dev_ua=0&net_sts=0&qyid=0&psp_uid=0&psp_cki={P00001}&psp_status=0&secure_p=0&secure_v=0&req_sn=0"
|
||
|
res = requests.get(url).json()
|
||
|
if res['code'] == 0:
|
||
|
try:
|
||
|
logbuf = (f"抽奖失败:{res['kv']['msg']}")
|
||
|
except:
|
||
|
logbuf = (f"抽奖成功:{res['title']}-{res['awardName']},剩余抽奖次数{res['daysurpluschance']}次")
|
||
|
print(logbuf)
|
||
|
return [int(res['daysurpluschance']), logbuf]
|
||
|
elif res['code'] == 3:
|
||
|
logbuf = ("抽奖失败:Cookie失效")
|
||
|
else:
|
||
|
logbuf = ("抽奖失败:未知错误")
|
||
|
print(logbuf)
|
||
|
return [0, logbuf]
|
||
|
|
||
|
|
||
|
# 任务
|
||
|
# 获取任务列表及状态 0:待领取 1:已完成 2:未开始 4:进行中
|
||
|
def query_user_task():
|
||
|
global tasks, monthlyGrowthValue
|
||
|
url = "https://tc.vip.iqiyi.com/taskCenter/task/queryUserTask"
|
||
|
params = {"P00001": P00001}
|
||
|
res = requests.get(url=url, params=params).json()
|
||
|
if res['code'] == "A00000":
|
||
|
monthlyGrowthValue = res['data']['monthlyGrowthReward']
|
||
|
tasks.clear()
|
||
|
for taskgroup in ['actively', 'daily']: # in res['data']['tasks']:
|
||
|
for item in res['data']['tasks'][taskgroup]:
|
||
|
tasks.append({"name": item['name'], "taskCode": item['taskCode'], "status": item['status']})
|
||
|
else:
|
||
|
print(f"获取任务列表失败:{res['msg']}")
|
||
|
|
||
|
|
||
|
def joinTask(taskCode):
|
||
|
url = f"https://tc.vip.iqiyi.com/taskCenter/task/joinTask?taskCode={taskCode}&lang=zh_CN&platform=0000000000000000&P00001={P00001}"
|
||
|
res = requests.get(url).json()
|
||
|
if res['code'] == 'A00000':
|
||
|
return [True]
|
||
|
else:
|
||
|
return [False, res['msg']]
|
||
|
|
||
|
|
||
|
def notifyTask(taskCode):
|
||
|
url = f"https://tc.vip.iqiyi.com/taskCenter/task/notify?taskCode={taskCode}&lang=zh_CN&platform=0000000000000000&P00001={P00001}"
|
||
|
requests.get(url)
|
||
|
|
||
|
|
||
|
def getTaskRewards(taskCode):
|
||
|
url = f"https://tc.vip.iqiyi.com/taskCenter/task/getTaskRewards?taskCode={taskCode}&lang=zh_CN&platform=0000000000000000&P00001={P00001}"
|
||
|
res = requests.get(url).json()
|
||
|
if res['msg'] == "成功":
|
||
|
if res['code'] == 'A00000':
|
||
|
if res['dataNew'] != []:
|
||
|
logbuf = (f"{res['dataNew'][0]['name']} {res['dataNew'][0]['value']}")
|
||
|
else:
|
||
|
logbuf = "可能未完成"
|
||
|
else:
|
||
|
logbuf = (f"{res['msg']}")
|
||
|
else:
|
||
|
logbuf = ("cookie无效/接口失效")
|
||
|
return logbuf
|
||
|
|
||
|
|
||
|
def perform_task():
|
||
|
luckbuf = []
|
||
|
query_user_task() # 获取任务列表
|
||
|
for task in tasks:
|
||
|
if task['status'] == 2:
|
||
|
result = joinTask(task['taskCode'])
|
||
|
if result[0]:
|
||
|
notifyTask(task['taskCode'])
|
||
|
logbuf = f"开始{task['name']}任务"
|
||
|
else:
|
||
|
logbuf = f"{task['name']}任务:{result[1]}"
|
||
|
print(logbuf)
|
||
|
luckbuf.append(logbuf)
|
||
|
time.sleep(1)
|
||
|
time.sleep(10)
|
||
|
query_user_task() # 重新获取任务列表
|
||
|
for task in tasks:
|
||
|
if task['status'] == 0:
|
||
|
logbuf = f"{task['name']}任务已完成:{getTaskRewards(task['taskCode'])}"
|
||
|
print(logbuf)
|
||
|
luckbuf.append(logbuf)
|
||
|
time.sleep(1)
|
||
|
if task['status'] == 4:
|
||
|
logbuf = f"{task['name']}任务正在进行中,需要手动完成"
|
||
|
print(logbuf)
|
||
|
luckbuf.append(logbuf)
|
||
|
return ("\n".join(luckbuf))
|
||
|
|
||
|
|
||
|
# 主程序
|
||
|
def main():
|
||
|
log = []
|
||
|
startime = time_13()
|
||
|
log.append(Checkin()) # 签到
|
||
|
time.sleep(1)
|
||
|
log.append(WebCheckin()) # 网页端签到
|
||
|
time.sleep(1)
|
||
|
log.append(Webtask()) # 网页端访问热点首页
|
||
|
time.sleep(1)
|
||
|
while True:
|
||
|
lucknum = Lottery() # 抽奖
|
||
|
if lucknum[0] != 0:
|
||
|
log.append(lucknum[1])
|
||
|
time.sleep(2)
|
||
|
else:
|
||
|
log.append(lucknum[1])
|
||
|
break
|
||
|
log.append(perform_task()) # 做任务
|
||
|
log.insert(0, login()) # 登录信息
|
||
|
endtime = time_13()
|
||
|
duration = (endtime - startime) / 1000
|
||
|
logbuf = f"共耗时{duration}秒"
|
||
|
print(logbuf)
|
||
|
log.append(logbuf)
|
||
|
print("***END***")
|
||
|
Push(contents="\n".join(log)) #推送到微信
|
||
|
return (title)
|
||
|
|
||
|
|
||
|
def main_handler(event, context):
|
||
|
return main()
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|