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.
111 lines
4.8 KiB
111 lines
4.8 KiB
|
|
#!/usr/bin/python3 |
|
# -- coding: utf-8 -- |
|
# ------------------------------- |
|
# @Author : github@wd210010 https://github.com/wd210010/just_for_happy |
|
# @Time : 2023/2/27 13:23 |
|
# ------------------------------- |
|
# cron "30 1 * * *" script-path=xxx.py,tag=匹配cron用 |
|
# const $ = new Env('逑美在线') |
|
|
|
import requests, json,time,re,os |
|
|
|
# 逑美在线app 可以完成签到和抽卡人任务 |
|
# qmzxbody取app登录(使用帐号密码登录)界面登录后的https://api.qiumeiapp.com/qm/10001/qmLogin URL的请求body全部 放到单引号里面 多账号支持 |
|
# 示例'{"deviceNumber":"*****","anonymousId":"*****","appVersion":"7.2.1","appMarket":"appstore","password":"*****","deviceModel":"iPhone14,5","sign":"******","deviceToken":"*****==","phoneNumber":"*****"}', |
|
|
|
# 青龙变量 qmzxbody |
|
qmzxbody = os.getenv("qmzxbody").split('&') |
|
|
|
|
|
#推送加 token |
|
plustoken = os.getenv("plustoken") |
|
|
|
def Push(contents): |
|
# plustoken推送 |
|
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+推送失败') |
|
|
|
|
|
# 获取token |
|
for i in range(len(qmzxbody)): |
|
sign = "".join(re.findall('"sign":"(.*?)"', qmzxbody[i], re.S)) |
|
# print(sign) |
|
url = 'https://api.qiumeiapp.com/qm/10001/qmLogin' |
|
headers = { |
|
'Host': 'api.qiumeiapp.com', |
|
'Content-Type': 'application/json', |
|
'appVersion': '8.1.1', |
|
'Content-Length': '425', |
|
'Connection': 'keep-alive', |
|
'Accept': '*/*', |
|
'User-Agent': 'qiu mei zai xian/7.2.0 (iPhone; iOS 15.6; Scale/3.00)', |
|
'Accept-Language': 'zh-Hans-CN;q=1', |
|
'Accept-Encoding': 'gzip, deflate, br', |
|
'appMarket': 'appstore-qmzx' |
|
} |
|
data = f"{qmzxbody[i]}" |
|
html = requests.post(url=url, headers=headers, data=data) |
|
data_1 = json.loads(html.text) |
|
print(f"账号{i+1}-"+data_1['data']['phoneNumber']) |
|
is_true = data_1['msg'] |
|
if is_true == "登录成功!": |
|
print('登录成功') |
|
else: |
|
print('登录失败!') |
|
# 获取token |
|
qmUserToken = data_1['data']['qmUserToken'] |
|
url_qd ='https://api.qiumeiapp.com/qm-activity/qdcj/signin' |
|
headers = { |
|
'Host': 'api.qiumeiapp.com', |
|
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', |
|
'Origin': 'https://h5.qiumeiapp.com', |
|
'Accept-Encoding': 'gzip, deflate, br', |
|
'Connection': 'keep-alive', |
|
'Accept': '*/*', |
|
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 Umeng4Aplus/1.0.0', |
|
'Referer': 'https://h5.qiumeiapp.com/', |
|
'Content-Length': '52', |
|
'Accept-Language': 'zh-CN,zh-Hans;q=0.9', |
|
} |
|
data = f'qmUserToken={qmUserToken}' |
|
html_qd = requests.post(url=url_qd, headers=headers, data=data) |
|
data_3 = json.loads(html_qd.text) |
|
print(data_3['msg']) |
|
# 抽卡 |
|
url_ck = 'https://api.qiumeiapp.com/qm-activity/qdcj/luckyDraw' |
|
html_2 = requests.post(url=url_ck, headers=headers, data=data) |
|
data_2 = json.loads(html_2.text) |
|
print(data_2['msg']) |
|
|
|
# url_r ='https://api.qiumeiapp.com/qm/10005/qmAchievePointChannel' |
|
# data_r ={ |
|
# "channelCode":"READ_CONTENT", |
|
# "sign":f"{sign}", |
|
# "qmUserToken":f"{qmUserToken}" |
|
# } |
|
# html_r =requests.post(url=url_r, headers=headers, data=data_r).text |
|
# print(html_r) |
|
|
|
url_user ='https://api.qiumeiapp.com/qmxcx/10001/getQmUserPointInfo' |
|
url_run ='https://api.qiumeiapp.com/qm-activity/qdcj/getUserSigninInfo' |
|
url_c ='https://api.qiumeiapp.com/qm-activity/hc/getUserMaterialList' |
|
token = f'appUserToken={qmUserToken}' |
|
html_user = requests.post(url=url_user, headers=headers, data=token) |
|
html_run = requests.post(url=url_run, headers=headers, data=data) |
|
html_c = requests.post(url=url_c, headers=headers, data=data) |
|
data_4 = json.loads(html_user.text) |
|
data_5 = json.loads(html_run.text) |
|
data_6 = json.loads(html_c.text)['data']['materialList'] |
|
print('本月登录天数: ' + str(data_5['data']['runningDays']) +' 豆豆余额: '+str(data_4['data']['totalAmount'])) |
|
for aa in range(len(data_6)) : |
|
print(str(data_6[aa]['materialName'])+': '+str(data_6[aa]['haveCount'])+'/1') |
|
if str(data_6[aa]['materialName'])=="紧致卡" and data_6[aa]['haveCount'] ==1: |
|
massage1 =str(data_1['data']['phoneNumber']) +'可能集齐了去看看!!!' |
|
Push(contents=massage1) |
|
elif str(data_6[aa]['materialName'])=="全能卡" and data_6[aa]['haveCount'] ==1: |
|
massage2 =str(data_1['data']['phoneNumber']) +'可能集齐了去看看!!!' |
|
Push(contents=massage2) |
|
print('*****')
|
|
|