mirror of https://github.com/KingRan/KR.git
805 lines
34 KiB
Python
805 lines
34 KiB
Python
|
# 发现新宝藏
|
|||
|
# 入口> 京东>12.0:/¥J5iAk3pzZUJgE4%,复制口令进入京东APP给我助力,一起瓜分1亿京豆!
|
|||
|
# 脚本功能为 完成全部任务,内部互助,抽奖
|
|||
|
# 已完成的任务会显示火爆,当然也可能你是黑号...
|
|||
|
# 环境变量JD_COOKIE,多账号用&分割
|
|||
|
# export JD_COOKIE="第1个cookie&第2个cookie"
|
|||
|
# 11/1 12:40 增加ck格式兼容
|
|||
|
"""
|
|||
|
const $ = new Env("发现新宝藏");
|
|||
|
cron 46 3,20 * * * jd_newTreasure.py
|
|||
|
"""
|
|||
|
|
|||
|
import os,json,random,time,re,string
|
|||
|
import asyncio
|
|||
|
import sys
|
|||
|
sys.path.append('../../tmp')
|
|||
|
try:
|
|||
|
import requests
|
|||
|
except Exception as e:
|
|||
|
print(str(e) + "\n缺少requests模块, 请执行命令:pip3 install requests\n")
|
|||
|
requests.packages.urllib3.disable_warnings()
|
|||
|
try:
|
|||
|
import aiohttp
|
|||
|
except Exception as e:
|
|||
|
print(str(e) + "\n缺少aiohttp模块, 请执行命令:pip3 install aiohttp\n")
|
|||
|
|
|||
|
|
|||
|
JD_API_HOST = 'https://api.m.jd.com'
|
|||
|
run_send='no' # yes或no, yes则启用通知推送服务
|
|||
|
|
|||
|
|
|||
|
# 获取pin
|
|||
|
cookie_match=re.compile(r'pt_key=(.+);pt_pin=(.+);')
|
|||
|
cookie_match2=re.compile(r'pt_pin=(.+);pt_key=(.+);')
|
|||
|
def get_pin(cookie):
|
|||
|
try:
|
|||
|
return cookie_match.match(cookie).group(2)
|
|||
|
except:
|
|||
|
try:
|
|||
|
return cookie_match2.match(cookie).group(1)
|
|||
|
except:
|
|||
|
print('ck格式不正确,请检测')
|
|||
|
|
|||
|
|
|||
|
# 随机ua
|
|||
|
def ua():
|
|||
|
sys.path.append(os.path.abspath('.'))
|
|||
|
try:
|
|||
|
from jdEnv import USER_AGENTS as a
|
|||
|
except:
|
|||
|
a='jdpingou;android;5.5.0;11;network/wifi;model/M2102K1C;appBuild/18299;partner/lcjx11;session/110;pap/JA2019_3111789;brand/Xiaomi;Mozilla/5.0 (Linux; Android 11; M2102K1C Build/RKQ1.201112.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/92.0.4515.159 Mobile Safari/537.36'
|
|||
|
return a
|
|||
|
|
|||
|
# 13位时间戳
|
|||
|
def gettimestamp():
|
|||
|
return str(int(time.time() * 1000))
|
|||
|
|
|||
|
## 获取cooie
|
|||
|
class Judge_env(object):
|
|||
|
def main_run(self):
|
|||
|
if '/jd' in os.path.abspath(os.path.dirname(__file__)):
|
|||
|
cookie_list=self.v4_cookie()
|
|||
|
else:
|
|||
|
cookie_list=os.environ["JD_COOKIE"].split('&') # 获取cookie_list的合集
|
|||
|
if len(cookie_list)<1:
|
|||
|
msg('请填写环境变量JD_COOKIE\n')
|
|||
|
return cookie_list
|
|||
|
|
|||
|
def v4_cookie(self):
|
|||
|
a=[]
|
|||
|
b=re.compile(r'Cookie'+'.*?=\"(.*?)\"', re.I)
|
|||
|
with open('/jd/config/config.sh', 'r') as f:
|
|||
|
for line in f.readlines():
|
|||
|
try:
|
|||
|
regular=b.match(line).group(1)
|
|||
|
a.append(regular)
|
|||
|
except:
|
|||
|
pass
|
|||
|
return a
|
|||
|
cookie_list=Judge_env().main_run()
|
|||
|
|
|||
|
# 检查账号有效性
|
|||
|
def getUserInfo(cookie):
|
|||
|
try:
|
|||
|
pin=get_pin(cookie)
|
|||
|
except:
|
|||
|
msg('有一个cookie 格式出错\n')
|
|||
|
return
|
|||
|
time.sleep(0.2)
|
|||
|
url = 'https://me-api.jd.com/user_new/info/GetJDUserInfoUnion?orgFlag=JD_PinGou_New&callSource=mainorder&channel=4&isHomewhite=0&sceneval=2&sceneval=2&callback='
|
|||
|
headers = {
|
|||
|
'Cookie': cookie,
|
|||
|
'Accept': '*/*',
|
|||
|
'Connection': 'close',
|
|||
|
'Referer': 'https://home.m.jd.com/myJd/home.action',
|
|||
|
'Accept-Encoding': 'gzip, deflate, br',
|
|||
|
'Host': 'me-api.jd.com',
|
|||
|
'User-Agent': ua(),
|
|||
|
'Accept-Language': 'zh-cn'
|
|||
|
}
|
|||
|
try:
|
|||
|
resp = requests.get(url=url, headers=headers, timeout=60).json()
|
|||
|
if resp['retcode'] == "0":
|
|||
|
nickname = resp['data']['userInfo']['baseInfo']['nickname'] # 账号名
|
|||
|
return True
|
|||
|
else:
|
|||
|
msg(f"账号 {pin} Cookie 已失效!请重新获取。\n")
|
|||
|
except Exception:
|
|||
|
msg(f"账号 {pin} Cookie 已失效!请重新获取。\n")
|
|||
|
return
|
|||
|
|
|||
|
|
|||
|
## 获取通知服务
|
|||
|
class Msg(object):
|
|||
|
def getsendNotify(self, a=1):
|
|||
|
try:
|
|||
|
url = 'https://ghproxy.com/https://raw.githubusercontent.com/wuye999/myScripts/main/sendNotify.py'
|
|||
|
response = requests.get(url,timeout=3)
|
|||
|
with open('sendNotify.py', "w+", encoding="utf-8") as f:
|
|||
|
f.write(response.text)
|
|||
|
return
|
|||
|
except:
|
|||
|
pass
|
|||
|
if a < 5:
|
|||
|
a += 1
|
|||
|
return self.getsendNotify(a)
|
|||
|
|
|||
|
def main(self,n=1):
|
|||
|
global send,msg,initialize
|
|||
|
sys.path.append(os.path.abspath('.'))
|
|||
|
for n in range(3):
|
|||
|
try:
|
|||
|
from sendNotify import send,msg,initialize
|
|||
|
break
|
|||
|
except:
|
|||
|
self.getsendNotify()
|
|||
|
l=['BARK','PUSH_KEY','TG_BOT_TOKEN','TG_USER_ID','TG_API_HOST','TG_PROXY_HOST','TG_PROXY_PORT','DD_BOT_TOKEN','DD_BOT_SECRET','QQ_SKEY','Q_SKEY','QQ_MODE','QYWX_AM','PUSH_PLUS_TOKEN']
|
|||
|
d={}
|
|||
|
for a in l:
|
|||
|
try:
|
|||
|
d[a]=eval(a)
|
|||
|
except:
|
|||
|
d[a]=''
|
|||
|
try:
|
|||
|
initialize(d)
|
|||
|
except:
|
|||
|
self.getsendNotify()
|
|||
|
if n < 5:
|
|||
|
n += 1
|
|||
|
return self.main(n)
|
|||
|
else:
|
|||
|
print('获取通知服务失败,请检查网络连接...')
|
|||
|
Msg().main() # 初始化通知服务
|
|||
|
|
|||
|
|
|||
|
async def taskPostUrl(functionId, body, cookie, resp=True):
|
|||
|
url=f'{JD_API_HOST}/{functionId}?appid=contenth5_common&functionId={functionId}&body=[{json.dumps(body)}]'
|
|||
|
headers={
|
|||
|
'Cookie': cookie,
|
|||
|
'Host': 'api.m.jd.com',
|
|||
|
'Connection': 'keep-alive',
|
|||
|
'origin': 'https://prodev.m.jd.com',
|
|||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|||
|
"User-Agent": ua(),
|
|||
|
'Accept-Language': 'zh-cn',
|
|||
|
'Accept-Encoding': 'gzip, deflate, br',
|
|||
|
}
|
|||
|
if resp:
|
|||
|
for n in range(3):
|
|||
|
try:
|
|||
|
async with session.get(url,headers=headers) as res:
|
|||
|
res=await res.json(encoding="utf-8")
|
|||
|
return res
|
|||
|
except:
|
|||
|
if n==3:
|
|||
|
msg('API请求失败,请检查网路重试❗\n')
|
|||
|
else:
|
|||
|
return url,data,headers
|
|||
|
|
|||
|
|
|||
|
async def taskPostUrl_2(functionId, body, cookie, resp=True):
|
|||
|
url=f'{JD_API_HOST}/{functionId}?appid=contenth5_common&functionId={functionId}&body={json.dumps(body)}'
|
|||
|
headers={
|
|||
|
'Cookie': cookie,
|
|||
|
'Host': 'api.m.jd.com',
|
|||
|
'Connection': 'keep-alive',
|
|||
|
'origin': 'https://prodev.m.jd.com',
|
|||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|||
|
"User-Agent": ua(),
|
|||
|
'Accept-Language': 'zh-cn',
|
|||
|
'Accept-Encoding': 'gzip, deflate, br',
|
|||
|
}
|
|||
|
if resp:
|
|||
|
for n in range(3):
|
|||
|
try:
|
|||
|
async with session.get(url,headers=headers) as res:
|
|||
|
res=await res.json(encoding="utf-8")
|
|||
|
return res
|
|||
|
except:
|
|||
|
if n==3:
|
|||
|
msg('API请求失败,请检查网路重试❗\n')
|
|||
|
else:
|
|||
|
return url,data,headers
|
|||
|
|
|||
|
|
|||
|
async def taskPostUrl_3(functionId, body, cookie, resp=True):
|
|||
|
url=f'{JD_API_HOST}/{functionId}?appid=contenth5_common&functionId={functionId}&body=[{json.dumps(body)}]&client=wh5'
|
|||
|
headers={
|
|||
|
'Cookie': cookie,
|
|||
|
'Host': 'api.m.jd.com',
|
|||
|
'Connection': 'keep-alive',
|
|||
|
'origin': 'https://prodev.m.jd.com',
|
|||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|||
|
"User-Agent": ua(),
|
|||
|
'Accept-Language': 'zh-cn',
|
|||
|
'Accept-Encoding': 'gzip, deflate, br',
|
|||
|
}
|
|||
|
if resp:
|
|||
|
for n in range(3):
|
|||
|
try:
|
|||
|
async with session.get(url,headers=headers) as res:
|
|||
|
res=await res.json(encoding="utf-8")
|
|||
|
return res
|
|||
|
except:
|
|||
|
if n==3:
|
|||
|
msg('API请求失败,请检查网路重试❗\n')
|
|||
|
else:
|
|||
|
return url,data,headers
|
|||
|
|
|||
|
async def taskPostUrl_4(functionId, body, cookie, resp=True):
|
|||
|
url=f'{JD_API_HOST}/{functionId}?appid=contenth5_common&functionId={functionId}&body={json.dumps(body)}&client=wh5'
|
|||
|
headers={
|
|||
|
'Cookie': cookie,
|
|||
|
'Host': 'api.m.jd.com',
|
|||
|
'Connection': 'keep-alive',
|
|||
|
'origin': 'https://prodev.m.jd.com',
|
|||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|||
|
"User-Agent": ua(),
|
|||
|
'Accept-Language': 'zh-cn',
|
|||
|
'Accept-Encoding': 'gzip, deflate, br',
|
|||
|
}
|
|||
|
if resp:
|
|||
|
for n in range(3):
|
|||
|
try:
|
|||
|
async with session.get(url,headers=headers) as res:
|
|||
|
res=await res.json(encoding="utf-8")
|
|||
|
return res
|
|||
|
except:
|
|||
|
if n==3:
|
|||
|
msg('API请求失败,请检查网路重试❗\n')
|
|||
|
else:
|
|||
|
return url,data,headers
|
|||
|
|
|||
|
async def taskPostUrl_5(functionId, body, cookie, resp=True):
|
|||
|
url=f'{JD_API_HOST}/{functionId}?appid=contenth5_common&functionId={functionId}&body={json.dumps(body)}&client=wh5'
|
|||
|
headers={
|
|||
|
'Cookie': cookie,
|
|||
|
'Host': 'api.m.jd.com',
|
|||
|
'Connection': 'keep-alive',
|
|||
|
'origin': 'https://prodev.m.jd.com',
|
|||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|||
|
"User-Agent": ua(),
|
|||
|
'Accept-Language': 'zh-cn',
|
|||
|
'Accept-Encoding': 'gzip, deflate, br',
|
|||
|
}
|
|||
|
if resp:
|
|||
|
for n in range(3):
|
|||
|
try:
|
|||
|
async with session.post(url,headers=headers) as res:
|
|||
|
res=await res.json(encoding="utf-8")
|
|||
|
return res
|
|||
|
except:
|
|||
|
if n==3:
|
|||
|
msg('API请求失败,请检查网路重试❗\n')
|
|||
|
else:
|
|||
|
return url,data,headers
|
|||
|
|
|||
|
# 获取活动信息
|
|||
|
async def task_assignment(cookie,assignmentId,projectId,advGrpId1,advGrpId2):
|
|||
|
a=[]
|
|||
|
a.append(f"获取活动信息🔎...")
|
|||
|
body={"type":"12","projectId":projectId,"assignmentId":assignmentId,"agid":[advGrpId1,advGrpId2]}
|
|||
|
res=await taskPostUrl("interactive_info", body, cookie)
|
|||
|
if not res:
|
|||
|
return
|
|||
|
if res['code']=='0' :
|
|||
|
if res['success']:
|
|||
|
try:
|
|||
|
a.append(f"获取活动信息成功✅")
|
|||
|
# print(f"data数量 {len(res['data'])}")
|
|||
|
a.append(f"活动名称:{res['data'][0]['specialName']}📑")
|
|||
|
a.append(f"共 {len(res['data'][0]['skuList'])} 个子任务\n")
|
|||
|
a=[aa+'\n' for aa in a]
|
|||
|
a=''.join(a)
|
|||
|
msg(a)
|
|||
|
return [res['data'][0]['assignmentId'],res['data'][0]['projectId'],res['data'][0]['skuList']]
|
|||
|
except:
|
|||
|
a.append(f"找到 0 个活动信息\n")
|
|||
|
else:
|
|||
|
a.append(f"找到 0 个活动信息\n")
|
|||
|
else:
|
|||
|
a.append('错误⭕')
|
|||
|
a.append(f'{res}\n')
|
|||
|
a=[aa+'\n' for aa in a]
|
|||
|
a=''.join(a)
|
|||
|
msg(a)
|
|||
|
|
|||
|
|
|||
|
# 分配子任务
|
|||
|
async def skuList_task(cookie,assignmentId,projectId,skuList):
|
|||
|
a=[]
|
|||
|
for sku in skuList:
|
|||
|
body={"type":"12","agid":[sku['agid']],"adid":sku['adid'],"projectId":projectId,"assignmentId":assignmentId}
|
|||
|
|
|||
|
a.append(f"开始 {sku['name']}📑")
|
|||
|
res=await taskPostUrl_2("interactive_done", body, cookie)
|
|||
|
if not res:
|
|||
|
return
|
|||
|
if res['code']=='0' :
|
|||
|
if res['success']:
|
|||
|
try:
|
|||
|
a.append(f"{res['data']['rewardMsg']}✅\n")
|
|||
|
except:
|
|||
|
a.append(f"{res['message']}\n")
|
|||
|
else:
|
|||
|
a.append(f"{res['message']}\n")
|
|||
|
else:
|
|||
|
a.append('错误⭕')
|
|||
|
a.append(f'{res}\n')
|
|||
|
a=[aa+'\n' for aa in a]
|
|||
|
a=''.join(a)
|
|||
|
msg(a)
|
|||
|
|
|||
|
|
|||
|
# 主页面任务领取能量
|
|||
|
async def page_task(cookie,assignmentId,projectId,title,itemId):
|
|||
|
a=[]
|
|||
|
a.append(f'开始 {title}📑')
|
|||
|
body={"projectId":projectId,"assignmentId":assignmentId,"type":"1","itemId":itemId}
|
|||
|
res=await taskPostUrl_4("interactive_done", body, cookie)
|
|||
|
if not res:
|
|||
|
return
|
|||
|
if res['code']=='0' :
|
|||
|
if res['success']:
|
|||
|
try:
|
|||
|
a.append(f"{res['data']['rewardMsg']}✅\n")
|
|||
|
except:
|
|||
|
a.append(f"{res['message']}\n")
|
|||
|
else:
|
|||
|
a.append(f"{res['message']}\n")
|
|||
|
else:
|
|||
|
a.append('错误⭕')
|
|||
|
a.append(f'{res}\n')
|
|||
|
a=[aa+'\n' for aa in a]
|
|||
|
a=''.join(a)
|
|||
|
msg(a)
|
|||
|
|
|||
|
|
|||
|
# 主页面任务id
|
|||
|
async def page_taskid(cookie,assignmentId,projectId):
|
|||
|
a=[]
|
|||
|
body={"type":"1","projectId":projectId,"assignmentId":assignmentId,"doneHide":False}
|
|||
|
a.append('获取主页面任务id🔎...')
|
|||
|
res=await taskPostUrl_3("interactive_info", body, cookie)
|
|||
|
if not res:
|
|||
|
return
|
|||
|
if res['code']=='0':
|
|||
|
if res['success']:
|
|||
|
try:
|
|||
|
title=res['data'][0]['title']
|
|||
|
itemId=res['data'][0]['itemId']
|
|||
|
a=[aa+'\n' for aa in a]
|
|||
|
a=''.join(a)
|
|||
|
msg(a)
|
|||
|
return [title,itemId]
|
|||
|
except:
|
|||
|
a.append(f"没有找到任务id\n")
|
|||
|
else:
|
|||
|
a.append(f"没有找到任务id\n")
|
|||
|
else:
|
|||
|
a.append('错误⭕')
|
|||
|
a.append(f'{res}\n')
|
|||
|
a=[aa+'\n' for aa in a]
|
|||
|
a=''.join(a)
|
|||
|
msg(a)
|
|||
|
|
|||
|
# 获取邀请码
|
|||
|
async def get_inviteId(cookie,assignmentId,projectId):
|
|||
|
a=[]
|
|||
|
global inviteId_list
|
|||
|
body={"type":"2","projectId":projectId,"assignmentId":assignmentId,"doneHide":False,"helpType":"1","itemId":""}
|
|||
|
a.append('获取邀请码🔎..')
|
|||
|
res=await taskPostUrl_3("interactive_info", body, cookie)
|
|||
|
if not res:
|
|||
|
return
|
|||
|
if res['code']=='0' :
|
|||
|
if res['success']:
|
|||
|
try:
|
|||
|
# print(res)
|
|||
|
inviteId=res['data'][0]['itemId']
|
|||
|
if inviteId not in inviteId_list:
|
|||
|
inviteId_list.append(inviteId)
|
|||
|
a.append(f"账号{get_pin(cookie)}的邀请码是 {inviteId}✅\n")
|
|||
|
else:
|
|||
|
a.append(f"已记录过该邀请码\n")
|
|||
|
except:
|
|||
|
a.append(f"没有找到邀请码\n")
|
|||
|
else:
|
|||
|
a.append(f"没有找到邀请码\n")
|
|||
|
else:
|
|||
|
a.append('错误')
|
|||
|
a.append(f'{res}\n')
|
|||
|
a=[aa+'\n' for aa in a]
|
|||
|
a=''.join(a)
|
|||
|
msg(a)
|
|||
|
|
|||
|
# 检查是否可助力,获取agid,adid
|
|||
|
async def boost(cookie,assignmentId,projectId,inviteId):
|
|||
|
body={"type":"2","projectId":projectId,"assignmentId":assignmentId,"doneHide":False,"helpType":"2","itemId":inviteId}
|
|||
|
res=await taskPostUrl_3("interactive_info", body, cookie)
|
|||
|
if not res:
|
|||
|
return
|
|||
|
if res['code']=='0' :
|
|||
|
if res['success']:
|
|||
|
try:
|
|||
|
b=res['data'][0]['msg']
|
|||
|
if b=='可助力':
|
|||
|
|
|||
|
return 1
|
|||
|
except:
|
|||
|
pass
|
|||
|
else:
|
|||
|
pass
|
|||
|
else:
|
|||
|
a=[]
|
|||
|
a.append('错误')
|
|||
|
a.append(f'{res}\n')
|
|||
|
a=[aa+'\n' for aa in a]
|
|||
|
a=''.join(a)
|
|||
|
msg(a)
|
|||
|
|
|||
|
|
|||
|
# 助力
|
|||
|
async def boost_help(cookie,assignmentId,projectId,inviteId,agid_list):
|
|||
|
a=[]
|
|||
|
a.append(f'账号{get_pin(cookie)}去助力{inviteId}📑...')
|
|||
|
body={"projectId":projectId,"assignmentId":assignmentId,"type":"2","itemId":inviteId,"agid":agid_list}
|
|||
|
res=await taskPostUrl_5("interactive_done", body, cookie)
|
|||
|
if not res:
|
|||
|
return
|
|||
|
if res['code']=='0' :
|
|||
|
if res['success']:
|
|||
|
try:
|
|||
|
b=res['data'][0]['msg']
|
|||
|
if '助力成功' in b:
|
|||
|
a.append('助力成功✅\n')
|
|||
|
except:
|
|||
|
a.append(res['message']+'\n')
|
|||
|
else:
|
|||
|
a.append(res['message']+'\n')
|
|||
|
else:
|
|||
|
a.append(f'错误\n{res}\n')
|
|||
|
a=[aa+'\n' for aa in a]
|
|||
|
a=''.join(a)
|
|||
|
msg(a)
|
|||
|
|
|||
|
# 抽奖
|
|||
|
async def boost_lottery(cookie,assignmentId,projectId):
|
|||
|
a=[]
|
|||
|
a.append('开始抽奖...')
|
|||
|
body={"projectId":projectId,"assignmentId":assignmentId,"type":"13"}
|
|||
|
res=await taskPostUrl_5("interactive_done", body, cookie)
|
|||
|
if not res:
|
|||
|
return
|
|||
|
if res['code']=='0' :
|
|||
|
if res['success']:
|
|||
|
try:
|
|||
|
a.append(res['data']['rewardMsg']+'\n')
|
|||
|
except:
|
|||
|
a.append(res['message']+'\n')
|
|||
|
else:
|
|||
|
a.append(res['message']+'\n')
|
|||
|
else:
|
|||
|
a.append(f'错误\n{res}\n')
|
|||
|
a=[aa+'\n' for aa in a]
|
|||
|
a=''.join(a)
|
|||
|
msg(a)
|
|||
|
|
|||
|
# 获取所有任务数据,分配任务
|
|||
|
async def task_id(cookie):
|
|||
|
|
|||
|
# 数据源1
|
|||
|
url='https://prodev.m.jd.com/mall/active/qyteDVYBqzar2x6S9rcsBYQJXhW/index.html?_ts=1635062092818&utm_source=iosapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=Qqfriends&ad_od=share&utm_user=plusmember&gx=RnFikG5YbzSPntRf7Nl_WBPsc0vAzg&tttparams=NRuRseyJnTGF0IjoiMzAuMjczNzIiLCJnTG5nIjoiMTA3LjY0ODcxMi5J9&sid=683bb76d3f8c68afb54a6699eb4a030w&un_area=4_134_19915_0'
|
|||
|
headers={
|
|||
|
'Cookie': cookie,
|
|||
|
'Host': 'prodev.m.jd.com',
|
|||
|
'Connection': 'keep-alive',
|
|||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|||
|
"User-Agent": ua(),
|
|||
|
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
|
|||
|
'Accept-Encoding': 'gzip, deflate, br',
|
|||
|
}
|
|||
|
for n in range(3):
|
|||
|
try:
|
|||
|
res = requests.get(url=url, headers=headers, timeout=10,verify=False)
|
|||
|
res.encoding='utf-8'
|
|||
|
res=res.text
|
|||
|
except:
|
|||
|
if n==3:
|
|||
|
msg('API请求失败,请检查网路重试❗\n')
|
|||
|
return
|
|||
|
# 数据源2
|
|||
|
url_2='https://api.m.jd.com/?client=wh5&clientVersion=1.0.0&functionId=qryH5BabelFloors'
|
|||
|
headers_2={
|
|||
|
'Cookie': cookie,
|
|||
|
'Host': 'api.m.jd.com',
|
|||
|
'Connection': 'keep-alive',
|
|||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|||
|
"User-Agent": ua(),
|
|||
|
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
|
|||
|
'Accept-Encoding': 'gzip, deflate, br',
|
|||
|
}
|
|||
|
body_2={"activityId":"qyteDVYBqzar2x6S9rcsBYQJXhW","paginationParam":"2","paginationFlrs":"[[65545401,65545402,65545403,65690186,65633233,65751866,65545406,65578502,65545407,65578503,65735501,65578504,65545408],[65735500,65545409,65690061,65545410,65690062,65545411,65956790,65956791,65956792,65545413,65545412,65545415,65545416,66027650,66027651,66027652,66027653]]"}
|
|||
|
data_2=f'body={json.dumps(body_2)}&sid=683bb76d3f8c68afb54a6699eb4a030w&uuid=8363031323830343433313332303-13d2438366461633039353566366&area=4_134_19915_0&osVersion=9'
|
|||
|
for n in range(3):
|
|||
|
try:
|
|||
|
res_2 = requests.post(url=url_2, headers=headers_2,data=data_2, timeout=10,verify=False)
|
|||
|
res_2.encoding='utf-8'
|
|||
|
res_2=res_2.text
|
|||
|
except:
|
|||
|
if n==3:
|
|||
|
msg('API请求失败,请检查网路重试❗\n')
|
|||
|
return
|
|||
|
|
|||
|
# 数据源3
|
|||
|
url_3='https://api.m.jd.com/?client=wh5&clientVersion=1.0.0&functionId=qryH5BabelFloors'
|
|||
|
headers_3={
|
|||
|
'Cookie': cookie,
|
|||
|
'Host': 'api.m.jd.com',
|
|||
|
'Connection': 'keep-alive',
|
|||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|||
|
"User-Agent": ua(),
|
|||
|
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
|
|||
|
'Accept-Encoding': 'gzip, deflate, br',
|
|||
|
}
|
|||
|
body_3={"activityId":"qyteDVYBqzar2x6S9rcsBYQJXhW","pageNum":"-1","innerAnchor":"","innerExtId":"","hideTopFoot":"","innerLinkBase64":"","innerIndex":"0","focus":"","forceTop":"","addressId":"3988099308","posLng":"","posLat":"","homeLng":"107.648712","homeLat":"30.27372","gps_area":"","headId":"","headArea":"","warehouseId":"","jxppGroupid":"","jxppFreshman":"","dcId":"","babelChannel":"","mitemAddrId":"","geo":{"lng":"","lat":""},"flt":"","jda":"122270672.1631870452730354165508.1631870452.1635073434.1635134733.27","topNavStyle":"","autoSkipEmptyPage":False,"paginationParam":"2","paginationFlrs":"[[65545401,65545402,65545403,65690186,65633233,65751866,65545406,65578502,65545407,65578503,65735501,65578504,65545408,65735500,65545409,65690061,65545410,65690062,65545411],[65956790,65956791,65956792,65545413,65545412,65545415,65545416,66027650,66027651,66027652,66027653]]","transParam":"{\"bsessionId\":\"08ce2a06-356a-4901-bc37-90d67616e3cc\",\"babelChannel\":\"\",\"actId\":\"01092053\",\"enActId\":\"qyteDVYBqzar2x6S9rcsBYQJXhW\",\"pageId\":\"3060764\",\"encryptCouponFlag\":\"1\",\"sc\":\"android\",\"scv\":\"10.1.4\",\"requestChannel\":\"h5\",\"jdAtHomePage\":\"0\",\"utmFlag\":\"0\"}","siteClient":"android","siteClientVersion":"10.1.4","matProExt":{"unpl":"V2_ZzNtbUZVShF9XEVUfhwIVmJWEwpKVUQXdVpOXHxJWg1mARYNclRCFnUUR1xnGFkUZwEZXkFcQxFFCEZkexhdBWQEF1lAVHMlfQAoVDYZMgYJAF8QD2dAFUUJdlR8G10DZQAbVUpTQBRyDUVVchFeBWQzIl1EZ0MUdAlGU3McVQRgBCJtQ2dCJXQ4DTp6VFwCZQIUX0FeSx1xC0dTfhpdDG8BEl5yVnMW"},"userInterest":{"whiteNote":"0_0_0","payment":"0_0_0","plusNew":"0_0_0","plusRenew":"0_0_0"}}
|
|||
|
|
|||
|
data_3=f'body={json.dumps(body_3)}&sid=683bb76d3f8c68afb54a6699eb4a030w&uuid=8363031323830343433313332303-13d2438366461633039353566366&area=4_134_19915_0&osVersion=9'
|
|||
|
for n in range(3):
|
|||
|
try:
|
|||
|
res_3 = requests.post(url=url_3, headers=headers_3,data=data_3, timeout=10,verify=False)
|
|||
|
res_3.encoding='utf-8'
|
|||
|
res_3=res_3.text
|
|||
|
except:
|
|||
|
if n==3:
|
|||
|
msg('API请求失败,请检查网路重试❗\n')
|
|||
|
return
|
|||
|
|
|||
|
try:
|
|||
|
# 处理数据1
|
|||
|
# advId1=re.findall(r'"advId1":\[(.+?)\]',res,re.M)
|
|||
|
# advId2=re.findall(r'"advId2":\[(.+?)\]',res,re.M)
|
|||
|
# assignmentId_list=re.findall(r'"assignmentid":"(.+?)"',res,re.M)
|
|||
|
# projectId_list=re.findall(r'"programid":"(.+?)"',res,re.M)
|
|||
|
# advId1_advGrpId=[re.findall(r'"advGrpId":"(.+?)"',advId)[0] for advId in advId1]
|
|||
|
# advId2_advGrpId=[re.findall(r'"advGrpId":"(.+?)"',advId)[0] for advId in advId2]
|
|||
|
# taskCode_list=re.findall(r'"taskCode":"(.+?)"',res,re.M)
|
|||
|
try:
|
|||
|
advGrpId_list_1=re.findall(r'"advGrpId":"(.+?)"',res,re.M)
|
|||
|
assignmentId_list_1=re.findall(r'"assignmentid":"(.+?)"',res,re.M)
|
|||
|
projectId_list_1=re.findall(r'"programid":"(.+?)"',res,re.M)
|
|||
|
taskCode_list_1=re.findall(r'"taskCode":"(.+?)"',res,re.M)
|
|||
|
except:
|
|||
|
msg('第一个数据处理失败\n')
|
|||
|
# 处理数据2
|
|||
|
# advId1_2=re.findall(r'"advId1":\[(.+?)\]',res_2,re.M)
|
|||
|
# advId2_2=re.findall(r'"advId2":\[(.+?)\]',res_2,re.M)
|
|||
|
# assignmentId_list_2=re.findall(r'"assignmentid":"(.+?)"',res_2,re.M)
|
|||
|
# projectId_list_2=re.findall(r'"programid":"(.+?)"',res_2,re.M)
|
|||
|
# advId1_advGrpId_2=[re.findall(r'"advGrpId":"(.+?)"',advId)[0] for advId in advId1_2]
|
|||
|
# advId2_advGrpId_2=[re.findall(r'"advGrpId":"(.+?)"',advId)[0] for advId in advId2_2]
|
|||
|
# taskCode_list_2=re.findall(r'"taskCode":"(.+?)"',res_2,re.M)
|
|||
|
try:
|
|||
|
advGrpId_list_2=re.findall(r'"advGrpId":"(.+?)"',res_2,re.M)
|
|||
|
assignmentId_list_2=re.findall(r'"assignmentid":"(.+?)"',res_2,re.M)
|
|||
|
projectId_list_2=re.findall(r'"programid":"(.+?)"',res_2,re.M)
|
|||
|
taskCode_list_2=re.findall(r'"taskCode":"(.+?)"',res_2,re.M)
|
|||
|
except:
|
|||
|
msg('第二个数据处理失败\n')
|
|||
|
|
|||
|
# 处理数据3
|
|||
|
try:
|
|||
|
advGrpId_list_3=re.findall(r'"advGrpId":"(.+?)"',res_3,re.M)
|
|||
|
assignmentId_list_3=re.findall(r'"assignmentid":"(.+?)"',res_3,re.M)
|
|||
|
projectId_list_3=re.findall(r'"programid":"(.+?)"',res_3,re.M)
|
|||
|
taskCode_list_3=re.findall(r'"taskCode":"(.+?)"',res_3,re.M)
|
|||
|
except:
|
|||
|
msg('第三个数据处理失败\n')
|
|||
|
|
|||
|
# 整理数据
|
|||
|
try:
|
|||
|
assignmentId_list=assignmentId_list_1+assignmentId_list_2+assignmentId_list_3
|
|||
|
projectId_list=projectId_list_1+projectId_list_2+projectId_list_3
|
|||
|
# advId1_advGrpId=advId1_advGrpId_2
|
|||
|
# advId2_advGrpId=advId2_advGrpId_2
|
|||
|
taskCode_list=taskCode_list_1+taskCode_list_2+taskCode_list_3
|
|||
|
advGrpId_list=advGrpId_list_1+advGrpId_list_2+advGrpId_list_3
|
|||
|
|
|||
|
assignmentId_list=set(assignmentId_list)
|
|||
|
projectId_list=set(projectId_list)
|
|||
|
# advId1_advGrpId=set(advId1_advGrpId)
|
|||
|
# advId2_advGrpId=set(advId2_advGrpId)
|
|||
|
taskCode_list=set(taskCode_list)
|
|||
|
advGrpId_list=set(advGrpId_list)
|
|||
|
except:
|
|||
|
msg('整理数据失败\n')
|
|||
|
except:
|
|||
|
msg(f'收集任务数据失败,快去买买买吧\n')
|
|||
|
return
|
|||
|
# print(assignmentId_list)
|
|||
|
# print(projectId_list)
|
|||
|
# print(advId1_advGrpId)
|
|||
|
# print(advId2_advGrpId)
|
|||
|
|
|||
|
# 遍历数据
|
|||
|
global session
|
|||
|
async with aiohttp.ClientSession() as session:
|
|||
|
tasks=[]
|
|||
|
for assignmentId in assignmentId_list:
|
|||
|
for e,projectId in enumerate(projectId_list):
|
|||
|
for f,taskCode in enumerate(taskCode_list):
|
|||
|
async def page_taskid_async(cookie,taskCode,projectId):
|
|||
|
taskid=await page_taskid(cookie,taskCode,projectId) # 主页面任务id
|
|||
|
if taskid:
|
|||
|
await page_task(cookie,taskCode,projectId,taskid[0],taskid[1]) # 主页面任务
|
|||
|
tasks.append(boost_lottery(cookie,assignmentId,projectId)) # 抽奖
|
|||
|
tasks.append(page_taskid_async(cookie,taskCode,projectId)) # 主页面任务
|
|||
|
tasks.append(get_inviteId(cookie,taskCode,projectId)) # 获取邀请码
|
|||
|
for advGrpId1 in advGrpId_list:
|
|||
|
for advGrpId2 in advGrpId_list:
|
|||
|
async def task_assignment_async(cookie,assignmentId,projectId,advGrpId1,advGrpId2):
|
|||
|
skuList=await task_assignment(cookie,assignmentId,projectId,advGrpId1,advGrpId2) # 获取活动数据
|
|||
|
if skuList:
|
|||
|
time.sleep(0.5)
|
|||
|
await skuList_task(cookie,skuList[0],skuList[1],skuList[2]) # 分配子任务
|
|||
|
tasks.append(task_assignment_async(cookie,assignmentId,projectId,advGrpId1,advGrpId2)) # 获取活动数据
|
|||
|
pass
|
|||
|
await asyncio.wait(tasks)
|
|||
|
|
|||
|
# 获取所有任务数据,分配任务
|
|||
|
async def task_id_help(cookie):
|
|||
|
global session
|
|||
|
# 数据源1
|
|||
|
url='https://prodev.m.jd.com/mall/active/qyteDVYBqzar2x6S9rcsBYQJXhW/index.html?_ts=1635062092818&utm_source=iosapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=Qqfriends&ad_od=share&utm_user=plusmember&gx=RnFikG5YbzSPntRf7Nl_WBPsc0vAzg&tttparams=NRuRseyJnTGF0IjoiMzAuMjczNzIiLCJnTG5nIjoiMTA3LjY0ODcxMi5J9&sid=683bb76d3f8c68afb54a6699eb4a030w&un_area=4_134_19915_0'
|
|||
|
headers={
|
|||
|
'Cookie': cookie,
|
|||
|
'Host': 'prodev.m.jd.com',
|
|||
|
'Connection': 'keep-alive',
|
|||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|||
|
"User-Agent": ua(),
|
|||
|
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
|
|||
|
'Accept-Encoding': 'gzip, deflate, br',
|
|||
|
}
|
|||
|
for n in range(3):
|
|||
|
try:
|
|||
|
async with aiohttp.ClientSession() as session:
|
|||
|
async with session.get(url,headers=headers, timeout=10) as res:
|
|||
|
res=await res.text(encoding="utf-8") #查看默认编码为utf-8
|
|||
|
except:
|
|||
|
if n==3:
|
|||
|
msg('API请求失败,请检查网路重试❗\n')
|
|||
|
return
|
|||
|
|
|||
|
# 数据源2
|
|||
|
url_2='https://api.m.jd.com/?client=wh5&clientVersion=1.0.0&functionId=qryH5BabelFloors'
|
|||
|
headers_2={
|
|||
|
'Cookie': cookie,
|
|||
|
'Host': 'api.m.jd.com',
|
|||
|
'Connection': 'keep-alive',
|
|||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|||
|
"User-Agent": ua(),
|
|||
|
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
|
|||
|
'Accept-Encoding': 'gzip, deflate, br',
|
|||
|
}
|
|||
|
body_2={"activityId":"qyteDVYBqzar2x6S9rcsBYQJXhW","paginationParam":"2","paginationFlrs":"[[65545401,65545402,65545403,65690186,65633233,65751866,65545406,65578502,65545407,65578503,65735501,65578504,65545408],[65735500,65545409,65690061,65545410,65690062,65545411,65956790,65956791,65956792,65545413,65545412,65545415,65545416,66027650,66027651,66027652,66027653]]"}
|
|||
|
data_2=f'body={json.dumps(body_2)}&sid=683bb76d3f8c68afb54a6699eb4a030w&uuid=8363031323830343433313332303-13d2438366461633039353566366&area=4_134_19915_0&osVersion=9'
|
|||
|
for n in range(3):
|
|||
|
try:
|
|||
|
async with aiohttp.ClientSession() as session:
|
|||
|
async with session.post(url_2,headers=headers_2,data=data_2, timeout=10) as res_2:
|
|||
|
res_2=await res_2.text(encoding="utf-8") #查看默认编码为utf-8
|
|||
|
except:
|
|||
|
if n==3:
|
|||
|
msg('API请求失败,请检查网路重试❗\n')
|
|||
|
return
|
|||
|
# 数据源3
|
|||
|
url_3='https://api.m.jd.com/?client=wh5&clientVersion=1.0.0&functionId=qryH5BabelFloors'
|
|||
|
headers_3={
|
|||
|
'Cookie': cookie,
|
|||
|
'Host': 'api.m.jd.com',
|
|||
|
'Connection': 'keep-alive',
|
|||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|||
|
"User-Agent": ua(),
|
|||
|
'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
|
|||
|
'Accept-Encoding': 'gzip, deflate, br',
|
|||
|
}
|
|||
|
body_3={"activityId":"qyteDVYBqzar2x6S9rcsBYQJXhW","pageNum":"-1","innerAnchor":"","innerExtId":"","hideTopFoot":"","innerLinkBase64":"","innerIndex":"0","focus":"","forceTop":"","addressId":"3988099308","posLng":"","posLat":"","homeLng":"107.648712","homeLat":"30.27372","gps_area":"","headId":"","headArea":"","warehouseId":"","jxppGroupid":"","jxppFreshman":"","dcId":"","babelChannel":"","mitemAddrId":"","geo":{"lng":"","lat":""},"flt":"","jda":"122270672.1631870452730354165508.1631870452.1635073434.1635134733.27","topNavStyle":"","autoSkipEmptyPage":False,"paginationParam":"2","paginationFlrs":"[[65545401,65545402,65545403,65690186,65633233,65751866,65545406,65578502,65545407,65578503,65735501,65578504,65545408,65735500,65545409,65690061,65545410,65690062,65545411],[65956790,65956791,65956792,65545413,65545412,65545415,65545416,66027650,66027651,66027652,66027653]]","transParam":"{\"bsessionId\":\"08ce2a06-356a-4901-bc37-90d67616e3cc\",\"babelChannel\":\"\",\"actId\":\"01092053\",\"enActId\":\"qyteDVYBqzar2x6S9rcsBYQJXhW\",\"pageId\":\"3060764\",\"encryptCouponFlag\":\"1\",\"sc\":\"android\",\"scv\":\"10.1.4\",\"requestChannel\":\"h5\",\"jdAtHomePage\":\"0\",\"utmFlag\":\"0\"}","siteClient":"android","siteClientVersion":"10.1.4","matProExt":{"unpl":"V2_ZzNtbUZVShF9XEVUfhwIVmJWEwpKVUQXdVpOXHxJWg1mARYNclRCFnUUR1xnGFkUZwEZXkFcQxFFCEZkexhdBWQEF1lAVHMlfQAoVDYZMgYJAF8QD2dAFUUJdlR8G10DZQAbVUpTQBRyDUVVchFeBWQzIl1EZ0MUdAlGU3McVQRgBCJtQ2dCJXQ4DTp6VFwCZQIUX0FeSx1xC0dTfhpdDG8BEl5yVnMW"},"userInterest":{"whiteNote":"0_0_0","payment":"0_0_0","plusNew":"0_0_0","plusRenew":"0_0_0"}}
|
|||
|
|
|||
|
data_3=f'body={json.dumps(body_3)}&sid=683bb76d3f8c68afb54a6699eb4a030w&uuid=8363031323830343433313332303-13d2438366461633039353566366&area=4_134_19915_0&osVersion=9'
|
|||
|
for n in range(3):
|
|||
|
try:
|
|||
|
async with aiohttp.ClientSession() as session:
|
|||
|
async with session.post(url_3,headers=headers_3,data=data_3, timeout=10) as res_3:
|
|||
|
res_3=await res_3.text(encoding="utf-8") #查看默认编码为utf-8
|
|||
|
except:
|
|||
|
if n==3:
|
|||
|
msg('API请求失败,请检查网路重试❗\n')
|
|||
|
return
|
|||
|
|
|||
|
|
|||
|
advGrpId_list_1=re.findall(r'"advGrpId":"(.+?)"',res,re.M)
|
|||
|
assignmentId_list_1=re.findall(r'"assignmentid":"(.+?)"',res,re.M)
|
|||
|
projectId_list_1=re.findall(r'"programid":"(.+?)"',res,re.M)
|
|||
|
taskCode_list_1=re.findall(r'"taskCode":"(.+?)"',res,re.M)
|
|||
|
|
|||
|
advGrpId_list_2=re.findall(r'"advGrpId":"(.+?)"',res_2,re.M)
|
|||
|
assignmentId_list_2=re.findall(r'"assignmentid":"(.+?)"',res_2,re.M)
|
|||
|
projectId_list_2=re.findall(r'"programid":"(.+?)"',res_2,re.M)
|
|||
|
taskCode_list_2=re.findall(r'"taskCode":"(.+?)"',res_2,re.M)
|
|||
|
|
|||
|
advGrpId_list_3=re.findall(r'"advGrpId":"(.+?)"',res_3,re.M)
|
|||
|
assignmentId_list_3=re.findall(r'"assignmentid":"(.+?)"',res_3,re.M)
|
|||
|
projectId_list_3=re.findall(r'"programid":"(.+?)"',res_3,re.M)
|
|||
|
taskCode_list_3=re.findall(r'"taskCode":"(.+?)"',res_3,re.M)
|
|||
|
|
|||
|
assignmentId_list=assignmentId_list_1+assignmentId_list_2+assignmentId_list_3
|
|||
|
projectId_list=projectId_list_1+projectId_list_2+projectId_list_3
|
|||
|
taskCode_list=taskCode_list_1+taskCode_list_2+taskCode_list_3
|
|||
|
advGrpId_list=advGrpId_list_1+advGrpId_list_2+advGrpId_list_3
|
|||
|
|
|||
|
assignmentId_list=set(assignmentId_list)
|
|||
|
projectId_list=set(projectId_list)
|
|||
|
taskCode_list=set(taskCode_list)
|
|||
|
advGrpId_list=set(advGrpId_list)
|
|||
|
|
|||
|
# 遍历数据
|
|||
|
async with aiohttp.ClientSession() as session:
|
|||
|
taskss=[]
|
|||
|
for e,projectId in enumerate(projectId_list):
|
|||
|
for f,taskCode in enumerate(taskCode_list):
|
|||
|
async def boost_async(cookie,taskCode,projectId,advGrpId_list):
|
|||
|
taskssss=[]
|
|||
|
for inviteId in inviteId_list:
|
|||
|
c=await boost(cookie,taskCode,projectId,inviteId) # 检查是否可助力
|
|||
|
if c==1:
|
|||
|
for advGrpId1 in advGrpId_list:
|
|||
|
for advGrpId2 in advGrpId_list:
|
|||
|
advGrpId=[advGrpId1,advGrpId2]
|
|||
|
taskssss.append(boost_help(cookie,taskCode,projectId,inviteId,advGrpId)) # 助力
|
|||
|
if c==1:
|
|||
|
await asyncio.wait(taskssss)
|
|||
|
taskss.append(boost_async(cookie,taskCode,projectId,advGrpId_list))
|
|||
|
await asyncio.wait(taskss)
|
|||
|
|
|||
|
|
|||
|
def main():
|
|||
|
msg('🔔发现新宝藏,开始!\n')
|
|||
|
global inviteId_list,start
|
|||
|
start = time.time()
|
|||
|
inviteId_list=[]
|
|||
|
|
|||
|
msg(f'====================共{len(cookie_list)}京东个账号Cookie=========\n')
|
|||
|
msg('已完成的任务会显示火爆,当然也可能你是黑号...\n')
|
|||
|
tasksss=[]
|
|||
|
for e,cookie in enumerate(cookie_list,start=1):
|
|||
|
msg(f'******开始【账号 {e}】 {get_pin(cookie)} *********\n')
|
|||
|
a=getUserInfo(cookie)
|
|||
|
if not a:
|
|||
|
return
|
|||
|
asyncio.run(task_id(cookie))
|
|||
|
# async def task_id_async(cookie):
|
|||
|
# a=getUserInfo(cookie)
|
|||
|
# if not a:
|
|||
|
# return
|
|||
|
# await task_id(cookie)
|
|||
|
# tasksss.append(task_id_async(cookie))
|
|||
|
# asyncio.run(task_id(cookie))
|
|||
|
# asyncio.run(asyncio.wait(tasksss))
|
|||
|
|
|||
|
msg(f'\n\n====================开始内部助力=========\n')
|
|||
|
|
|||
|
tasksss=[]
|
|||
|
for e,cookie in enumerate(cookie_list,start=1):
|
|||
|
tasksss.append(task_id_help(cookie))
|
|||
|
done,p=asyncio.run(asyncio.wait(tasksss))
|
|||
|
ret = [d.result() for d in done]
|
|||
|
|
|||
|
if run_send=='yes':
|
|||
|
send('### 发现新宝藏 ###') # 通知服务
|
|||
|
|
|||
|
|
|||
|
if __name__ == '__main__':
|
|||
|
main()
|
|||
|
|