diff --git a/2025顺丰32周年庆.py b/2025顺丰32周年庆.py new file mode 100644 index 0000000..7d339a3 --- /dev/null +++ b/2025顺丰32周年庆.py @@ -0,0 +1,1755 @@ +#多号换行,变量名:sfsyUrl +# const $ = new Env('顺丰速运') +import hashlib +import json +import os +import random +import time +from datetime import datetime, timedelta +from sys import exit +import requests +from requests.packages.urllib3.exceptions import InsecureRequestWarning + +# 禁用安全请求警告 +requests.packages.urllib3.disable_warnings(InsecureRequestWarning) + +IS_DEV = False +if os.path.isfile('DEV_ENV.py'): + import DEV_ENV + + IS_DEV = True + + +#from notify import send + +send_msg = '' +one_msg = '' + + +def Log(cont=''): + global send_msg, one_msg + print(cont) + if cont: + one_msg += f'{cont}\n' + send_msg += f'{cont}\n' + + +inviteId = ['15B892B84AA3418B8BE6856D5A4F1119','54BC6335A52A4197ACA8E32BB57CCFE5'] + + +class RUN: + def __init__(self, info, index): + global one_msg + one_msg = '' + split_info = info.split('@') + url = split_info[0] + len_split_info = len(split_info) + last_info = split_info[len_split_info - 1] + self.send_UID = None + if len_split_info > 0 and "UID_" in last_info: + self.send_UID = last_info + self.index = index + 1 + Log(f"\n---------开始执行第{self.index}个账号>>>>>") + self.s = requests.session() + self.s.verify = False + self.headers = { + 'Host': 'mcs-mimp-web.sf-express.com', + 'upgrade-insecure-requests': '1', + 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x63090551) XWEB/6945 Flue', + 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', + 'sec-fetch-site': 'none', + 'sec-fetch-mode': 'navigate', + 'sec-fetch-user': '?1', + 'sec-fetch-dest': 'document', + 'accept-language': 'zh-CN,zh', + 'platform': 'MINI_PROGRAM', + + } + self.anniversary_black = False + self.member_day_black = False + self.member_day_red_packet_drew_today = False + self.member_day_red_packet_map = {} + self.login_res = self.login(url) + self.today = datetime.now().strftime('%Y-%m-%d') + # self.answer = APP_INFO.get('ANSWER', []).get(self.today, False) + self.max_level = 8 + self.packet_threshold = 1 << (self.max_level - 1) + + def get_deviceId(self, characters='abcdef0123456789'): + result = '' + for char in 'xxxxxxxx-xxxx-xxxx': + if char == 'x': + result += random.choice(characters) + elif char == 'X': + result += random.choice(characters).upper() + else: + result += char + return result + + def login(self, sfsyUrl): + ress = self.s.get(sfsyUrl, headers=self.headers) + # print(ress.text) + self.user_id = self.s.cookies.get_dict().get('_login_user_id_', '') + self.phone = self.s.cookies.get_dict().get('_login_mobile_', '') + self.mobile = self.phone[:3] + "*" * 4 + self.phone[7:] + if self.phone != '': + Log(f'用户:【{self.mobile}】登陆成功') + return True + else: + Log(f'获取用户信息失败') + return False + + def getSign(self): + timestamp = str(int(round(time.time() * 1000))) + token = 'wwesldfs29aniversaryvdld29' + sysCode = 'MCS-MIMP-CORE' + data = f'token={token}×tamp={timestamp}&sysCode={sysCode}' + signature = hashlib.md5(data.encode()).hexdigest() + data = { + 'sysCode': sysCode, + 'timestamp': timestamp, + 'signature': signature + } + self.headers.update(data) + return data + + def do_request(self, url, data={}, req_type='post'): + self.getSign() + try: + if req_type.lower() == 'get': + response = self.s.get(url, headers=self.headers) + elif req_type.lower() == 'post': + response = self.s.post(url, headers=self.headers, json=data) + else: + raise ValueError('Invalid req_type: %s' % req_type) + res = response.json() + return res + except requests.exceptions.RequestException as e: + print('Request failed:', e) + return None + except json.JSONDecodeError as e: + print('JSON decoding failed:', e) + return None + + def sign(self): + print(f'>>>>>>开始执行签到') + json_data = {"comeFrom": "vioin", "channelFrom": "WEIXIN"} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~integralTaskSignPlusService~automaticSignFetchPackage' + response = self.do_request(url, data=json_data) + # print(response) + if response.get('success') == True: + count_day = response.get('obj', {}).get('countDay', 0) + if response.get('obj') and response['obj'].get('integralTaskSignPackageVOList'): + packet_name = response["obj"]["integralTaskSignPackageVOList"][0]["packetName"] + Log(f'>>>签到成功,获得【{packet_name}】,本周累计签到【{count_day + 1}】天') + else: + Log(f'今日已签到,本周累计签到【{count_day + 1}】天') + else: + print(f'签到失败!原因:{response.get("errorMessage")}') + + def superWelfare_receiveRedPacket(self): + print(f'>>>>>>超值福利签到') + json_data = { + 'channel': 'czflqdlhbxcx' + } + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberActLengthy~redPacketActivityService~superWelfare~receiveRedPacket' + response = self.do_request(url, data=json_data) + # print(response) + if response.get('success') == True: + gift_list = response.get('obj', {}).get('giftList', []) + if response.get('obj', {}).get('extraGiftList', []): + gift_list.extend(response['obj']['extraGiftList']) + gift_names = ', '.join([gift['giftName'] for gift in gift_list]) + receive_status = response.get('obj', {}).get('receiveStatus') + status_message = '领取成功' if receive_status == 1 else '已领取过' + Log(f'超值福利签到[{status_message}]: {gift_names}') + else: + error_message = response.get('errorMessage') or json.dumps(response) or '无返回' + print(f'超值福利签到失败: {error_message}') + + def get_SignTaskList(self, END=False): + if not END: print(f'>>>开始获取签到任务列表') + json_data = { + 'channelType': '1', + 'deviceId': self.get_deviceId(), + } + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~integralTaskStrategyService~queryPointTaskAndSignFromES' + response = self.do_request(url, data=json_data) + # print(response) + if response.get('success') == True and response.get('obj') != []: + totalPoint = response["obj"]["totalPoint"] + if END: + Log(f'当前积分:【{totalPoint}】') + return + Log(f'执行前积分:【{totalPoint}】') + for task in response["obj"]["taskTitleLevels"]: + self.taskId = task["taskId"] + self.taskCode = task["taskCode"] + self.strategyId = task["strategyId"] + self.title = task["title"] + status = task["status"] + skip_title = ['用行业模板寄件下单', '去新增一个收件偏好', '参与积分活动'] + if status == 3: + print(f'>{self.title}-已完成') + continue + if self.title in skip_title: + print(f'>{self.title}-跳过') + continue + else: + # print("taskId:", taskId) + # print("taskCode:", taskCode) + # print("----------------------") + self.doTask() + time.sleep(3) + self.receiveTask() + + def doTask(self): + print(f'>>>开始去完成【{self.title}】任务') + json_data = { + 'taskCode': self.taskCode, + } + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonRoutePost/memberEs/taskRecord/finishTask' + response = self.do_request(url, data=json_data) + if response.get('success') == True: + print(f'>【{self.title}】任务-已完成') + else: + print(f'>【{self.title}】任务-{response.get("errorMessage")}') + + def receiveTask(self): + print(f'>>>开始领取【{self.title}】任务奖励') + json_data = { + "strategyId": self.strategyId, + "taskId": self.taskId, + "taskCode": self.taskCode, + "deviceId": self.get_deviceId() + } + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~integralTaskStrategyService~fetchIntegral' + response = self.do_request(url, data=json_data) + if response.get('success') == True: + print(f'>【{self.title}】任务奖励领取成功!') + else: + print(f'>【{self.title}】任务-{response.get("errorMessage")}') + + def do_honeyTask(self): + # 做任务 + json_data = {"taskCode": self.taskCode} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberEs~taskRecord~finishTask' + response = self.do_request(url, data=json_data) + if response.get('success') == True: + print(f'>【{self.taskType}】任务-已完成') + else: + print(f'>【{self.taskType}】任务-{response.get("errorMessage")}') + + def receive_honeyTask(self): + print('>>>执行收取丰蜜任务') + # 收取 + self.headers['syscode'] = 'MCS-MIMP-CORE' + self.headers['channel'] = 'wxwdsj' + self.headers['accept'] = 'application/json, text/plain, */*' + self.headers['content-type'] = 'application/json;charset=UTF-8' + self.headers['platform'] = 'MINI_PROGRAM' + json_data = {"taskType": self.taskType} + # print(json_data) + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~receiveExchangeIndexService~receiveHoney' + response = self.do_request(url, data=json_data) + if response.get('success') == True: + print(f'收取任务【{self.taskType}】成功!') + else: + print(f'收取任务【{self.taskType}】失败!原因:{response.get("errorMessage")}') + + def get_coupom(self): + print('>>>执行领取生活权益领券任务') + # 领取生活权益领券 + # https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberGoods~pointMallService~createOrder + + json_data = { + "from": "Point_Mall", + "orderSource": "POINT_MALL_EXCHANGE", + "goodsNo": self.goodsNo, + "quantity": 1, + "taskCode": self.taskCode + } + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberGoods~pointMallService~createOrder' + response = self.do_request(url, data=json_data) + if response.get('success') == True: + print(f'>领券成功!') + else: + print(f'>领券失败!原因:{response.get("errorMessage")}') + + def get_coupom_list(self): + print('>>>获取生活权益券列表') + # 领取生活权益领券 + # https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberGoods~pointMallService~createOrder + + json_data = { + "memGrade": 2, + "categoryCode": "SHTQ", + "showCode": "SHTQWNTJ" + } + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberGoods~mallGoodsLifeService~list' + response = self.do_request(url, data=json_data) + # print(response) + if response.get('success') == True: + goodsList = response["obj"][0]["goodsList"] + for goods in goodsList: + exchangeTimesLimit = goods['exchangeTimesLimit'] + if exchangeTimesLimit >= 1: + self.goodsNo = goods['goodsNo'] + print(f'当前选择券号:{self.goodsNo}') + self.get_coupom() + break + else: + print(f'>领券失败!原因:{response.get("errorMessage")}') + + def get_honeyTaskListStart(self): + print('>>>开始获取采蜜换大礼任务列表') + # 任务列表 + json_data = {} + self.headers['channel'] = 'wxwdsj' + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~receiveExchangeIndexService~taskDetail' + + response = self.do_request(url, data=json_data) + # print(response) + if response.get('success') == True: + for item in response["obj"]["list"]: + self.taskType = item["taskType"] + status = item["status"] + if status == 3: + print(f'>【{self.taskType}】-已完成') + if self.taskType == 'BEES_GAME_TASK_TYPE': + self.bee_need_help = False + continue + if "taskCode" in item: + self.taskCode = item["taskCode"] + if self.taskType == 'DAILY_VIP_TASK_TYPE': + self.get_coupom_list() + else: + self.do_honeyTask() + if self.taskType == 'BEES_GAME_TASK_TYPE': + self.honey_damaoxian() + time.sleep(2) + + def honey_damaoxian(self): + print('>>>执行大冒险任务') + # 大冒险 + gameNum = 5 + for i in range(1, gameNum): + json_data = { + 'gatherHoney': 20, + } + if gameNum < 0: break + print(f'>>开始第{i}次大冒险') + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~receiveExchangeGameService~gameReport' + response = self.do_request(url, data=json_data) + # print(response) + stu = response.get('success') + if stu: + gameNum = response.get('obj')['gameNum'] + print(f'>大冒险成功!剩余次数【{gameNum}】') + time.sleep(2) + gameNum -= 1 + elif response.get("errorMessage") == '容量不足': + print(f'> 需要扩容') + self.honey_expand() + else: + print(f'>大冒险失败!【{response.get("errorMessage")}】') + break + + def honey_expand(self): + print('>>>容器扩容') + # 大冒险 + gameNum = 5 + + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~receiveExchangeIndexService~expand' + response = self.do_request(url, data={}) + # print(response) + stu = response.get('success', False) + if stu: + obj = response.get('obj') + print(f'>成功扩容【{obj}】容量') + else: + print(f'>扩容失败!【{response.get("errorMessage")}】') + + def honey_indexData(self, END=False): + if not END: print('\n>>>>>>>开始执行采蜜换大礼任务') + # 邀请 + random_invite = random.choice([invite for invite in inviteId if invite != self.user_id]) + self.headers['channel'] = 'wxwdsj' + json_data = {"inviteUserId": random_invite} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~receiveExchangeIndexService~indexData' + response = self.do_request(url, data=json_data) + if response.get('success') == True: + usableHoney = response.get('obj').get('usableHoney') + if END: + Log(f'当前丰蜜:【{usableHoney}】') + return + Log(f'执行前丰蜜:【{usableHoney}】') + taskDetail = response.get('obj').get('taskDetail') + activityEndTime = response.get('obj').get('activityEndTime', '') + activity_end_time = datetime.strptime(activityEndTime, "%Y-%m-%d %H:%M:%S") + current_time = datetime.now() + + if current_time.date() == activity_end_time.date(): + Log("本期活动今日结束,请及时兑换") + else: + print(f'本期活动结束时间【{activityEndTime}】') + + if taskDetail != []: + for task in taskDetail: + self.taskType = task['type'] + self.receive_honeyTask() + time.sleep(2) + + def EAR_END_2023_TaskList(self): + print('\n>>>>>>开始32周年庆任务') + # 任务列表 + json_data = { + "activityCode": "ANNIVERSARY_2025", + "channelType": "MINI_PROGRAM" + } + self.headers['channel'] = '32annixcx' + self.headers['platform'] = 'MINI_PROGRAM' + self.headers['syscode'] = 'MCS-MIMP-CORE' + + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~activityTaskService~taskList' + + response = self.do_request(url, data=json_data) + # print(response) + if response.get('success') == True: + for item in response["obj"]: + self.title = item["taskName"] + self.taskType = item["taskType"] + status = item["status"] + if status == 3: + print(f'>【{self.taskType}】-已完成') + continue + if self.taskType == 'INTEGRAL_EXCHANGE': + self.EAR_END_2023_ExchangeCard() + elif self.taskType == 'PLAY_ACTIVITY_GAME': + self.DRAGONBOAT_2024_index() + self.DRAGONBOAT_2024_Game_init() + elif self.taskType == 'CLICK_MY_SETTING': + self.taskCode = item["taskCode"] + self.addDeliverPrefer() + if "taskCode" in item: + self.taskCode = item["taskCode"] + self.doTask() + time.sleep(3) + self.EAR_END_2023_receiveTask() + else: + print(f'暂时不支持【{self.title}】任务') + # if self.taskType == 'BEES_GAME_TASK_TYPE': + # self.honey_damaoxian() + self.EAR_END_2023_getAward() + #self.EAR_END_2023_GuessIdiom() + + def addDeliverPrefer(self): + print(f'>>>开始【{self.title}】任务') + json_data = { + "country": "中国", + "countryCode": "A000086000", + "province": "北京市", + "provinceCode": "A110000000", + "city": "北京市", + "cityCode": "A111000000", + "county": "东城区", + "countyCode": "A110101000", + "address": "1号楼1单元101", + "latitude": "", + "longitude": "", + "memberId": "", + "locationCode": "010", + "zoneCode": "CN", + "postCode": "", + "takeWay": "7", + "callBeforeDelivery": 'false', + "deliverTag": "2,3,4,1", + "deliverTagContent": "", + "startDeliverTime": "", + "selectCollection": 'false', + "serviceName": "", + "serviceCode": "", + "serviceType": "", + "serviceAddress": "", + "serviceDistance": "", + "serviceTime": "", + "serviceTelephone": "", + "channelCode": "RW11111", + "taskId": self.taskId, + "extJson": "{\"noDeliverDetail\":[]}" + } + url = 'https://ucmp.sf-express.com/cx-wechat-member/member/deliveryPreference/addDeliverPrefer' + response = self.do_request(url, data=json_data) + if response.get('success') == True: + print('新增一个收件偏好,成功') + else: + print(f'>【{self.title}】任务-{response.get("errorMessage")}') + + def EAR_END_2023_ExchangeCard(self): + print(f'>>>开始积分兑换找财神') + json_data = { + "activityCode": "ANNIVERSARY_2025", + "exchangeNum": 1 + } + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2025FiftyPercentService~getPopInfo' + response = self.do_request(url, data=json_data) + if response.get('success') == True: + print(f'>【{self.title}】任务-已完成') + + def EAR_END_2023_getAward(self): + print(f'>>>开始抽卡') + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2025ClaimService~claim' + for l in range(10): + for i in range(0, 3): + json_data = { + "cardType": i + } + response = self.do_request(url, data=json_data) + # print(response) + if response.get('success') == True: + receivedAccountList = response['obj']['receivedAccountList'] + for card in receivedAccountList: + print(f'>获得:【{card["currency"]}】卡【{card["amount"]}】张!') + elif response.get('errorMessage') == '用户账户余额不足': + break + elif response.get('errorMessage') == '用户信息失效,请退出重新进入': + break + else: + print(f'>抽卡失败:{response.get("errorMessage")}') + break + time.sleep(3) + + # def EAR_END_2023_GuessIdiom(self): + # print(f'>>>开始猜成语') + # url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024GuessIdiomService~win' + # for i in range(1, 11): + # json_data = { + # "index": i + # } + # response = self.do_request(url, data=json_data) + # if response.get('success') == True: + # print(f'第{i}关成功!') + # receivedAccountList = response['obj']['receivedAccountList'] + # for card in receivedAccountList: + # print(f'>获得:【{card["urrency"]}】卡【{card["amount"]}】张!') + # else: + # print(f'第{i}关失败!') + + #查询新年回馈卡片数量 + def EAR_END_2023_query(self): + print(f'>>>开始查询卡片数量') + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2025ClaimService~claimStatus' + response = self.do_request(url, {}) + if response.get('success'): + obj = response.get('obj', None) + if obj == None: return False + currentAccountList = obj.get('currentAccountList', []) + if not currentAccountList: + print("当前没有卡片") + else: + print("当前卡片数量:") + for card in currentAccountList: + currency = card.get('currency') + totalAmount = card.get('totalAmount') + balance = card.get('balance') + if currency == 'DAI_BI': + currency_name = '坐以待币' + elif currency == 'CHENG_GONG': + currency_name = '成功人士' + elif currency == 'GAN_FAN': + currency_name = '干饭圣体' + elif currency == 'DING_ZHU': + currency_name = '都顶得住' + elif currency == 'ZHI_SHUI': + currency_name = '心如止水' + else: + currency_name = currency + print(f"卡片名称:{currency_name},数量:{balance}") + + totalFortuneTimes = obj.get('totalFortuneTimes', 0) + print(f"总卡片数量:{totalFortuneTimes}") + + return True + else: + print(f"查询失败:{response.get('errorMessage')}") + return False + + def EAR_END_2023_receiveTask(self): + print(f'>>>开始领取【{self.title}】任务奖励') + json_data = { + "taskType": self.taskType, + "activityCode": "ANNIVERSARY_2025", + "channelType": "MINI_PROGRAM" + } + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonNoLoginPost/~memberNonactivity~yearEnd2024TaskService~fetchMixTaskReward' + response = self.do_request(url, data=json_data) + if response.get('success') == True: + print(f'>【{self.title}】任务奖励领取成功!') + else: + print(f'>【{self.title}】任务-{response.get("errorMessage")}') + + def anniversary2024_weekly_gift_status(self): + print(f'\n>>>>>>>开始周年庆任务') + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024IndexService~weeklyGiftStatus' + response = self.do_request(url) + if response.get('success') == True: + weekly_gift_list = response.get('obj', {}).get('weeklyGiftList', []) + for weekly_gift in weekly_gift_list: + if not weekly_gift.get('received'): + receive_start_time = datetime.strptime(weekly_gift['receiveStartTime'], '%Y-%m-%d %H:%M:%S') + receive_end_time = datetime.strptime(weekly_gift['receiveEndTime'], '%Y-%m-%d %H:%M:%S') + current_time = datetime.now() + # print(current_time) + # print(receive_start_time) + # print(receive_end_time) + if receive_start_time <= current_time <= receive_end_time: + self.anniversary2024_receive_weekly_gift() + else: + error_message = response.get('errorMessage') or json.dumps(response) or '无返回' + print(f'查询每周领券失败: {error_message}') + if '系统繁忙' in error_message or '用户手机号校验未通过' in error_message: + self.anniversary_black = True + + def anniversary2024_receive_weekly_gift(self): + print(f'>>>开始领取每周领券') + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024IndexService~receiveWeeklyGift' + response = self.do_request(url) + if response.get('success'): + product_names = [product['productName'] for product in response.get('obj', [])] + print(f'每周领券: {product_names}') + else: + error_message = response.get('errorMessage') or json.dumps(response) or '无返回' + print(f'每周领券失败: {error_message}') + if '系统繁忙' in error_message or '用户手机号校验未通过' in error_message: + self.anniversary_black = True + + def anniversary2024_taskList(self): + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~activityTaskService~taskList' + data = { + 'activityCode': 'ANNIVERSARY_2024', + 'channelType': 'MINI_PROGRAM' + } + response = self.do_request(url, data) + if response and response.get('success'): + tasks = response.get('obj', []) + # 过滤出状态为1的任务并尝试接收奖励 + for task in filter(lambda x: x['status'] == 1, tasks): + if self.anniversary_black: + return + for _ in range(task['canReceiveTokenNum']): + self.anniversary2024_fetchMixTaskReward(task) + # 过滤出状态为2的任务并完成任务 + for task in filter(lambda x: x['status'] == 2, tasks): + if self.anniversary_black: + return + if task['taskType'] in ['PLAY_ACTIVITY_GAME', 'PLAY_HAPPY_ELIMINATION', 'PARTAKE_SUBJECT_GAME']: + pass + elif task['taskType'] == 'FOLLOW_SFZHUNONG_VEDIO_ID': + pass + elif task['taskType'] in ['BROWSE_VIP_CENTER', 'GUESS_GAME_TIP', 'CREATE_SFID', 'CLICK_MY_SETTING', + 'CLICK_TEMPLATE', 'REAL_NAME', 'SEND_SUCCESS_RECALL', 'OPEN_SVIP', + 'OPEN_FAST_CARD', 'FIRST_CHARGE_NEW_EXPRESS_CARD', 'CHARGE_NEW_EXPRESS_CARD', + 'INTEGRAL_EXCHANGE']: + pass + else: + for _ in range(task['restFinishTime']): + if self.anniversary_black: + break + self.anniversary2024_finishTask(task) + + def anniversary2024_finishTask(self, task): + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonRoutePost/memberEs/taskRecord/finishTask' + data = {'taskCode': task['taskCode']} + response = self.do_request(url, data) + if response and response.get('success'): + print('完成任务[%s]成功' % task['taskName']) + # 完成任务后获取任务奖励的逻辑 + self.anniversary2024_fetchMixTaskReward(task) + else: + print('完成任务[%s]失败: %s' % ( + task['taskName'], response.get('errorMessage') or (json.dumps(response) if response else '无返回'))) + + def anniversary2024_fetchMixTaskReward(self, task): + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024TaskService~fetchMixTaskReward' + data = { + 'taskType': task['taskType'], + 'activityCode': 'ANNIVERSARY_2024', + 'channelType': 'MINI_PROGRAM' + } + response = self.do_request(url, data) + if response and response.get('success'): + reward_info = response.get('obj', {}).get('account', {}) + received_list = [f"[{item['currency']}]X{item['amount']}" for item in + reward_info.get('receivedAccountList', [])] + turned_award = reward_info.get('turnedAward', {}) + if turned_award.get('productName'): + received_list.append(f"[优惠券]{turned_award['productName']}") + print('领取任务[%s]奖励: %s' % (task['taskName'], ', '.join(received_list))) + else: + error_message = response.get('errorMessage') or json.dumps(response) or '无返回' + print('领取任务[%s]奖励失败: %s' % (task['taskName'], error_message)) + if '用户手机号校验未通过' in error_message: + self.anniversary_black = True + + def anniversary2024_unbox(self): + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024CardService~unbox' + response = self.do_request(url, {}) + if response and response.get('success'): + account_info = response.get('obj', {}).get('account', {}) + unbox_list = [f"[{item['currency']}]X{item['amount']}" for item in + account_info.get('receivedAccountList', [])] + print('拆盒子: %s' % ', '.join(unbox_list) or '空气') + else: + error_message = response.get('errorMessage') or json.dumps(response) or '无返回' + print('拆盒子失败: %s' % error_message) + if '用户手机号校验未通过' in error_message: + self.anniversary_black = True + + def anniversary2024_game_list(self): + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024GameParkService~list' + response = self.do_request(url, {}) + try: + if response['success']: + topic_pk_info = response['obj'].get('topicPKInfo', {}) + search_word_info = response['obj'].get('searchWordInfo', {}) + happy_elimination_info = response['obj'].get('happyEliminationInfo', {}) + + if not topic_pk_info.get('isPassFlag'): + print('开始话题PK赛') + # 这里调用话题PK赛列表相关函数 + self.anniversary2024_TopicPk_topicList() + + if not search_word_info.get('isPassFlag') or not search_word_info.get('isFinishDailyFlag'): + print('开始找字游戏') + for i in range(1, 11): + wait_time = random.randint(1000, 3000) / 1000.0 # 转换为秒 + time.sleep(wait_time) + if not self.anniversary2024_SearchWord_win(i): + break + + if not happy_elimination_info.get('isPassFlag') or not happy_elimination_info.get('isFinishDailyFlag'): + print('开始消消乐') + for i in range(1, 31): + wait_time = random.randint(2000, 4000) / 1000.0 # 转换为秒 + time.sleep(wait_time) + if not self.anniversary2024_HappyElimination_win(i): + break + else: + error_message = response['errorMessage'] or json.dumps(response) or '无返回' + print('查询游戏状态失败: ' + error_message) + if '用户手机号校验未通过' in error_message: + self.anniversary_black = True + except Exception as e: + print(str(e)) + + def anniversary2024_SearchWord_win(self, index): + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024SearchWordService~win' + success = True + try: + data = {'index': index} + response = self.do_request(url, data) + if response and response.get('success'): + currency_list = response.get('obj', {}).get('currencyDTOList', []) + rewards = ', '.join([f"[{c.get('currency')}]X{c.get('amount')}" for c in currency_list]) + print(f'找字游戏第{index}关通关成功: {rewards if rewards else "未获得奖励"}') + else: + error_message = response.get('errorMessage') or json.dumps(response) or '无返回' + print(f'找字游戏第{index}关失败: {error_message}') + if '系统繁忙' in error_message: + success = False + except Exception as e: + print(e) + finally: + return success + + def anniversary2024_HappyElimination_win(self, index): + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024HappyEliminationService~win' + success = True + data = {'index': index} + response = self.do_request(url, data) + try: + if response and response.get('success'): + is_award = response['obj'].get('isAward') + currency_dto_list = response['obj'].get('currencyDTOList', []) + rewards = ', '.join([f"[{c.get('currency')}]X{c.get('amount')}" for c in currency_dto_list]) + print(f'第{index}关通关: {rewards if rewards else "未获得奖励"}') + else: + error_message = response.get('errorMessage') or json.dumps(response) or '无返回' + print(f'第{index}关失败: {error_message}') + if '系统繁忙' in error_message: + success = False + except Exception as e: + print(e) + success = False + finally: + return success + + def anniversary2024_TopicPk_chooseSide(self, index): + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024TopicPkService~chooseSide' + success = True + data = {'index': index, 'choose': 0} # 选择某一边 + response = self.do_request(url, data) + try: + if response and response.get('success'): + currency_dto_list = response['obj'].get('currencyDTOList', []) + rewards = ', '.join([f"[{c.get('currency')}]X{c.get('amount')}" for c in currency_dto_list]) + print(f'话题PK赛选择话题{index}成功: {rewards if rewards else "未获得奖励"}') + else: + error_message = response['errorMessage'] or json.dumps(response) or '无返回' + print(f'话题PK赛选择话题{index}失败: {error_message}') + if '系统繁忙' in error_message: + success = False + except Exception as e: + print(e) + success = False + finally: + return success + + def anniversary2024_TopicPk_topicList(self): + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024TopicPkService~topicList' + response = self.do_request(url, {}) + try: + if response and response.get('success'): + topics = response['obj'].get('topics', []) + for topic in topics: + if not topic.get('choose'): + index = topic.get('index', 1) + wait_time = random.randint(2000, 4000) / 1000.0 # 转换为秒 + time.sleep(wait_time) # 等待 + if not self.anniversary2024_TopicPk_chooseSide(index): + break + else: + error_message = response['errorMessage'] or json.dumps(response) or '无返回' + print(f'查询话题PK赛记录失败: {error_message}') + except Exception as e: + print(e) + + def anniversary2024_queryAccountStatus_refresh(self): + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024CardService~queryAccountStatus' + response = self.do_request(url, {}) + try: + if not response or not response.get('success'): + error_message = response['errorMessage'] or json.dumps(response) or '无返回' + print(f'查询账户状态失败: {error_message}') + except Exception as e: + print(e) + + def anniversary2024_TopicPk_chooseSide(self, index): + success = True + data = { + 'index': index, + 'choose': 0 + } + self.headers['channel'] = '31annizyw' + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024TopicPkService~chooseSide' + result = self.do_request(url, data, 'post') + + if result and result.get('success'): + currency_dto_list = result.get('obj', {}).get('currencyDTOList', []) + if currency_dto_list: + rewards = [f"[{currency['currency']}]{currency['amount']}次" for currency in currency_dto_list] + print(f'话题PK赛第{index}个话题选择成功: {", ".join(rewards)}') + else: + print(f'话题PK赛第{index}个话题选择成功') + else: + error_message = result.get('errorMessage') if result else '无返回' + print(f'话题PK赛第{index}个话题失败: {error_message}') + if error_message and '系统繁忙' in error_message: + success = False + + return success + + def anniversary2024_titleList(self): + return + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024GuessService~titleList' + response = self.do_request(url) + + if response and response.get('success'): + + guess_title_info_list = response.get('obj', {}).get('guessTitleInfoList', []) + today_titles = [title for title in guess_title_info_list if title['gameDate'] == self.today] + for title_info in today_titles: + if title_info['answerStatus']: + print('今日已回答过竞猜') + else: + answer = self.answer + if answer: + self.anniversary2024_answer(title_info, answer) + print(f'进行了答题: {answer}') + else: + error_message = response.get('errorMessage') if response else '无返回' + print(f'查询每日口令竞猜失败: {error_message}') + + def anniversary2024_titleList_award(self): + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024GuessService~titleList' + response = self.do_request(url) + + if response and response.get('success'): + + guess_title_info_list = response.get('obj', {}).get('guessTitleInfoList', []) + today_awards = [title for title in guess_title_info_list if title['gameDate'] == self.today] + + for award_info in today_awards: + if award_info['answerStatus']: + awards = award_info.get('awardList', []) + award_info.get('puzzleList', []) + awards_description = ', '.join([f"{award['productName']}" for award in awards]) + print(f'口令竞猜奖励: {awards_description}' if awards_description else '今日无奖励') + else: + print('今日还没回答竞猜') + else: + error_message = response.get('errorMessage') if response else '无返回' + print(f'查询每日口令竞猜奖励失败: {error_message}') + + # 向API发送答题请求 + def anniversary2024_answer(self, answer_info): + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024GuessService~answer' + data = {'period': answer_info['period'], 'answerInfo': answer_info} + response = self.do_request(url, data) + if response and response.get('success'): + print('口令竞猜回答成功') + self.anniversary2024_titleList_award() # 通过奖励接口验证答案 + else: + error_message = response.get('errorMessage') if response else '无返回' + print(f'口令竞猜回答失败: {error_message}') + + # 查询账户状态 + def anniversary2024_queryAccountStatus(self): + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024CardService~queryAccountStatus' + result = self.do_request(url) + if result.get('success'): + account_currency_list = result.get('obj', {}).get('accountCurrencyList', []) + unbox_chance_currency = [currency for currency in account_currency_list if + currency.get('currency') == 'UNBOX_CHANCE'] + unbox_chance_balance = unbox_chance_currency[0].get('balance') if unbox_chance_currency else 0 + + # print('可以拆' + str(unbox_chance_balance) + '次盒子') + # while unbox_chance_balance > 0: + # self.anniversary2024_unbox() + # unbox_chance_balance -= 1 + else: + error_message = result.get('errorMessage') or json.dumps(result) or '无返回' + print('查询已收集拼图失败: ' + error_message) + + result = self.do_request(url) + if result.get('success'): + account_currency_list = result.get('obj', {}).get('accountCurrencyList', []) + account_currency_list = [currency for currency in account_currency_list if + currency.get('currency') != 'UNBOX_CHANCE'] + if account_currency_list: + cards_li = account_currency_list + card_info = [] + self.cards = { + 'CARD_1': 0, + 'CARD_2': 0, + 'CARD_3': 0, + 'CARD_4': 0, + 'CARD_5': 0, + 'CARD_6': 0, + 'CARD_7': 0, + 'CARD_8': 0, + 'CARD_9': 0, + 'COMMON_CARD': 0 + } + for card in cards_li: + currency_key = card.get('currency') + if currency_key in self.cards: + self.cards[currency_key] = int(card.get('balance')) + card_info.append('[' + card.get('currency') + ']X' + str(card.get('balance'))) + + Log(f'已收集拼图: {card_info}') + cards_li.sort(key=lambda x: x.get('balance'), reverse=True) + + else: + print('还没有收集到拼图') + else: + error_message = result.get('errorMessage') or json.dumps(result) or '无返回' + print('查询已收集拼图失败: ' + error_message) + + def do_draw(self, cards): + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024CardService~collectDrawAward' + data = {"accountList": cards} + response = self.do_request(url, data) + if response and response.get('success'): + data = response.get('obj', {}) + productName = data.get('productName', '') + Log(f'抽奖成功,获得{productName}') + return True + else: + error_message = response.get('errorMessage') if response else '无返回' + print(f'抽奖失败: {error_message}') + return False + + def convert_common_card(self, cards, target_card): + # 如果共通卡(COMMON_CARD)的数量大于0,转化成目标卡 + if cards['COMMON_CARD'] > 0: + cards['COMMON_CARD'] -= 1 + cards[target_card] += 1 + return True + return False + + def can_draw(self, cards, n): + # 判断是否有足够的不同卡进行抽奖 + distinct_cards = sum(1 for card, amount in cards.items() if card != 'COMMON_CARD' and amount > 0) + return distinct_cards >= n + + def draw(self, cards, n): + drawn_cards = [] + for card, amount in sorted(cards.items(), key=lambda item: item[1]): + if card != 'COMMON_CARD' and amount > 0: + cards[card] -= 1 + drawn_cards.append(card) + if len(drawn_cards) == n: + break + if len(drawn_cards) == n: + "没有足够的卡进行抽奖" + if self.do_draw(drawn_cards): + return drawn_cards # 返回本次抽奖使用的卡 + else: + return None + + def simulate_lottery(self, cards): + while self.can_draw(cards, 9): + used_cards = self.draw(cards, 9) + print("进行了一次9卡抽奖,消耗卡片: ", used_cards) + while self.can_draw(cards, 7) or self.convert_common_card(cards, 'CARD_1'): + if not self.can_draw(cards, 7): + continue + used_cards = self.draw(cards, 7) + print("进行了一次7卡抽奖,消耗卡片: ", used_cards) + while self.can_draw(cards, 5) or self.convert_common_card(cards, 'CARD_1'): + if not self.can_draw(cards, 5): + continue + used_cards = self.draw(cards, 5) + print("进行了一次5卡抽奖,消耗卡片: ", used_cards) + while self.can_draw(cards, 3) or self.convert_common_card(cards, 'CARD_1'): + if not self.can_draw(cards, 3): + continue + used_cards = self.draw(cards, 3) + print("进行了一次3卡抽奖,消耗卡片: ", used_cards) + + def anniversary2024_task(self): + self.anniversary2024_weekly_gift_status() + if self.anniversary_black: + return + # self.anniversary2024_titleList() + # self.anniversary2024_game_list() + # self.anniversary2024_taskList() + self.anniversary2024_queryAccountStatus() + target_time = datetime(2025, 4, 3, 14, 0) + # self.simulate_lottery(self.cards) + if datetime.now() > target_time: + print('周年庆活动即将结束,开始自动抽奖') + self.simulate_lottery(self.cards) + else: + print('未到自动抽奖时间') + + def member_day_index(self): + print('====== 会员日活动 ======') + try: + invite_user_id = random.choice([invite for invite in inviteId if invite != self.user_id]) + payload = {'inviteUserId': invite_user_id} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~memberDayIndexService~index' + + response = self.do_request(url, data=payload) + if response.get('success'): + lottery_num = response.get('obj', {}).get('lotteryNum', 0) + can_receive_invite_award = response.get('obj', {}).get('canReceiveInviteAward', False) + if can_receive_invite_award: + self.member_day_receive_invite_award(invite_user_id) + self.member_day_red_packet_status() + Log(f'会员日可以抽奖{lottery_num}次') + for _ in range(lottery_num): + self.member_day_lottery() + if self.member_day_black: + return + self.member_day_task_list() + if self.member_day_black: + return + self.member_day_red_packet_status() + else: + error_message = response.get('errorMessage', '无返回') + Log(f'查询会员日失败: {error_message}') + if '没有资格参与活动' in error_message: + self.member_day_black = True + Log('会员日任务风控') + except Exception as e: + print(e) + + def member_day_receive_invite_award(self, invite_user_id): + try: + payload = {'inviteUserId': invite_user_id} + + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~memberDayIndexService~receiveInviteAward' + + response = self.do_request(url, payload) + if response.get('success'): + product_name = response.get('obj', {}).get('productName', '空气') + Log(f'会员日奖励: {product_name}') + else: + error_message = response.get('errorMessage', '无返回') + Log(f'领取会员日奖励失败: {error_message}') + if '没有资格参与活动' in error_message: + self.member_day_black = True + Log('会员日任务风控') + except Exception as e: + print(e) + + def member_day_lottery(self): + try: + payload = {} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~memberDayLotteryService~lottery' + + response = self.do_request(url, payload) + if response.get('success'): + product_name = response.get('obj', {}).get('productName', '空气') + Log(f'会员日抽奖: {product_name}') + else: + error_message = response.get('errorMessage', '无返回') + Log(f'会员日抽奖失败: {error_message}') + if '没有资格参与活动' in error_message: + self.member_day_black = True + Log('会员日任务风控') + except Exception as e: + print(e) + + def member_day_task_list(self): + try: + payload = {'activityCode': 'MEMBER_DAY', 'channelType': 'MINI_PROGRAM'} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~activityTaskService~taskList' + + response = self.do_request(url, payload) + if response.get('success'): + task_list = response.get('obj', []) + for task in task_list: + if task['status'] == 1: + if self.member_day_black: + return + self.member_day_fetch_mix_task_reward(task) + for task in task_list: + if task['status'] == 2: + if self.member_day_black: + return + if task['taskType'] in ['SEND_SUCCESS', 'INVITEFRIENDS_PARTAKE_ACTIVITY', 'OPEN_SVIP', + 'OPEN_NEW_EXPRESS_CARD', 'OPEN_FAMILY_CARD', 'CHARGE_NEW_EXPRESS_CARD', + 'INTEGRAL_EXCHANGE']: + pass + else: + for _ in range(task['restFinishTime']): + if self.member_day_black: + return + self.member_day_finish_task(task) + else: + error_message = response.get('errorMessage', '无返回') + Log('查询会员日任务失败: ' + error_message) + if '没有资格参与活动' in error_message: + self.member_day_black = True + Log('会员日任务风控') + except Exception as e: + print(e) + + def member_day_finish_task(self, task): + try: + payload = {'taskCode': task['taskCode']} + + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberEs~taskRecord~finishTask' + + response = self.do_request(url, payload) + if response.get('success'): + Log('完成会员日任务[' + task['taskName'] + ']成功') + self.member_day_fetch_mix_task_reward(task) + else: + error_message = response.get('errorMessage', '无返回') + Log('完成会员日任务[' + task['taskName'] + ']失败: ' + error_message) + if '没有资格参与活动' in error_message: + self.member_day_black = True + Log('会员日任务风控') + except Exception as e: + print(e) + + def member_day_fetch_mix_task_reward(self, task): + try: + payload = {'taskType': task['taskType'], 'activityCode': 'MEMBER_DAY', 'channelType': 'MINI_PROGRAM'} + + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~activityTaskService~fetchMixTaskReward' + + response = self.do_request(url, payload) + if response.get('success'): + Log('领取会员日任务[' + task['taskName'] + ']奖励成功') + else: + error_message = response.get('errorMessage', '无返回') + Log('领取会员日任务[' + task['taskName'] + ']奖励失败: ' + error_message) + if '没有资格参与活动' in error_message: + self.member_day_black = True + Log('会员日任务风控') + except Exception as e: + print(e) + + def member_day_receive_red_packet(self, hour): + try: + payload = {'receiveHour': hour} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~memberDayTaskService~receiveRedPacket' + + response = self.do_request(url, payload) + if response.get('success'): + print(f'会员日领取{hour}点红包成功') + else: + error_message = response.get('errorMessage', '无返回') + print(f'会员日领取{hour}点红包失败: {error_message}') + if '没有资格参与活动' in error_message: + self.member_day_black = True + Log('会员日任务风控') + except Exception as e: + print(e) + + def member_day_red_packet_status(self): + try: + payload = {} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~memberDayPacketService~redPacketStatus' + response = self.do_request(url, payload) + if response.get('success'): + packet_list = response.get('obj', {}).get('packetList', []) + for packet in packet_list: + self.member_day_red_packet_map[packet['level']] = packet['count'] + + for level in range(1, self.max_level): + count = self.member_day_red_packet_map.get(level, 0) + while count >= 2: + self.member_day_red_packet_merge(level) + count -= 2 + packet_summary = [] + remaining_needed = 0 + + for level, count in self.member_day_red_packet_map.items(): + if count == 0: + continue + packet_summary.append(f"[{level}级]X{count}") + int_level = int(level) + if int_level < self.max_level: + remaining_needed += 1 << (int_level - 1) + + Log("会员日合成列表: " + ", ".join(packet_summary)) + + if self.member_day_red_packet_map.get(self.max_level): + Log(f"会员日已拥有[{self.max_level}级]红包X{self.member_day_red_packet_map[self.max_level]}") + self.member_day_red_packet_draw(self.max_level) + else: + remaining = self.packet_threshold - remaining_needed + Log(f"会员日距离[{self.max_level}级]红包还差: [1级]红包X{remaining}") + + else: + error_message = response.get('errorMessage', '无返回') + Log(f'查询会员日合成失败: {error_message}') + if '没有资格参与活动' in error_message: + self.member_day_black = True + Log('会员日任务风控') + except Exception as e: + print(e) + + def member_day_red_packet_merge(self, level): + try: + # for key,level in enumerate(self.member_day_red_packet_map): + # pass + payload = {'level': level, 'num': 2} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~memberDayPacketService~redPacketMerge' + + response = self.do_request(url, payload) + if response.get('success'): + Log(f'会员日合成: [{level}级]红包X2 -> [{level + 1}级]红包') + self.member_day_red_packet_map[level] -= 2 + if not self.member_day_red_packet_map.get(level + 1): + self.member_day_red_packet_map[level + 1] = 0 + self.member_day_red_packet_map[level + 1] += 1 + else: + error_message = response.get('errorMessage', '无返回') + Log(f'会员日合成两个[{level}级]红包失败: {error_message}') + if '没有资格参与活动' in error_message: + self.member_day_black = True + Log('会员日任务风控') + except Exception as e: + print(e) + + def member_day_red_packet_draw(self, level): + try: + payload = {'level': str(level)} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~memberDayPacketService~redPacketDraw' + response = self.do_request(url, payload) + if response and response.get('success'): + coupon_names = [item['couponName'] for item in response.get('obj', [])] or [] + + Log(f"会员日提取[{level}级]红包: {', '.join(coupon_names) or '空气'}") + else: + error_message = response.get('errorMessage') if response else "无返回" + Log(f"会员日提取[{level}级]红包失败: {error_message}") + if "没有资格参与活动" in error_message: + self.memberDay_black = True + print("会员日任务风控") + except Exception as e: + print(e) + + def DRAGONBOAT_2024_index(self): + print('====== 查询32周年庆活动状态 ======') + invite_user_id = random.choice([invite for invite in inviteId if invite != self.user_id]) + try: + self.headers['channel'] = '32annixcx' + self.headers[ + 'referer'] = f'https://mcs-mimp-web.sf-express.com/origin/a/mimp-activity/anniversary2025?mobile={self.mobile}&userId={self.user_id}&path=/origin/a/mimp-activity/anniversary2025&supportShare=&inviteUserId={invite_user_id}&from=newExpressWX' + payload = {} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonNoLoginPost/~memberNonactivity~anniversary2025IndexService~index' + + response = self.do_request(url, payload) + print(response) + if response.get('success'): + obj = response.get('obj', [{}]) + acEndTime = obj.get('acEndTime', '') + # 获取当前时间并格式化 + current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + comparison_time = datetime.strptime(acEndTime, "%Y-%m-%d %H:%M:%S") + # 比较当前时间是否小于比较时间 + is_less_than = datetime.now() < comparison_time + if is_less_than: + print('推财神进行中....') + return True + else: + print('推财神活动已结束') + return False + else: + error_message = response.get('errorMessage', '无返回') + if '没有资格参与活动' in error_message: + self.DRAGONBOAT_2024_black = True + Log('会员日任务风控') + return False + except Exception as e: + print(e) + return False + + def DRAGONBOAT_2024_Game_indexInfo(self): + Log('====== 开始推财神游戏 ======') + try: + payload = {} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024GameService~indexInfo' + + response = self.do_request(url, payload) + # print(response) + if response.get('success'): + obj = response.get('obj', [{}]) + maxPassLevel = obj.get('maxPassLevel', '') + ifPassAllLevel = obj.get('ifPassAllLevel', '') + if maxPassLevel != 30: + self.DRAGONBOAT_2024_win(maxPassLevel) + else: + self.DRAGONBOAT_2024_win(0) + + else: + error_message = response.get('errorMessage', '无返回') + if '没有资格参与活动' in error_message: + self.DRAGONBOAT_2024_black = True + Log('会员日任务风控') + return False + except Exception as e: + print(e) + return False + + def DRAGONBOAT_2024_Game_init(self): + Log('====== 开始推财神游戏 ======') + try: + payload = {} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024GameService~init' + + response = self.do_request(url, payload) + # print(response) + if response.get('success'): + obj = response.get('obj', [{}]) + currentIndex = obj.get('currentIndex', '') + ifPassAllLevel = obj.get('ifPassAllLevel', '') + if currentIndex != 30: + self.DRAGONBOAT_2024_win(currentIndex) + else: + self.DRAGONBOAT_2024_win(0) + + else: + error_message = response.get('errorMessage', '无返回') + if '没有资格参与活动' in error_message: + self.DRAGONBOAT_2024_black = True + Log('会员日任务风控') + return False + except Exception as e: + print(e) + return False + + def DRAGONBOAT_2024_weeklyGiftStatus(self): + print('====== 查询每周礼包领取状态 ======') + try: + payload = {} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024IndexService~weeklyGiftStatus' + + response = self.do_request(url, payload) + # print(response) + if response.get('success'): + obj = response.get('obj', [{}]) + for gift in obj: + received = gift['received'] + receiveStartTime = gift['receiveStartTime'] + receiveEndTime = gift['receiveEndTime'] + print(f'>>> 领取时间:【{receiveStartTime} 至 {receiveEndTime}】') + if received: + print('> 该礼包已领取') + continue + receive_start_time = datetime.strptime(receiveStartTime, "%Y-%m-%d %H:%M:%S") + receive_end_time = datetime.strptime(receiveEndTime, "%Y-%m-%d %H:%M:%S") + is_within_range = receive_start_time <= datetime.now() <= receive_end_time + if is_within_range: + print(f'>> 开始领取礼包:') + self.DRAGONBOAT_2024_receiveWeeklyGift() + else: + error_message = response.get('errorMessage', '无返回') + if '没有资格参与活动' in error_message: + self.DRAGONBOAT_2024_black = True + Log('会员日任务风控') + except Exception as e: + print(e) + + def DRAGONBOAT_2024_receiveWeeklyGift(self): + invite_user_id = random.choice([invite for invite in inviteId if invite != self.user_id]) + try: + payload = {"inviteUserId": invite_user_id} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024IndexService~receiveWeeklyGift' + + response = self.do_request(url, payload) + # print(response) + if response.get('success'): + obj = response.get('obj', [{}]) + if obj == [{}]: + print('> 领取失败') + return False + for gifts in obj: + productName = gifts['productName'] + amount = gifts['amount'] + print(f'> 领取【{productName} x {amount}】成功') + else: + error_message = response.get('errorMessage', '无返回') + if '没有资格参与活动' in error_message: + self.DRAGONBOAT_2024_black = True + Log('会员日任务风控') + except Exception as e: + print(e) + + def DRAGONBOAT_2024_taskList(self): + print('====== 查询推币任务列表 ======') + try: + payload = { + "activityCode": "DRAGONBOAT_2024", + "channelType": "MINI_PROGRAM" + } + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~activityTaskService~taskList' + + response = self.do_request(url, payload) + # print(response) + if response.get('success'): + obj = response.get('obj', [{}]) + for task in obj: + taskType = task['taskType'] + self.taskName = task['taskName'] + status = task['status'] + if status == 3: + Log(f'> 任务【{self.taskName}】已完成') + continue + self.taskCode = task.get('taskCode', None) + if self.taskCode: + self.DRAGONBOAT_2024_finishTask() + if taskType == 'PLAY_ACTIVITY_GAME': + self.DRAGONBOAT_2024_Game_init() + else: + error_message = response.get('errorMessage', '无返回') + if '没有资格参与活动' in error_message: + self.DRAGONBOAT_2024_black = True + Log('会员日任务风控') + except Exception as e: + print(e) + + def DRAGONBOAT_2024_coinStatus(self, END=False): + Log('====== 查询金币信息 ======') + # try: + payload = {} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024CoinService~coinStatus' + + response = self.do_request(url, payload) + # print(response) + if response.get('success'): + obj = response.get('obj', None) + if obj == None: return False + accountCurrencyList = obj.get('accountCurrencyList', []) + pushedTimesToday = obj.get('pushedTimesToday', '') + pushedTimesTotal = obj.get('pushedTimesTotal', '') + PUSH_TIMES_balance = 0 + self.COIN_balance = 0 + WELFARE_CARD_balance = 0 + for li in accountCurrencyList: + if li['currency'] == 'PUSH_TIMES': + PUSH_TIMES_balance = li['balance'] + if li['currency'] == 'COIN': + self.COIN_balance = li['balance'] + if li['currency'] == 'WELFARE_CARD': + WELFARE_CARD_balance = li['balance'] + + PUSH_TIMES = PUSH_TIMES_balance + if END: + if PUSH_TIMES_balance > 0: + for i in range(PUSH_TIMES_balance): + print(f'>> 开始第【{PUSH_TIMES_balance + 1}】次推币') + self.DRAGONBOAT_2024_pushCoin() + PUSH_TIMES -= 1 + pushedTimesToday += 1 + pushedTimesTotal += 1 + Log(f'> 剩余推币次数:【{PUSH_TIMES}】') + Log(f'> 当前金币:【{self.COIN_balance}】') + # Log(f'> 当前发财卡:【{WELFARE_CARD_balance}】') + Log(f'> 今日推币:【{pushedTimesToday}】次') + Log(f'> 总推币:【{pushedTimesTotal}】次') + else: + print(f'> 剩余推币次数:【{PUSH_TIMES_balance}】') + print(f'> 当前金币:【{self.COIN_balance}】') + # Log(f'> 当前发财卡:【{WELFARE_CARD_balance}】') + print(f'> 今日推币:【{pushedTimesToday}】次') + print(f'> 总推币:【{pushedTimesTotal}】次') + + self.DRAGONBOAT_2024_givePushTimes() + else: + error_message = response.get('errorMessage', '无返回') + if '没有资格参与活动' in error_message: + self.DRAGONBOAT_2024_black = True + Log('会员日任务风控') + # except Exception as e: + # print(e) + + def DRAGONBOAT_2024_pushCoin(self): + try: + payload = {"plateToken": None} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024CoinService~pushCoin' + + response = self.do_request(url, payload) + # print(response) + if response.get('success'): + obj = response.get('obj', [{}]) + drawAward = obj.get('drawAward', '') + self.COIN_balance += drawAward + print(f'> 获得:【{drawAward}】金币') + + else: + error_message = response.get('errorMessage', '无返回') + if '没有资格参与活动' in error_message: + self.DRAGONBOAT_2024_black = True + Log('会员日任务风控') + except Exception as e: + print(e) + + def DRAGONBOAT_2024_givePushTimes(self): + Log('====== 领取赠送推币次数 ======') + try: + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024CoinService~givePushTimes' + + response = self.do_request(url) + # print(response) + if response.get('success'): + obj = response.get('obj', 0) + print(f'> 获得:【{obj}】次推币机会') + else: + error_message = response.get('errorMessage', '无返回') + if '没有资格参与活动' in error_message: + self.DRAGONBOAT_2024_black = True + Log('> 会员日任务风控') + print(error_message) + except Exception as e: + print(e) + + def DRAGONBOAT_2024_finishTask(self): + try: + payload = { + "taskCode": self.taskCode + } + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberEs~taskRecord~finishTask' + + response = self.do_request(url, payload) + # print(response) + if response.get('success'): + obj = response.get('obj', False) + Log(f'> 完成任务【{self.taskName}】成功') + else: + error_message = response.get('errorMessage', '无返回') + if '没有资格参与活动' in error_message: + self.DRAGONBOAT_2024_black = True + Log('会员日任务风控') + except Exception as e: + print(e) + + def DRAGONBOAT_2024_win(self, level): + try: + for i in range(level,16): + print(f'开始第【{i}】关') + payload = {"levelIndex": i} + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024GameService~win' + + response = self.do_request(url, payload) + # print(response) + if response.get('success'): + obj = response.get('obj', [{}]) + currentAwardList = obj.get('currentAwardList', []) + if currentAwardList != []: + for award in currentAwardList: + currency = award.get('currency', '') + amount = award.get('amount', '') + print(f'> 获得:【{currency}】x{amount}') + else: + print(f'> 本关无奖励') + # random_time =random.randint(10,15) + # print(f'>> 等待{random_time}秒 <<') + # time.sleep(random_time) + else: + error_message = response.get('errorMessage', '无返回') + print(error_message) + if '没有资格参与活动' in error_message: + self.DRAGONBOAT_2024_black = True + Log('会员日任务风控') + except Exception as e: + print(e) + + def main(self): + global one_msg + wait_time = random.randint(1000, 3000) / 1000.0 # 转换为秒 + time.sleep(wait_time) # 等待 + one_msg = '' + if not self.login_res: return False + # 执行签到任务 + self.sign() +# self.superWelfare_receiveRedPacket() + self.get_SignTaskList() + self.get_SignTaskList(True) + + # 执行丰蜜任务 + self.honey_indexData() + # 获取任务列表并执行任务 + self.get_honeyTaskListStart() + self.honey_indexData(True) + + +# if self.DRAGONBOAT_2024_index(): + #self.DRAGONBOAT_2024_weeklyGiftStatus() + #self.DRAGONBOAT_2024_coinStatus() + #self.DRAGONBOAT_2024_taskList() +# self.DRAGONBOAT_2024_Game_init() + #self.DRAGONBOAT_2024_coinStatus(True) + + + # ####################################### + # # # 获取当前季度结束日期 + # # activity_end_date = get_quarter_end_date() + # # if is_activity_end_date(activity_end_date): + # # Log("今天采蜜活动截止兑换,请及时进行兑换") + # # send('顺丰速运挂机通知', "今天采蜜活动截止兑换,请及时进行兑换") + target_time = datetime(2025, 4, 8, 19, 0) + if datetime.now() < target_time: + self.EAR_END_2023_TaskList() + self.EAR_END_2023_query() + #self.anniversary2024_task() + else: + print('周年庆活动已结束') + # ####################################### + # self.member_day_index() + current_date = datetime.now().day + if 26 <= current_date <= 28: + self.member_day_index() + else: + print('未到指定时间不执行会员日任务') + + + + self.sendMsg() + return True + + # def sendMsg(self, help=False): + # if self.send_UID: + # push_res = CHERWIN_TOOLS.wxpusher(self.send_UID, one_msg, APP_NAME, help) + # print(push_res) + def sendMsg(self, help=False): + #send("顺丰-通知", one_msg) + pass + +def get_quarter_end_date(): + current_date = datetime.now() + current_month = current_date.month + current_year = current_date.year + + # 计算下个季度的第一天 + next_quarter_first_day = datetime(current_year, ((current_month - 1) // 3 + 1) * 3 + 1, 1) + + # 计算当前季度的最后一天 + quarter_end_date = next_quarter_first_day - timedelta(days=1) + + return quarter_end_date.strftime("%Y-%m-%d") + + +def is_activity_end_date(end_date): + current_date = datetime.now().date() + end_date = datetime.strptime(end_date, "%Y-%m-%d").date() + + return current_date == end_date + + +def down_file(filename, file_url): + print(f'开始下载:{filename},下载地址:{file_url}') + try: + response = requests.get(file_url, verify=False, timeout=10) + response.raise_for_status() + with open(filename + '.tmp', 'wb') as f: + f.write(response.content) + print(f'【{filename}】下载完成!') + + # 检查临时文件是否存在 + temp_filename = filename + '.tmp' + if os.path.exists(temp_filename): + # 删除原有文件 + if os.path.exists(filename): + os.remove(filename) + # 重命名临时文件 + os.rename(temp_filename, filename) + print(f'【{filename}】重命名成功!') + return True + else: + print(f'【{filename}】临时文件不存在!') + return False + except Exception as e: + print(f'【{filename}】下载失败:{str(e)}') + return False + + +def import_Tools(): + global CHERWIN_TOOLS, ENV, APP_INFO, TIPS, TIPS_HTML, AuthorCode + import CHERWIN_TOOLS + ENV, APP_INFO, TIPS, TIPS_HTML, AuthorCode = CHERWIN_TOOLS.main(APP_NAME, local_script_name, ENV_NAME, + local_version) + + +if __name__ == '__main__': + APP_NAME = '顺丰速运' + ENV_NAME = 'sfsyUrl' + CK_NAME = 'url' + print(f''' + 2025/1/4,年终回馈活动。没有抽奖,有些打印显示问题不管了,不影响任务完成。 + 2025/1/5,年终回馈活动。修改西财神。 + 2025/03/17年终回馈活动。修改32周年庆,需要手动打开顺丰小程序进入活动页面 + 点击“积分”,以下几种url之一: + https://mcs-mimp-web.sf-express.com/mcs-mimp/share/weChat/shareGiftReceiveRedirect + https://mcs-mimp-web.sf-express.com/mcs-mimp/share/app/shareRedirect + 多账号换行 + 变量名:sfsyUrl + + ''') + local_script_name = os.path.basename(__file__) + local_version = '2024.06.02' + token = os.getenv(ENV_NAME) + tokens = token.split('\n') + # print(tokens) + if len(tokens) > 0: + print(f"\n>>>>>>>>>>共获取到{len(tokens)}个账号<<<<<<<<<<") + for index, infos in enumerate(tokens): + run_result = RUN(infos, index).main() + if not run_result: continue \ No newline at end of file diff --git a/大为健康.js b/大为健康.js new file mode 100644 index 0000000..ef27c49 --- /dev/null +++ b/大为健康.js @@ -0,0 +1,870 @@ +/* + * @Author: 梁 && fang_liang_liang@foxmail.com + * @Date: 2024-11-20 09:44:59 + * @Description: + * @FilePath: \薅羊毛\整理\大为健康类\大为健康-闲鱼_流年忘返.js + * @LastEditTime: 2024-11-20 14:30:05 + * @LastEditors: 梁 && fang_liang_liang@foxmail.com + */ + +let uid = "" +let Authorization = "" +let openid = "odrFI6snMa2Hz5cJRFlbPL8UGSDs"; +let userList = [ + { + "uid": "2642697", + "Authorization": "4aad85e5dee2a48224c88ab1502e2fdb", + "baseUrl": "http://zj.zjdtxt.com", + "openid": "oIlr36POgYKS11GxIotZ65B4wBxE", + "n": -1 + }, + { + "uid": "2642693", + "Authorization": "d620c2753b3f36d54aa961511af51626", + "baseUrl": "http://zj.zjdtxt.com", + "openid": "oIlr36GFMyn0GAj5om8_4XvpGfuM", + // "n": 1 + }, + { + "uid": "2642699", + "Authorization": "2227d84e69b17eaea5705c0cbed2b226", + "baseUrl": "http://zj.zjdtxt.com", + "openid": "oIlr36HIfmXKr6Tqtvng8heig4cg", + "n": -2 + } + + + + +] + + +//1-101 +var ids = [ + + + + "1648253549", + "1648345794", + "1648345844", + "1648345898", + "1648345948", + "1648601047", + "1648601104", + "1648690708", + "1648690760", + "1648773869", + "1648773920", + "1648864166", + "1648864224", + "1648948085", + "1648948298", + "1649036286", + "1649036333", + "1649122153", + "1649122201", + "1649208292", + "1649208346", + "1649293148", + "1649293200", + "1649381557", + "1649381603", + "1649466389", + "1649466479", + "1649554232", + "1649554303", + "1649643342", + "1649644432", + "1649726396", + "1649726457", + "1649813326", + "1649813374", + "1649900408", + "1649900458", + "1649900513", + "1649900570", + "1650070603", + "1650070720", + "1650156593", + "1650156645", + "1650244102", + "1650244165", + "1650329764", + "1650329833", + "1650419820", + "1650419872", + "1650506926", + "1650506977", + "1650507028", + "1650631610", + "1650768071", + "1650768127", + "1650852250", + "1650852303", + "1650852348", + "1650852406", + "1651030589", + "1651030679", + "1651030731", + "1651030785", + "1651030838", + "1651279411", + "1651279460", + "1651279506", + "1651279557", + "1651279644", + "1651366150", + "1651366201", + "1651366333", + "1651572539", + "1651621672", + "1651621726", + "1651621775", + // "1651621841", + // "1651621900", + // "1651621946", + // "1651793454", + // "1683787666", + // "1683787955", + // "1683788198", + "1651621995", + "1683792536", + "1683792594", + "1683792654", + "1651793454", + "1651793506", + "1651793554", + + + "1651793606", + "1652135053", + "1652135102", + "1652135175", + "1652135226", + "1652135281", + "1652135364", + "1652135427", + "1652135477", + "1652135538", + "1652135586", + "1652135639", + "1652135717", + // "1683794533", + // "1683795077", + "1652686593", + "1652772165", + + "1652857801", + "1651366202", + "1649908355", + "1648864167", + "1648864168", + "1658733397", + "1658977296", + "1658976306", + "1686276155", + "1686276302", + "1686276388", + "1652946870", + "1686276615", + "1653033427", + "1653120639", + "1653205253", +] + + + +const $ = new Env('大为健康'); +const axios = require('axios'); +const qs = require('qs'); +const { json } = require("express"); +let loginstatus = 0 +let status = 0 +let count_money_num = `` +let baseUrl = "" +var headers = { + 'Authorization': Authorization, + 'User-Agent': 'Mozilla/5.0 (Linux; Android 12; 22041211AC Build/SP1A.210812.016; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/111.0.5563.116 Mobile Safari/537.36 XWEB/5317 MMWEBSDK/20230805 MMWEBID/2593 MicroMessenger/8.0.41.2441(0x28002951) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Referer': 'http://hb3.hbdtxt.com/', + 'Accept-Encoding': 'gzip, deflate', + 'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', + 'Cookie': 's342b0066=tme797db1if1i4qlq1i0d7dv13' +} +let nickname = "" +//个人信息 期数查询 +async function login() { + // huodong_id=1648253549&store_id=296&noneedlogin=0&openid=oy-5j6tgNZwFf-WQkc3RD39ihp-Y&api_type=h5&uid=2079189 + let data = qs.stringify({ + "huodong_id": 1648253549, + "store_id": 296, + "noneedlogin": 0, + "openid": openid, + 'api_type': 'h5', + 'uid': uid + }) + let config = { + url: baseUrl + '/api/index/index', + method: 'post', + headers: headers, + data: data + } + + + try { + const response = await axios(config); + let response_data = response.data + //console.log(response_data) + let code = response_data.code + if (code == 1) { + nickname = response_data.user.nickname //昵称 + count_money_num = response_data.user.count_money_num //答题期数 + count_money = response_data.user.count_money / 100 //累计金额 + console.log(`登录成功!昵称:` + nickname + ` 答题期数:` + count_money_num + ` 累计获得红包:` + count_money + `元`) + loginstatus = 1 + } else { + console.log(uid + ` 登录失败!原因:` + JSON.stringify(response_data)) + } + + return count_money_num + } catch (error) { + console.error(error); + } +} + +//题目 +async function hh(huodong_id) { + let data = qs.stringify({ + 'huodong_id': huodong_id, + "store_id": 296, + "noneedlogin": 0, + "openid": openid, + 'api_type': 'h5', + 'uid': uid + }) + let config = { + url: baseUrl + '/api/index/index', + method: 'post', + headers: headers, + data: data + } + + try { + const response = await axios(config); + let response_data = response.data + // console.log(response_data) + let code = response_data.code + if (response_data.huodong == null) { + console.log(huodong_id) + } + let share_title = response_data.huodong.share_title + console.log(huodong_id + ":" + share_title) + // return + if (code == 777) { + console.log(response_data) + } + let msg = response_data.msg + let canyu_status = response_data.canyu_status + let is_can = response_data.is_can + let huodong = response_data.huodong + let wentilist = response_data.wentilist + let modified_wentilist = [] + for (let question of wentilist) { + let daan = JSON.parse(question["daan"])[0]; + for (let option of question["xuanxiang"]) { + if (option["xuhao"] === daan) { + option["xuanzhong"] = 1; + } else { + option["xuanzhong"] = 0; + } + } + modified_wentilist.push(question) + //console.log(modified_wentilist) + } + + return modified_wentilist + } catch (error) { + console.error(error); + } +} + +//答题 +async function dt(a, huodong_id) { + + var data = qs.stringify({ + 'wentilist': a, + 'huodong_id': huodong_id, + 'uuid': uid, + "openid": openid, + 'api_type': 'h5', + 'uid': uid + }); + var config = { + method: 'post', + url: baseUrl + '/api/index/dati', + headers: headers, + data: data + }; + + axios(config) + .then(function (response) { + // console.log(JSON.stringify(response.data)); + if (response.data.msg == "今日可领取红包次数已达上限!") { + //{"code":0,"msg":"今日可领取红包次数已达上限!"} + console.log(`${nickname}:今日可领取红包次数已达上限`) + status = 1 + return + } else if (response.data.msg == "答题成功") { + console.log(`${nickname}:答题成功,获得红包:` + response.data.money + `元,故事id:${huodong_id}`) + } else { + console.log(`${nickname}:` + JSON.stringify(response.data)); + } + + }) + .catch(function (error) { + console.log(error); + }); + +} + +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} + +async function main() { + init() + + await login() + if (loginstatus === 1) { + // console.log(`===========开始答题===========`) + let index = count_money_num + index = (index * 1) - (n * 1 + 1) + console.log('index: ', index); + for (; index < ids.length; index++) { + // await $.wait(5 * 1000); + let aa = await hh(ids[index]) + return + // await $.wait(5 * 1000); // + await dt(JSON.stringify(aa), ids[index]) + // await $.wait(5 * 1000); + return + // if (status === 1) { + // userList.splice(currentIndex, 1) + // return; + // } + } + } else { + // userList.splice(currentIndex, 1) + + } + +} +function init() { + loginstatus = 0 + status = 0 + count_money_num = `` + headers = { + 'Authorization': Authorization, + 'User-Agent': 'Mozilla/5.0 (Linux; Android 12; 22041211AC Build/SP1A.210812.016; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/111.0.5563.116 Mobile Safari/537.36 XWEB/5317 MMWEBSDK/20230805 MMWEBID/2593 MicroMessenger/8.0.41.2441(0x28002951) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64', + 'Content-Type': 'application/x-www-form-urlencoded', + 'Referer': 'http://hb3.hbdtxt.com/', + 'Accept-Encoding': 'gzip, deflate', + 'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', + 'Cookie': 's342b0066=tme797db1if1i4qlq1i0d7dv13' + } +} +// 只跑一个 +async function runOne(id) { + currentIndex = 0; + while (currentIndex < userList.length) { + uid = userList[currentIndex].uid + Authorization = userList[currentIndex].Authorization + baseUrl = userList[currentIndex].baseUrl ?? "https://xb2.xbdtxt.com" + openid = userList[currentIndex].openid + init() + await login() + // await $.wait(30 * 1000); + let aa = await hh(id) + // return + // await $.wait(30 * 1000); // + await dt(JSON.stringify(aa), id) + // await $.wait(30 * 1000); + currentIndex++ + } +} + +// "1648253549", +// "1648345794", +// "1648345844", +// "1648345898", +// "1648345948", +// "1648601047", +// "1648601104", +// "1648690708", +// "1648690760", +// "1648773869", + +// 1652135427:李盛学人生故事第91期 +// 登录成功!昵称:随心 答题期数:11 累计获得红包:8.69元 +// 1652135477:李盛学人生故事第92期 + +// (async ()=>{ +// for(let id of ids){ +// await runOne(id) +// } +// })() +//1648948298,1649036286,1649036333,1649122153,1649122201,1649208292 +// ids = [1648773920, 1648864166, 1648864224, 1648948085, 1648948298] + +// runOne(ids[ids.length - 1]) + + +// 1648253549 +// let currentIndex = 0; +// (async () => { +// while (userList.length > 0) { +// currentIndex = currentIndex % userList.length +// uid = userList[currentIndex].uid +// Authorization = userList[currentIndex].Authorization +// let time = new Date().getTime() +// let diff = userList[currentIndex].date + 1000 * 60 * 45 - time +// if (diff > 0) { +// await $.wait(diff) +// } + +// await main() +// userList[currentIndex].date = new Date().getTime() +// currentIndex++ +// } +// })() +let n = null; +(async () => { + for (let user of userList) { + uid = user.uid + Authorization = user.Authorization + baseUrl = user.baseUrl ?? "https://xb2.xbdtxt.com" + openid = user.openid + n = user.n ?? -1 + // https://xb2.xbdtxt.com + + await main() + await sheep(5) + } +})() + +function sheep(n) { + return new Promise(resolve => { + setTimeout(() => { + resolve() + }, n * 1000) + }) + +} +// 没有执行过 +// let arr = [1652135427, 1650244102, 1651621900, 1648601104, 1648690708, 1649466389, 1649900570, 1649208346, 1649036333, 1651793454, 1650156593, 1651279411, 1652135477, 1651621946, 1651621948, 1651030589, 1650244165, 1648690760, 1648948298, 1650070603, 1651793506, 1651279460, 1683794533, 1650156645, 1651621995, 1650419820, 1648253549, 1649466479, 1652135538, 1683795077, 1652135053, 1651793554, 1651279506, 1651030679, 1650419872, 1652135586, 1650329764, 1650506926, 1683787955, 1649381557, 1652135102, 1650070720, 1648345794, 1651279557, 1651793606, 1650768071, 1651030731, 1652135639, 1650506977, 1649381603, 1650329833, 1648773869, 1648345844, 1650768127, 1651030785, 1651366150, 1652135175, 1650507028, 1651279644, 1648773920, 1652135717, 1651621672, 1648345898, 1651030838, 1649554232, 1651366201, 1652135226, 1651572539, 1649813326, 1649643342, 1649293148, 1648345948, 1651621726, 1649122153, 1652135281, 1648948085, 1649900408, 1649813374, 1649554303, 1651621775, 1649293200, 1649644432, 1683787666, 1649122201, 1650852250, 1648782240, 1683788198, 1648864166, 1649900458, 1650631610, 1649726396, 1651366333, 1652135364, 1652135366, 1650852303, 1651621841, 1648601047, 1648864224, 1649900513, 1649208292, 1649726457, 1650852348, 1649036286, 1649908355, 1648864167, +// 1648864168, 1648253492, 1652686593, 1652772165, 1652857801, 1652946870, 1658976306, 1660278818, 1653033427, +// 1653120639, 1653205253, 1653462997, +// 1653377016, 1653289687, 1653550213, +// 1653636769, 1684131759, 1684131980, +// 1684132071, 1684132158, 1684132221, +// 1684132444, 1684132620, 1684132565, +// 1684132510, 1651366202, 1661473785, +// 1661472999, 1679039978, 1679040349, +// 1679040576, 1658733397, 1656911476, +// 1657181681, 1684132893, 1684132735, +// 1684132789] + +// ; (async () => { +// for (let i = 0; i < arr.length; i++) { +// await runOne(arr[i]) +// } +// })() + +// 李院士分享养生神器-太极玉枕 +// 登录成功!昵称:木之心 答题期数:121 累计获得红包:85.46元 +// 木之心:答题成功,获得红包:0.42元 +// 听故事还能得红包 赶快单击收听 + + + + +function Env(t, e) { + "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); + + class s { + constructor(t) { + this.env = t + } + + send(t, e = "GET") { + t = "string" == typeof t ? { + url: t + } : t; + let s = this.get; + return "POST" === e && (s = this.post), new Promise((e, i) => { + s.call(this, t, (t, s, r) => { + t ? i(t) : e(s) + }) + }) + } + + get(t) { + return this.send.call(this.env, t) + } + + post(t) { + return this.send.call(this.env, t, "POST") + } + } + + return new class { + constructor(t, e) { + this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) + } + + isNode() { + return "undefined" != typeof module && !!module.exports + } + + isQuanX() { + return "undefined" != typeof $task + } + + isSurge() { + return "undefined" != typeof $httpClient && "undefined" == typeof $loon + } + + isLoon() { + return "undefined" != typeof $loon + } + + toObj(t, e = null) { + try { + return JSON.parse(t) + } catch { + return e + } + } + + toStr(t, e = null) { + try { + return JSON.stringify(t) + } catch { + return e + } + } + + getjson(t, e) { + let s = e; + const i = this.getdata(t); + if (i) try { + s = JSON.parse(this.getdata(t)) + } catch { + } + return s + } + + setjson(t, e) { + try { + return this.setdata(JSON.stringify(t), e) + } catch { + return !1 + } + } + + getScript(t) { + return new Promise(e => { + this.get({ + url: t + }, (t, s, i) => e(i)) + }) + } + + runScript(t, e) { + return new Promise(s => { + let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); + i = i ? i.replace(/\n/g, "").trim() : i; + let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); + r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; + const [o, h] = i.split("@"), n = { + url: `http://${h}/v1/scripting/evaluate`, + body: { + script_text: t, + mock_type: "cron", + timeout: r + }, + headers: { + "X-Key": o, + Accept: "*/*" + } + }; + this.post(n, (t, e, i) => s(i)) + }).catch(t => this.logErr(t)) + } + + loaddata() { + if (!this.isNode()) return {}; + { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e); + if (!s && !i) return {}; + { + const i = s ? t : e; + try { + return JSON.parse(this.fs.readFileSync(i)) + } catch (t) { + return {} + } + } + } + } + + writedata() { + if (this.isNode()) { + this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); + const t = this.path.resolve(this.dataFile), + e = this.path.resolve(process.cwd(), this.dataFile), + s = this.fs.existsSync(t), + i = !s && this.fs.existsSync(e), + r = JSON.stringify(this.data); + s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) + } + } + + lodash_get(t, e, s) { + const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); + let r = t; + for (const t of i) + if (r = Object(r)[t], void 0 === r) return s; + return r + } + + lodash_set(t, e, s) { + return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) + } + + getdata(t) { + let e = this.getval(t); + if (/^@/.test(t)) { + const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; + if (r) try { + const t = JSON.parse(r); + e = t ? this.lodash_get(t, i, "") : e + } catch (t) { + e = "" + } + } + return e + } + + setdata(t, e) { + let s = !1; + if (/^@/.test(e)) { + const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), + h = i ? "null" === o ? null : o || "{}" : "{}"; + try { + const e = JSON.parse(h); + this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) + } catch (e) { + const o = {}; + this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) + } + } else s = this.setval(t, e); + return s + } + + getval(t) { + return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null + } + + setval(t, e) { + return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null + } + + initGotEnv(t) { + this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) + } + + get(t, e = (() => { + })) { + t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.get(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { + try { + if (t.headers["set-cookie"]) { + const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); + s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar + } + } catch (t) { + this.logErr(t) + } + }).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + })) + } + + post(t, e = (() => { + })) { + if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { + "X-Surge-Skip-Scripting": !1 + })), $httpClient.post(t, (t, s, i) => { + !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) + }); + else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { + hints: !1 + })), $task.fetch(t).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => e(t)); + else if (this.isNode()) { + this.initGotEnv(t); + const { + url: s, + ...i + } = t; + this.got.post(s, i).then(t => { + const { + statusCode: s, + statusCode: i, + headers: r, + body: o + } = t; + e(null, { + status: s, + statusCode: i, + headers: r, + body: o + }, o) + }, t => { + const { + message: s, + response: i + } = t; + e(s, i, i && i.body) + }) + } + } + + time(t, e = null) { + const s = e ? new Date(e) : new Date; + let i = { + "M+": s.getMonth() + 1, + "d+": s.getDate(), + "H+": s.getHours(), + "m+": s.getMinutes(), + "s+": s.getSeconds(), + "q+": Math.floor((s.getMonth() + 3) / 3), + S: s.getMilliseconds() + }; + /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); + return t + } + + msg(e = t, s = "", i = "", r) { + const o = t => { + if (!t) return t; + if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { + "open-url": t + } : this.isSurge() ? { + url: t + } : void 0; + if ("object" == typeof t) { + if (this.isLoon()) { + let e = t.openUrl || t.url || t["open-url"], + s = t.mediaUrl || t["media-url"]; + return { + openUrl: e, + mediaUrl: s + } + } + if (this.isQuanX()) { + let e = t["open-url"] || t.url || t.openUrl, + s = t["media-url"] || t.mediaUrl; + return { + "open-url": e, + "media-url": s + } + } + if (this.isSurge()) { + let e = t.url || t.openUrl || t["open-url"]; + return { + url: e + } + } + } + }; + if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { + let t = ["", "==============📣系统通知📣=============="]; + t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) + } + } + + log(...t) { + t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) + } + + logErr(t, e) { + const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); + s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) + } + + wait(t) { + // console.log(`等待${t / 1000 / 60}分钟`); + return new Promise(e => setTimeout(e, t)) + } + + done(t = {}) { + const e = (new Date).getTime(), + s = (e - this.startTime) / 1e3; + this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) + } + }(t, e) +} \ No newline at end of file diff --git a/小黑盒签到.js b/小黑盒签到.js new file mode 100644 index 0000000..ec5eec6 --- /dev/null +++ b/小黑盒签到.js @@ -0,0 +1,18 @@ +/* +小黑盒签到 v2.2 + +小黑盒签到及日常任务,日收益180H币左右(可抵0.18元) + +自行捉包 +heybox_id在请求参数中 +cookie里面只需要pkey和x_xhh_tokenid +把这三个拼接起来,格式如下。(多账号换行或&隔开) + +export BLACKBOX_COOKIE="heybox_id#pkey=xxxxxx;x_xhh_tokenid=xxxxxx&heybox_id#pkey=xxxxxx;x_xhh_tokenid=xxxxxx" + +每天运行两次 + +cron: 3 3 9,21 * * * +*/ + + var _0xode='jsjiami.com.v7';var _0x434525=_0x2b44;(function(_0x2a4219,_0x366ea9,_0x3cf664,_0x104196,_0x3e319f,_0x30804d,_0x2fbcc6){return _0x2a4219=_0x2a4219>>0x8,_0x30804d='hs',_0x2fbcc6='hs',function(_0x34c802,_0xacfde1,_0x110e45,_0x5c348e,_0x3be60a){var _0x18ed99=_0x2b44;_0x5c348e='tfi',_0x30804d=_0x5c348e+_0x30804d,_0x3be60a='up',_0x2fbcc6+=_0x3be60a,_0x30804d=_0x110e45(_0x30804d),_0x2fbcc6=_0x110e45(_0x2fbcc6),_0x110e45=0x0;var _0x5a4492=_0x34c802();while(!![]&&--_0x104196+_0xacfde1){try{_0x5c348e=-parseInt(_0x18ed99(0xae,'kNO8'))/0x1*(parseInt(_0x18ed99(0xb1,'kNO8'))/0x2)+parseInt(_0x18ed99(0x125,'kNO8'))/0x3+parseInt(_0x18ed99(0x178,'VqjJ'))/0x4+-parseInt(_0x18ed99(0x15a,'jZlT'))/0x5*(-parseInt(_0x18ed99(0xbb,'x$M('))/0x6)+parseInt(_0x18ed99(0xc0,'QRvg'))/0x7*(-parseInt(_0x18ed99(0xc2,'O((('))/0x8)+-parseInt(_0x18ed99(0xb0,'Rm6v'))/0x9+parseInt(_0x18ed99(0x169,'6OUa'))/0xa;}catch(_0x57be05){_0x5c348e=_0x110e45;}finally{_0x3be60a=_0x5a4492[_0x30804d]();if(_0x2a4219<=_0x104196)_0x110e45?_0x3e319f?_0x5c348e=_0x3be60a:_0x3e319f=_0x3be60a:_0x110e45=_0x3be60a;else{if(_0x110e45==_0x3e319f['replace'](/[tLXluxyYpNSPIfRC=]/g,'')){if(_0x5c348e===_0xacfde1){_0x5a4492['un'+_0x30804d](_0x3be60a);break;}_0x5a4492[_0x2fbcc6](_0x3be60a);}}}}}(_0x3cf664,_0x366ea9,function(_0x32d8d0,_0x307b41,_0x2e1bce,_0x972538,_0x27fce5,_0x2eeae9,_0x14917e){return _0x307b41='\x73\x70\x6c\x69\x74',_0x32d8d0=arguments[0x0],_0x32d8d0=_0x32d8d0[_0x307b41](''),_0x2e1bce='\x72\x65\x76\x65\x72\x73\x65',_0x32d8d0=_0x32d8d0[_0x2e1bce]('\x76'),_0x972538='\x6a\x6f\x69\x6e',(0x18be76,_0x32d8d0[_0x972538](''));});}(0xbf00,0x9be61,_0x4678,0xc1),_0x4678)&&(_0xode=0xc1);var cookie=process[_0x434525(0x104,'SL2D')][_0x434525(0xb8,'XW4D')];const axios=require(_0x434525(0x132,'nvEl'));function _0x2b44(_0x25e529,_0x34eef8){var _0x46782d=_0x4678();return _0x2b44=function(_0x2b4480,_0x4db1b4){_0x2b4480=_0x2b4480-0x94;var _0x484cd2=_0x46782d[_0x2b4480];if(_0x2b44['QNeSVI']===undefined){var _0x52a7f5=function(_0x5ca9d8){var _0x193cc0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0x233afe='',_0x1b95c9='';for(var _0x54bf61=0x0,_0x4b32d7,_0x31ead0,_0x5d5a90=0x0;_0x31ead0=_0x5ca9d8['charAt'](_0x5d5a90++);~_0x31ead0&&(_0x4b32d7=_0x54bf61%0x4?_0x4b32d7*0x40+_0x31ead0:_0x31ead0,_0x54bf61++%0x4)?_0x233afe+=String['fromCharCode'](0xff&_0x4b32d7>>(-0x2*_0x54bf61&0x6)):0x0){_0x31ead0=_0x193cc0['indexOf'](_0x31ead0);}for(var _0x8757dd=0x0,_0x1f6a02=_0x233afe['length'];_0x8757dd<_0x1f6a02;_0x8757dd++){_0x1b95c9+='%'+('00'+_0x233afe['charCodeAt'](_0x8757dd)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1b95c9);};var _0x49dbb8=function(_0x447738,_0x2cecdc){var _0x2d0f08=[],_0xb79932=0x0,_0x1524e6,_0x1d43b9='';_0x447738=_0x52a7f5(_0x447738);var _0x1f83d0;for(_0x1f83d0=0x0;_0x1f83d0<0x100;_0x1f83d0++){_0x2d0f08[_0x1f83d0]=_0x1f83d0;}for(_0x1f83d0=0x0;_0x1f83d0<0x100;_0x1f83d0++){_0xb79932=(_0xb79932+_0x2d0f08[_0x1f83d0]+_0x2cecdc['charCodeAt'](_0x1f83d0%_0x2cecdc['length']))%0x100,_0x1524e6=_0x2d0f08[_0x1f83d0],_0x2d0f08[_0x1f83d0]=_0x2d0f08[_0xb79932],_0x2d0f08[_0xb79932]=_0x1524e6;}_0x1f83d0=0x0,_0xb79932=0x0;for(var _0x5b1808=0x0;_0x5b1808<_0x447738['length'];_0x5b1808++){_0x1f83d0=(_0x1f83d0+0x1)%0x100,_0xb79932=(_0xb79932+_0x2d0f08[_0x1f83d0])%0x100,_0x1524e6=_0x2d0f08[_0x1f83d0],_0x2d0f08[_0x1f83d0]=_0x2d0f08[_0xb79932],_0x2d0f08[_0xb79932]=_0x1524e6,_0x1d43b9+=String['fromCharCode'](_0x447738['charCodeAt'](_0x5b1808)^_0x2d0f08[(_0x2d0f08[_0x1f83d0]+_0x2d0f08[_0xb79932])%0x100]);}return _0x1d43b9;};_0x2b44['nALnoo']=_0x49dbb8,_0x25e529=arguments,_0x2b44['QNeSVI']=!![];}var _0x12ae68=_0x46782d[0x0],_0x13342b=_0x2b4480+_0x12ae68,_0x57a056=_0x25e529[_0x13342b];return!_0x57a056?(_0x2b44['MCUkij']===undefined&&(_0x2b44['MCUkij']=!![]),_0x484cd2=_0x2b44['nALnoo'](_0x484cd2,_0x4db1b4),_0x25e529[_0x13342b]=_0x484cd2):_0x484cd2=_0x57a056,_0x484cd2;},_0x2b44(_0x25e529,_0x34eef8);}function formatSecondsTimestamp(_0x4a2099){var _0x51a8ea=_0x434525,_0x42f89d={'qCrgN':function(_0x3955cd,_0x357533){return _0x3955cd(_0x357533);},'ZfssG':function(_0x10d1ca,_0xd447ad){return _0x10d1ca+_0xd447ad;},'RCzvr':function(_0xce9613,_0x33f9f6){return _0xce9613(_0x33f9f6);},'axjVr':function(_0x3a813e,_0x26a675){return _0x3a813e(_0x26a675);}};const _0x52cd7c=new Date(_0x4a2099*0x3e8),_0x4dd6bb=_0x52cd7c[_0x51a8ea(0xd3,')qDB')](),_0x2dab23=_0x42f89d[_0x51a8ea(0x12b,'JjD2')](String,_0x42f89d['ZfssG'](_0x52cd7c[_0x51a8ea(0x186,'gU&3')](),0x1))[_0x51a8ea(0x16d,'SL2D')](0x2,'0'),_0x58424d=String(_0x52cd7c[_0x51a8ea(0x142,'y8dc')]())[_0x51a8ea(0x9c,'WYcb')](0x2,'0'),_0x465ac7=String(_0x52cd7c[_0x51a8ea(0x11d,'61R#')]())['padStart'](0x2,'0'),_0xc3349b=_0x42f89d[_0x51a8ea(0x95,'O(((')](String,_0x52cd7c['getMinutes']())[_0x51a8ea(0xf9,']i!@')](0x2,'0'),_0x34c239=_0x42f89d['axjVr'](String,_0x52cd7c[_0x51a8ea(0xa5,'!Eer')]())[_0x51a8ea(0xf9,']i!@')](0x2,'0');return _0x4dd6bb+'-'+_0x2dab23+'-'+_0x58424d+'\x20'+_0x465ac7+':'+_0xc3349b+':'+_0x34c239;}async function getHkey(_0x9b894f,_0xc85a5d,_0x1133b4=_0x434525(0xe5,'ugsC')){var _0x2f215e=_0x434525,_0x2ced28={'wQNZv':_0x2f215e(0xef,'0gF%'),'dDqbf':'MTIqD','UsIak':'Error:'};const _0x42fe08=_0x2f215e(0xd9,'kPby'),_0x3a7097={'heyboxId':_0x9b894f,'type':_0xc85a5d,'taskName':_0x1133b4},_0x1f0946={'headers':{'Content-Type':_0x2ced28[_0x2f215e(0x152,'ugsC')]},'timeout':0x1388};try{const _0x14f0ac=await axios[_0x2f215e(0xc7,'Cswy')](_0x42fe08,_0x3a7097,_0x1f0946);return _0x14f0ac[_0x2f215e(0xfe,'JjD2')];}catch(_0xd84017){if(_0x2ced28[_0x2f215e(0xbc,'3l6I')]===_0x2f215e(0x143,'ZHwf'))return console['error'](_0x2ced28[_0x2f215e(0x13d,']i!@')],_0xd84017),null;else _0x59e1f6[_0x2f215e(0xfc,'&&(w')](_0x2f215e(0x12a,'lp*5'));}}async function follow(_0x493df5,_0x590927){var _0x11681e=_0x434525,_0x43b8c2={'sPTfZ':_0x11681e(0xb5,'kNO8'),'TeKDJ':function(_0x3c36ad,_0x531809,_0x2c0f4f){return _0x3c36ad(_0x531809,_0x2c0f4f);},'ioaMO':_0x11681e(0x14b,'kNO8'),'AWcph':_0x11681e(0x159,'VqjJ'),'XcvVS':_0x11681e(0x114,')qDB')},_0x1f8d76=_0x493df5[_0x11681e(0x177,'WYcb')]('#'),_0x379fe7=_0x1f8d76[0x0],_0x493df5=_0x1f8d76[0x1],_0x276d76=_0x43b8c2[_0x11681e(0x94,'WYcb')],_0x2e1179=await _0x43b8c2[_0x11681e(0xe3,'t82E')](getHkey,_0x379fe7,0x3);hkey=_0x2e1179[_0x11681e(0xa1,'ugsC')],timestamp=_0x2e1179[_0x11681e(0x188,'3l6I')];var _0x1e1f38={'headers':{'Referer':_0x43b8c2[_0x11681e(0x17e,'T7S1')],'User-Agent':_0x11681e(0x141,'QRvg'),'Host':_0x43b8c2[_0x11681e(0x129,'Sq)V')],'Connection':'Keep-Alive','Accept':_0x43b8c2['XcvVS'],'Cookie':_0x493df5},'timeout':0x1388};try{var _0xa6913a=await axios['post'](_0x11681e(0xf1,'g5Pn')+_0x379fe7+_0x11681e(0x15d,')fWV')+hkey+_0x11681e(0x175,'Sq)V')+timestamp+_0x11681e(0xf2,'J4Fu'),_0x276d76,_0x1e1f38);return _0xa6913a['data'];}catch(_0x17e733){return console['error'](_0x11681e(0xfd,'y8dc'),_0x17e733),null;}}async function getTaskList(_0x55db29,_0x40394){var _0x377b02=_0x434525,_0xe44be4={'PqrTo':_0x377b02(0xe7,']i!@'),'rReOU':function(_0x271d9e,_0x288fec,_0x4d2a60){return _0x271d9e(_0x288fec,_0x4d2a60);},'lATaA':_0x377b02(0x154,'g5Pn'),'rUrVb':_0x377b02(0x120,'gU&3'),'OWJeF':_0x377b02(0xb6,'zbq7'),'zEiyt':_0x377b02(0x187,'WYcb'),'OaOvi':function(_0xa8b1f7,_0x1c1c3f){return _0xa8b1f7!==_0x1c1c3f;},'eKZxM':_0x377b02(0x98,'YDZ@'),'bDJjU':_0x377b02(0xee,'0gF%')},_0x15d399=_0x55db29[_0x377b02(0x172,'lp*5')]('#'),_0x48eec7=_0x15d399[0x0],_0x55db29=_0x15d399[0x1],_0xbd1e6a=await _0xe44be4['rReOU'](getHkey,_0x48eec7,0x2);hkey=_0xbd1e6a[_0x377b02(0x11b,'61R#')],timestamp=_0xbd1e6a[_0x377b02(0xbf,'O(((')];var _0x282db5={'headers':{'Referer':_0xe44be4[_0x377b02(0x10f,'0gF%')],'User-Agent':_0x377b02(0xb9,'3l6I'),'Host':_0xe44be4[_0x377b02(0x127,'J7oR')],'Connection':_0xe44be4['OWJeF'],'Accept':_0xe44be4['zEiyt'],'Cookie':_0x55db29},'timeout':0x1388};try{if(_0xe44be4['OaOvi'](_0xe44be4[_0x377b02(0xa9,'G7^5')],_0x377b02(0x137,'IpmT')))_0x71f417[_0x377b02(0x107,'YDZ@')](_0xe44be4[_0x377b02(0xc8,'J4Fu')]);else{var _0x4d22bf=await axios[_0x377b02(0xff,'61R#')](_0x377b02(0xc1,']i!@')+_0x48eec7+'&imei=4187fb55b1be198a&device_info=XiaoMi%2013%E7%A7%81%E4%BA%BA%E8%AE%A2%E5%88%B6%E7%89%88&nonce=tb6e1k7WqQCIHToyzWzI8Ogq9d0EIgpb&hkey='+hkey+_0x377b02(0x103,')fWV')+timestamp+_0x377b02(0x147,'6OUa'),_0x282db5);return _0x4d22bf[_0x377b02(0x18a,'jZlT')];}}catch(_0x7b46f5){return console['error'](_0xe44be4[_0x377b02(0xa7,'lp*5')],_0x7b46f5),null;}}async function getSignIn(_0x342b7b,_0x547f97){var _0x1fc98e=_0x434525,_0x2ea32c={'KZKaZ':function(_0x952665,_0x55a529,_0x176258){return _0x952665(_0x55a529,_0x176258);},'SEVua':_0x1fc98e(0x160,'mgc0'),'Qcylr':_0x1fc98e(0x135,'T7S1'),'cPioR':'Keep-Alive','hFvej':_0x1fc98e(0xe4,'G7^5'),'tNVEb':_0x1fc98e(0xeb,'T7S1')},_0x46f3c4=_0x342b7b['split']('#'),_0x2b0376=_0x46f3c4[0x0],_0x342b7b=_0x46f3c4[0x1],_0xa3ac8b=await _0x2ea32c[_0x1fc98e(0x17f,'SL2D')](getHkey,_0x2b0376,0x1);hkey=_0xa3ac8b[_0x1fc98e(0x15f,'Hiyz')],timestamp=_0xa3ac8b[_0x1fc98e(0xbf,'O(((')];var _0x81e165={'headers':{'Referer':_0x2ea32c[_0x1fc98e(0x10c,'nvEl')],'User-Agent':_0x2ea32c[_0x1fc98e(0xf6,'Cswy')],'Host':_0x1fc98e(0x118,'&&(w'),'Connection':_0x2ea32c['cPioR'],'Accept':_0x2ea32c['hFvej'],'Cookie':_0x342b7b},'timeout':0x1388};try{var _0x4064c2=await axios[_0x1fc98e(0x16c,'SL2D')](_0x1fc98e(0x168,'&&(w')+_0x2b0376+'&imei=4187fb55b1be198a&device_info=XiaoMi%2013%E7%A7%81%E4%BA%BA%E8%AE%A2%E5%88%B6%E7%89%88&nonce=tb6e1k7WqQCIHToyzWzI8Ogq9d0EIgpb&hkey='+hkey+_0x1fc98e(0x138,']^kT')+timestamp+_0x1fc98e(0xf2,'J4Fu'),_0x81e165);return _0x4064c2[_0x1fc98e(0xaa,'3l6I')];}catch(_0x17f8ac){return console[_0x1fc98e(0xd4,']^kT')](_0x2ea32c[_0x1fc98e(0x123,'!Eer')],_0x17f8ac),null;}}async function doTask(_0x56b27f,_0x416d31){var _0x50defc=_0x434525,_0x41cff4={'yXick':'10|0|8|2|6|3|13|4|9|11|12|1|5|14|7','zGZsQ':_0x50defc(0xa0,'y8dc'),'PKXNe':function(_0x131bf0,_0x35120e,_0x24a621,_0x503a6f){return _0x131bf0(_0x35120e,_0x24a621,_0x503a6f);},'vHbWr':_0x50defc(0x14d,'kPby'),'kPYOK':_0x50defc(0x17d,'YDZ@'),'cboNw':_0x50defc(0xf0,'Hiyz'),'EJPEX':_0x50defc(0x18c,'kNO8'),'uJsPS':_0x50defc(0xbe,'kNO8'),'YrsHW':_0x50defc(0xcd,'J7oR'),'WjjML':'Keep-Alive','mupBL':_0x50defc(0x10e,'&&(w')},_0x558906=_0x41cff4[_0x50defc(0x14f,'Rm6v')][_0x50defc(0xd2,'x$M(')]('|'),_0x218d1b=0x0;while(!![]){switch(_0x558906[_0x218d1b++]){case'0':var _0x3f3ec5=_0xa82200[0x0];continue;case'1':_0x198f93['append'](_0x41cff4[_0x50defc(0x9a,'IpmT')],_post_key);continue;case'2':var _0x80e14f=await _0x41cff4[_0x50defc(0xa4,'61R#')](getHkey,_0x3f3ec5,0x5,_0x416d31);continue;case'3':_time=_0x80e14f[_0x50defc(0xe2,'ZHwf')];continue;case'4':_post_key=_0x80e14f[_0x50defc(0x108,'JjD2')];continue;case'5':_0x198f93[_0x50defc(0x171,'QRvg')](_0x50defc(0xd5,'Cswy'),_post_sid);continue;case'6':hkey=_0x80e14f[_0x50defc(0x119,'J4Fu')];continue;case'7':try{var _0x1d00f5=await axios[_0x50defc(0x10d,'J7oR')](_0x50defc(0x134,'oI9M')+_time+'&session_id=77ee4fea-46d9-4a53-b5ce-5df9cf056b7e&heybox_id='+_0x3f3ec5+_0x50defc(0xd8,'Cswy')+hkey+_0x50defc(0x115,'kNO8')+_time+_0x50defc(0x11c,'kNO8'),_0x198f93,_0x3e4ee5);return _0x1d00f5['data'];}catch(_0x445efc){return console[_0x50defc(0xfa,'7w^w')](_0x41cff4[_0x50defc(0x180,'Cswy')],_0x445efc),null;}continue;case'8':var _0x56b27f=_0xa82200[0x1];continue;case'9':_post_sid=_0x80e14f['sid'];continue;case'10':var _0xa82200=_0x56b27f['split']('#');continue;case'11':var _0x198f93=new URLSearchParams();continue;case'12':_0x198f93[_0x50defc(0x12d,'!Eer')](_0x41cff4['kPYOK'],_post_data);continue;case'13':_post_data=_0x80e14f[_0x50defc(0x176,'0gF%')];continue;case'14':var _0x3e4ee5={'headers':{'Referer':_0x41cff4['cboNw'],'User-Agent':_0x41cff4['EJPEX'],'Cookie':_0x56b27f,'Content-Type':_0x41cff4[_0x50defc(0x113,'@H$f')],'Host':_0x41cff4['YrsHW'],'Connection':_0x41cff4[_0x50defc(0x112,'kNO8')],'Accept-Encoding':_0x41cff4['mupBL']},'timeout':0x1388};continue;}break;}}async function main(){var _0x1ab581=_0x434525,_0x38661b={'Jdmtu':function(_0x4125bb,_0x4b8f02){return _0x4125bb+_0x4b8f02;},'LHEkn':function(_0xd9bb1d,_0x529a77){return _0xd9bb1d==_0x529a77;},'Jbqpk':'finish','gEYBF':_0x1ab581(0xcc,'T7S1'),'uJDiY':_0x1ab581(0xab,'nvEl'),'WNqCO':function(_0x41f637,_0x119801){return _0x41f637<_0x119801;},'qDkzv':'0|3|1|2|4','xDiZC':function(_0x32b92e,_0x3faafd){return _0x32b92e(_0x3faafd);},'huGDi':function(_0x2c27bd,_0x48afdc,_0x262006){return _0x2c27bd(_0x48afdc,_0x262006);},'kQSjd':function(_0x246da9,_0x5c28fe){return _0x246da9+_0x5c28fe;},'Zrrgh':_0x1ab581(0xd6,'t82E'),'IHlhZ':function(_0x4163eb,_0x466133){return _0x4163eb==_0x466133;},'SYigF':'请重新登录','LAsQm':function(_0x1a703e,_0x13fb15){return _0x1a703e!==_0x13fb15;},'varfh':_0x1ab581(0x163,'ugsC'),'RWXsY':'--开始做分享贴子任务--','qCvyx':_0x1ab581(0xd7,'@H$f'),'QIyil':function(_0x5afc2f,_0x14e9f1){return _0x5afc2f==_0x14e9f1;},'qNyVt':_0x1ab581(0x126,'nvEl'),'cRpAC':_0x1ab581(0x10a,'oI9M'),'PmurB':_0x1ab581(0xea,'x$M('),'JnwKe':'--开始做分享游戏详情任务--','AfYUJ':function(_0x29efaf,_0x1e9829,_0x5265ac){return _0x29efaf(_0x1e9829,_0x5265ac);},'ihqaS':_0x1ab581(0xa8,'oI9M'),'BDoTy':_0x1ab581(0x146,'61R#'),'qezkY':function(_0x24a049,_0x5fb6ce){return _0x24a049===_0x5fb6ce;},'JIsSt':_0x1ab581(0x164,'7w^w'),'kIfRo':_0x1ab581(0xa6,'gU&3'),'ukUEr':_0x1ab581(0xa3,'JjD2'),'fgNTd':_0x1ab581(0xb3,'oJJX'),'dFRCU':function(_0x40f7e1,_0x5cbcba,_0x5ccd7a){return _0x40f7e1(_0x5cbcba,_0x5ccd7a);},'HtDWs':_0x1ab581(0x162,'oI9M'),'mckeE':_0x1ab581(0xe0,'J4Fu'),'pjRlt':function(_0x27958a,_0x208323){return _0x27958a+_0x208323;},'dbTSK':_0x1ab581(0xb7,'oJJX'),'DYbxB':function(_0x323cbe,_0x3cb868){return _0x323cbe===_0x3cb868;},'lLDYv':_0x1ab581(0x13b,'jZlT'),'bHPsA':_0x1ab581(0xca,'xe[Q'),'HZylu':function(_0x41e32f,_0x47b354){return _0x41e32f<_0x47b354;},'scAjJ':function(_0x202380,_0x25c22f){return _0x202380==_0x25c22f;},'lwoEa':_0x1ab581(0x12c,'J4Fu'),'cTZLf':_0x1ab581(0x165,')qDB')};if(cookie[_0x1ab581(0xce,'Sq)V')]('&'))var _0x39ae1a=cookie[_0x1ab581(0xe8,'ZHwf')]('&');else var _0x39ae1a=[cookie];console['log']('找到'+_0x39ae1a[_0x1ab581(0xf7,'ugsC')]+_0x1ab581(0x144,'c%tG'));for(var _0x208bb2=0x0;_0x38661b[_0x1ab581(0x170,'G7^5')](_0x208bb2,_0x39ae1a[_0x1ab581(0x17b,'c%tG')]);_0x208bb2++){follow(_0x39ae1a[_0x208bb2],_0x208bb2+0x1),console[_0x1ab581(0x16b,'J7oR')](_0x1ab581(0x136,'oJJX'));var _0x3b29d1=await _0x38661b[_0x1ab581(0x109,'T7S1')](getSignIn,_0x39ae1a[_0x208bb2],_0x38661b[_0x1ab581(0x148,'Cswy')](_0x208bb2,0x1));if(_0x3b29d1[_0x1ab581(0x13e,')fWV')][_0x1ab581(0xd1,'IpmT')]==_0x38661b[_0x1ab581(0x189,']^kT')])console[_0x1ab581(0x96,']i!@')]('账号'+_0x38661b[_0x1ab581(0x157,'kPby')](_0x208bb2,0x1)+_0x1ab581(0x13f,'jZlT'));else{if(_0x38661b['IHlhZ'](_0x3b29d1[_0x1ab581(0x11a,'WYcb')],_0x38661b[_0x1ab581(0xa2,'T7S1')]))console['log']('账号'+_0x38661b[_0x1ab581(0x11e,'0gF%')](_0x208bb2,0x1)+_0x1ab581(0xf8,'oI9M'));else{if(_0x38661b[_0x1ab581(0x14a,'G7^5')](_0x1ab581(0x117,'gU&3'),_0x38661b[_0x1ab581(0xda,'ZHwf')]))console[_0x1ab581(0x166,'Rm6v')]('账号'+_0x38661b[_0x1ab581(0x151,']^kT')](_0x208bb2,0x1)+_0x1ab581(0x150,'Rm6v'));else var _0x24b377=_0x397336[_0x1ab581(0xdd,'Q7pS')]('&');}}console['log'](_0x38661b[_0x1ab581(0x13c,'kNO8')]);var _0x3b29d1=await doTask(_0x39ae1a[_0x208bb2],_0x38661b[_0x1ab581(0x185,'XW4D')]);if(_0x38661b['QIyil'](_0x3b29d1['msg'],'')){if(_0x38661b[_0x1ab581(0x11f,'SL2D')]!==_0x38661b[_0x1ab581(0x100,'lp*5')])console[_0x1ab581(0x15b,'t82E')](_0x38661b['PmurB']);else var _0x3011af=[_0x2162cf];}else console[_0x1ab581(0x149,'xe[Q')](_0x3b29d1);console['log'](_0x38661b['JnwKe']);var _0x3b29d1=await _0x38661b[_0x1ab581(0x10b,'ugsC')](doTask,_0x39ae1a[_0x208bb2],_0x38661b[_0x1ab581(0xb4,'IpmT')]);if(_0x38661b[_0x1ab581(0xaf,']^kT')](_0x3b29d1['msg'],''))_0x38661b['BDoTy']==='TXnAI'?_0x7c0681[_0x1ab581(0x181,'mgc0')]('账号'+_0x38661b[_0x1ab581(0x161,'t82E')](_0x1a942f,0x1)+'\x20->\x20签到成功!'):console['log'](_0x38661b[_0x1ab581(0xf3,'x$M(')]);else{if(_0x38661b[_0x1ab581(0x155,'LFER')](_0x38661b['JIsSt'],_0x38661b[_0x1ab581(0xdf,'JjD2')]))console[_0x1ab581(0xba,'oI9M')](_0x3b29d1);else{var _0x34cd3c=_0x225336[_0x3d87a4][_0x1ab581(0xbd,'LFER')][_0x324bc0][_0x1ab581(0x110,'Rm6v')],_0x482e56=_0x8417bd[_0x181f4][_0x1ab581(0x133,'J4Fu')][_0x5578d4][_0x1ab581(0xd1,'IpmT')],_0x4faa19=_0x280a38[_0x3e0ff8][_0x1ab581(0xd0,'QRvg')][_0x5b6cae]['task_end_time'],_0x38fae0=_0x535d8b(_0x4faa19);_0x1173ac['log'](_0x1ab581(0x182,'Cswy')+_0x34cd3c+_0x1ab581(0xb2,'LFER')+(_0x38661b[_0x1ab581(0x14e,'J4Fu')](_0x482e56,_0x38661b[_0x1ab581(0x13a,'lp*5')])?_0x38661b['gEYBF']:_0x38661b['uJDiY'])+_0x1ab581(0xcb,'JjD2')+_0x38fae0);}}console[_0x1ab581(0x179,'WYcb')](_0x38661b[_0x1ab581(0xe6,'IpmT')]);var _0x3b29d1=await doTask(_0x39ae1a[_0x208bb2],_0x38661b[_0x1ab581(0x15c,'Cswy')]);_0x38661b[_0x1ab581(0x130,'!Eer')](_0x3b29d1['msg'],'')?console['log'](_0x38661b['PmurB']):console[_0x1ab581(0x17c,'LFER')](_0x3b29d1);console[_0x1ab581(0x12e,'kNO8')](_0x38661b[_0x1ab581(0x12f,'WYcb')]);var _0x3b29d1=await _0x38661b[_0x1ab581(0xc4,'T7S1')](doTask,_0x39ae1a[_0x208bb2],_0x38661b[_0x1ab581(0x105,'ZHwf')]);if(_0x3b29d1['msg']=='')console[_0x1ab581(0xfc,'&&(w')](_0x38661b[_0x1ab581(0x145,'Hiyz')]);else{if(_0x38661b['mckeE']!==_0x38661b[_0x1ab581(0xad,'lp*5')]){_0x50dce6[_0x1ab581(0xf5,'lp*5')](_0x1ab581(0xf4,'JjD2'));for(var _0x2f14a3=0x0;_0x38661b['WNqCO'](_0x2f14a3,_0x461c7f[_0x5c0037]['tasks'][_0x1ab581(0xec,']^kT')]);_0x2f14a3++){var _0x2007f2=_0x38661b[_0x1ab581(0x156,'zbq7')][_0x1ab581(0x158,'17yJ')]('|'),_0x3ed748=0x0;while(!![]){switch(_0x2007f2[_0x3ed748++]){case'0':var _0x360281=_0x346e4d[_0x4f37d9][_0x1ab581(0x16e,'SL2D')][_0x2f14a3][_0x1ab581(0xdc,'mgc0')];continue;case'1':var _0x41ac09=_0x154186[_0x42634c][_0x1ab581(0x16f,'Sq)V')][_0x2f14a3][_0x1ab581(0xdb,')qDB')];continue;case'2':var _0x2dbb62=_0x38661b['xDiZC'](_0xcb222e,_0x41ac09);continue;case'3':var _0xc48815=_0x3ecb8c[_0x1461cc][_0x1ab581(0x153,']i!@')][_0x2f14a3]['state'];continue;case'4':_0x2b0420['log']('任务:'+_0x360281+'\x20->\x20'+(_0x38661b[_0x1ab581(0x15e,'t82E')](_0xc48815,_0x1ab581(0x122,'!Eer'))?_0x38661b[_0x1ab581(0xe1,']^kT')]:_0x1ab581(0x9e,'@H$f'))+'\x20--\x20结束时间'+_0x2dbb62);continue;}break;}}}else console['log'](_0x3b29d1);}var _0x17cb77=await getTaskList(_0x39ae1a[_0x208bb2],_0x38661b['pjRlt'](_0x208bb2,0x1)),_0x15beec=_0x17cb77[_0x1ab581(0x9b,'G7^5')][_0x1ab581(0x9d,'y8dc')][_0x1ab581(0x167,'kPby')];console['log'](''+_0x15beec);var _0x586535=_0x17cb77['result'][_0x1ab581(0xc3,'O(((')];for(var _0x45382f=0x0;_0x38661b[_0x1ab581(0x140,'g5Pn')](_0x45382f,_0x586535['length']);_0x45382f++){if(_0x38661b[_0x1ab581(0xe9,'kPby')](_0x586535[_0x45382f]['title'],_0x38661b[_0x1ab581(0x173,'VqjJ')])){if(_0x38661b[_0x1ab581(0x128,'ZHwf')](_0x38661b[_0x1ab581(0xc9,'0gF%')],_0x38661b[_0x1ab581(0x18b,'jZlT')])){console[_0x1ab581(0x14c,'3l6I')](_0x38661b[_0x1ab581(0x121,'YDZ@')]);for(var _0x1a7c3d=0x0;_0x38661b['HZylu'](_0x1a7c3d,_0x586535[_0x45382f]['tasks'][_0x1ab581(0xfb,'y8dc')]);_0x1a7c3d++){var _0x474958=_0x586535[_0x45382f][_0x1ab581(0x102,'oJJX')][_0x1a7c3d][_0x1ab581(0x9f,'G7^5')],_0x10510f=_0x586535[_0x45382f][_0x1ab581(0x174,'WYcb')][_0x1a7c3d]['state'];console['log'](_0x1ab581(0xc6,'SL2D')+_0x474958+_0x1ab581(0x139,'kNO8')+(_0x10510f==_0x38661b[_0x1ab581(0x99,'XW4D')]?_0x38661b['gEYBF']:_0x38661b['uJDiY']));}}else _0x7e7d6[_0x1ab581(0x131,'gU&3')](_0x490961);}else{if(_0x38661b[_0x1ab581(0x183,'zbq7')](_0x586535[_0x45382f]['title'],_0x38661b[_0x1ab581(0x106,'y8dc')])){console[_0x1ab581(0x96,']i!@')](_0x38661b[_0x1ab581(0x111,'Q7pS')]);for(var _0x4639a9=0x0;_0x4639a9<_0x586535[_0x45382f][_0x1ab581(0x184,'zbq7')][_0x1ab581(0xc5,'XW4D')];_0x4639a9++){var _0x578465=_0x1ab581(0x116,'mgc0')['split']('|'),_0x350eb6=0x0;while(!![]){switch(_0x578465[_0x350eb6++]){case'0':var _0x1191d6=_0x38661b['xDiZC'](formatSecondsTimestamp,_0x467cbf);continue;case'1':var _0x10510f=_0x586535[_0x45382f]['tasks'][_0x4639a9]['state'];continue;case'2':var _0x467cbf=_0x586535[_0x45382f][_0x1ab581(0x16e,'SL2D')][_0x4639a9][_0x1ab581(0x97,'oJJX')];continue;case'3':var _0x474958=_0x586535[_0x45382f]['tasks'][_0x4639a9]['title'];continue;case'4':console[_0x1ab581(0x14c,'3l6I')]('任务:'+_0x474958+_0x1ab581(0x124,'Cswy')+(_0x10510f==_0x38661b['Jbqpk']?'已完成':_0x38661b[_0x1ab581(0xcf,'ZHwf')])+'\x20--\x20结束时间'+_0x1191d6);continue;}break;}}}}}console[_0x1ab581(0xba,'oI9M')]();}}main();function _0x4678(){var _0x4edc4b=(function(){return[_0xode,'upjusuSRjiIxaCSmPLifL.ItcytNoXmYl.xxv7fY==','W5rPfKFdJqJdR23cLmkYAW7cKCkeDSkDW4m1W5z8WRHoW7HTuKHOW4iiFdrDj8oydIpdMmoViWZdJNnVWQb1jSoACerYw23cOINcGCocW5f0W5PZa8oCja','EIxcJwRdQ8oVWQ7dUuLtBcNdR2v1WOn3ymkBj8oeaSoUvmogWPJcVHTTamohdCo3WODuxe3dGWhcR8oNW7u','W5RdN8o6Cgy','A1dLV7/LPj3MO4BMNB7PMPlML6FKUQtLIyVLIyVOOyWOW7m','W4NdLtW','WOBcN0zuwW','W6ORq0JdOKu','FCkoBCo1W7ddISk+tSkAcUI8QUAFIW','WRCDCCkCrCoFWQCM','pmkmW6PWoq','DmkfW77cIx9Y','W7xcGbO','xCksW6lcGxKG','iHZcI8k3','n8ozW50','W4BdQcVdLb8','WRf8hH7cRXrMW6xdUmkBwmo8WOi','DwBcRCorWQy','WRRdPSoiWPpcT8oCDXJdQuxdQIxcOWGlW6BcNmkKq8oGW5SFWRRdOxexFmk2EmkmWQVcRttdUdZdNCk4WPJcSeRcKSoGsCoDWPHFuCo4mKNdOL59zsb/crjOW7ZcPSkKrMRdTw4PgmkVWRpcTmkLkbSRB37cPNxdOCoTWP9+iu5mtYeFW64chSoNWOqSW5PqeCoSWQe5','W7umzW','vrVcJxpdIG','DmkxW7/cQ2O','W5CHzq','lrJcHG','W6JcJv1Fua','d8oHjmkVW5S','W4CODhRdNa','yCoFr17cPq','W5/dOqCl','W77cLrqg','uCoyffiU','hM/cHrGZ','WOD1WQZcQ1y','W6vYnGK1','ACo1ph7cRG','WOBcMYK','WPr3lXSnWOyVlCo+FXTMv8o9qSoDc2bUWRVcVSkgnCoKW7ddNfGNtCoRx8oRfmollgOBCMOjtmo/cIi0W6SNamonW5rLW6xdSSoifN3dH8oMWRhcGgi2WQRcQL/cJ8oEaxdcNSoUaCkojXvLcJzqpmkyE8oMW6ldR8kqgGT0ku0uxSkpWPpdSvtcJ8ojB8ka','WORdHdCMWOvOWQmZBG','W7pdOctdQ8kv','W7JcNXryt8obW5RdGhRdUJxcVmkRr8oKfG','ncRcNY4','WRerkW','omoxW4X5','WPr8k3LnW41NBSkGvHrSs8o3r8kerx1iWRBcOSkHhSoLW6NdMaOlsSkPvCoBhmoFEI8SDh8crSoP','n8ozW51iW7VdU8kBtG','vSoie1Kl','W6eSAmk6W50','W4pdIshcKSk4W53dU0ldIcdcOmkxW5ZcV0Sd','W5KguJJdSW','rwWwvSkFW5u','v0SUESko','W7FdKqey','WOeRBNviW4LQo8kVxcbLuq','FSo/qN/cOa','W53dMWyPWOq','wtBcQ1ZdUW','WQldRCoBxmop','W4RdKE+9MG','nZ7cJCkXsa','6zIm5PA35lIb5yU2','qNuiwSkcW5K','W553oW','WROfaHBcHq','AK0uv8k2','W47dLI8','u8oIEetcTW','kcdcItZcRa','nCoxj8kLW6dcN8o+cSkxdSkzWRusW6tcSGmzuCoEWQ0/WPNdLCk1jfTkrmkkWOBcJSoBESoCWRLMWPpcNSoEESoNbJC3sSkBW49VeSk7q8kQDSkWW7hcGsFcImkNr8k6bW','W43cL2bYvtyzW4KyW6jOW6RcGtKNWPj4WOHFhCoUpmo9gwNdV8o6kbLOWOLKWPVdTmkVW43cTCo1pCkZASoqWQ9LWOu9C8k3W6m9i8oXmmoMASkJzmkzWQTBWR1ZWQLUW4PTnmoDxSkErq3cKXBdObaDxWyowfmutti8arRdQve/W5/dIfVcRaNcKmoY','lcRLV57LPBhLGO/NRPpLIPNKUR3LI60LWO0','i8oXWQ9DWOS','W6PvWQLvkXNdRCozWQ0FWR/dGh4+WPvHWRfjW40uWRlcR8knW5FcGInDW6PVsXFdR8otW5BcJv3cGs7cU8kFeCojWRJdGZZcPfJcISoyWQZdO8kEyavtxdzJW6pcGmkPWPhcJmkzsLGEW4qcjCokWPPkfhpdG8oFWQBcSu3cMbhcLCoVp8kbgxeQWQPpymkYWOZcMNNdL8kaW65sia','WPi1yMq','W6/dMcRdPtC','yCkZWRO6W7a','W6bpbdCG','WPipxmkUwG','W67dRmoiWRNcR8or','aSorW6fj5lMF5PEO5BEM562b5yQu6l6t772K','W6Tte3tdSq','W5VcNmotENyRDglcGmkOW7DTFJrNW6HAW7xcIbBdG8kIW5z6tmoDFg4uWOldQSo0gLbOxG/cKCokW5RdVsKrECo4r3rZnIhcUb1Mc8ovsSkrdSo3W6/dGKnXsSkoCSolg8oEW7xdVCkJh8odWQ9sWPCMW7S7W4XkhLfOqCoddmkdWO0YWPRcU8oTW4eKW5ldLq','F8kfW6tcQMPUwa'].concat((function(){return['udVcGfxdVq','5lMb6lAn5y6L','pCoauCk5W68','aCofW4DKW50','WOddVLHkvmoAWOjuymomjx1IWPiwptdcHK0UvIddLszlfWutbmovW6SBgCoIW7mepZbrWOGpWP4','WRZcRwXstq','W6u3WRW','WRLXWP0bwG','W5PSkdrdW5bWkCkZv1TVrmoQqCoqtdzsWRVcOmo2','W6vTWRm','W7XFW5ldQ09N','eaNcVZZcSq','e17cMbC9','sIVdJ1tNRkJLIjBMIz7LIPRVVyW','WQDRWOLGoW','W7eFy3xdOa','WRmDzSkKqG','W5rPfKFcHb3dRYpcHCkRle3cImkvFCkBW4P+W5X7WRbp','WOSBWO0CAG','W71KWOZcIqC','W7njW43dSeG','W4RdPSo9W5r/','vfurWR3dTmkBWOtcMH7cRmkhhsTvWOpcMG','emomWQ8nW7nbrxm','W44EWO8','WQlcL2P9wW','WRRdOmowWQNcQSkym0ZdRdpdOIpdPfiaWRpdMmk5lCk2WPaHW6JdVgqekmkuC8k3WRdcRdVdSYFdVCkoWPRcS27cNSkRd8kYW50vbmoyoahdJaSXmxr8i1usW4JcGSoZD0lcV0uSbmoiWOddTmkwAvCbngBcR2pdT8kbWPPOvL8laNfwWRihamk+W5PKW6zbrCoTW7nTt2aqvuOUW7ZdVMbqkmolW794een+W4GbzLvCnCoaW6ldUZxdN1hcLJ1FWPKeW70','W645WQ3cHxa','bCogqCkY','W5hdJhiQWO07WRWUkIFdOJjfCmk1WOm7WQBcJmoQW51B','W6GvWOxcMMS','k8okimk8W6FdOSkWsmkwpCkmWRPx','W58RwgldHa','hmkYW69DlW','WOhcMEw8G+wKUoAISoADRUMyVoAwLos5VowlLowkO+IIT8kRWPm','bMNcLG','W4XEW4xdTLm8h3i','W7hcMWKgrmksWPtcGhpdRZxdUSk2amoMf8krWOtdQueVsshcVmkbDcJcHSkZWROYhmkZBmkJA8kAWOxdQSo5rrSUW7SJWOJcPCkvWQ5NWRhcRCon','WPhcQbXgwCorWOOttCoti2Dj','W61sEsVcKvfrkmkK','W4pdOrm','W7Chzq','W6adDCk/W50lbmou','W6qdySkhW5O','WPFdM8olr8ou','WQj+WP8tEa','W7FcG8ozDNqJ','W5BdIJFdVcG','uuCSW4ddHW','WQGdpYNcKG','W4xdLColC8otW4f2BSo6WR/dSgCElmovW6FdICkrWRpdK8kgzmkUbYVcHWtdPSo6umkuemk1wIa3W5eAF8oVWRpdUCo7W6hdTaBdHKftW5vEWQWXWO5sxcSTWR84W7KFWRZcNmkXWQ90hIddKNZcJKlcGKVdG3FcOSkkWONcQcxdVMpcOmkbuwvCWPZdSglcG8ktW6RdOM/cQhdcPtW','wCo4nfi','WQ8sicVcLq','bXvnWQFcU8olW5pcUtRcKmk3iqa','WRankW','mZFcRSoEWRpcOCo4cG','b8oopmkBBmk0','WPyrWPa','W58VDIO','W6NcL3TwDG','W5S4wSknW7m','WQhcTf1VwW','W5xdL2e','5lIS5yMD77YL','W79dWQBcMtS','W7HbWPtcMai','WRVcUSoxWOZcPW','W4xdNdZdSCkVW5RdRKu','W7znzG','W71RWRNdMMDBW5W7lG','WPziWQHTnW','rSkDWQSi','tSkWWPSWW6m','W793jI0vWPm+z8o2eeuIzmoIw8ovse9uWRBcHSkWnCkYWRxcILjiemk5dCkSnSoNxL8ipsymqmo6g10hW7C0dSkFWPaQW4tdS8owhdBdJCk6W5RdHYL0W7FdSqldLSorfMFdMCkZu8kUlXXQrw5roSkfF8o7W6pdV8oslHjXabfui8oxW5tcGrhdImku','WQ8YgctcUW','s8oWqmoAba','WQStCG','DwBcRCorWORcImohiHn8W4NcLmke','W5ORDXVdKW','WOdcM8oqWOxcTa','omotWOb+WRS','WODvWP0LwW0','WQWdkbhcLv9VjG','BCktW7xcNa'].concat((function(){return['5PY25AYZ5OMF','WOfzWPO8uG','C8kfW6K','W64Lsfy','W5pcOxn8FW','nrxcNSkKy8oCWQn8oSkPm0LOWRS+iW','amo3W7foW7e','rgamBmkjW54/W4XeW6C','WO/cLow9IowLT+wcMUwkSUs4SEA4LEAkR+IUGEs4VUs4HowiMmk8bq','W4FdVHhdVWK','lSolmSkNW7BdOSkWsmkwk8kiWQbDW7xcTW','WPb7WRqOEG','W61JWQddNG','5PYy5AYw5OIb','DSkMW68+W53cQXFcSCoRFeZcNG','W4JdMtddSbK','WOmTAxCOWPqUdCkHCW','WOvYWRzIbq','uJ7dGufGeh1gbbjYvLS','WOmOBxqYWOu3o8kruq','W5PtW4Lx','lcRLV57LPBhMU63MI6lMPlxLJjpLGjdNLzhcKCojWPlKU5xLIOFcN8kF','k8o8WQTSWRK','W5r3mcGwWOG2jSkKyrXMgmkJgCkkhcabW6FdUq','W4DfWOlcG1ZcUvbEW5FdIq','5Q+o5PEI5lIL5yIB','WOJcTCoGWRBcLbBcT8k8WOKReCkfW5jMpG','W4rTWQ7dLNHdW5X5A8orWPzWvSkdcmoBW6/dIcWmW4hdUcFcJmkHwxVdKCk+FSo9jCo9W7uLWOtcUaCQlmk0hcFcK8oLWPuJW5hcJ1BdQCoUW7dcSSkCpSoYW4vitmkoW6FdImk2lYHOFCkOW740BMfGWQtcLmkgWRbYW77cTJTYWOrkBSo4WPmfAwv/bGK+ahBdMG','mComna','WRVcGmk3mbBcRqNdSCkDydlcO8o2','W61gWQxdNxi','WO4FWOqCqa','W5nOlcGqWPW+pmkQurSTxCk/xmoowJvxWRVcV8k0BmoOW7ldLqaiqmoGsCoHgq','BCoAv8ojbConWPfXFa','WQFdG8kCEMOOwtFdHa','WQ8iyCk/qSkeW7P9WOHdlYJdJSkVq8o+nCocegRcRbFdK8oUW70hW4RdH2XDbmodmSoKC8ksWQr/pCk1W6j2W6/dJ8oCWPPmWRXA','lCkbd8kFqCkpWPrVxbnPW4u','BCossCohkCovWPLVEa','W6tcVKHyBa','WQBcNmopWPlcQZW','5lMR5yUd77Yl','WQFcK0Xm','dddcIapcSa','uCovbgOz','WQr15B+B5AAH5Qoe5P+75QYR5PAR5lMH5yML5yMF6kchW6VdUq','zLddKSo257Uv5P+e5Ps06zEL','5BwY5A205OIk','W4VdRWaEW4GEwmk5W4VdPSoUWQ3cHNTSlWG','WORdLmoBqmosW5XJEa','AcxcJu3dOa','W6lcKSoAEgK','mCoGWRT5WO8','W7NdGSoJA1a','W4VdKxFcTqxdPWa7W6iuW4y','WQLiWQHLlq','WQtcLvS','W4SwWOBcGwZdPa','B8oxlLZcMaPLW5q+W77cRmk9','W7hcLvjDqbSeWOddT08Vq8kRW6FdVuSDCseuW7hdMmkyuCowW47dIwhcOhZcHCoic2fqC8kbWQuxWQ1MW5RcQCk5W7PpcCoIWRK/W5/dP8kyW65mWPfEW4jFkSkgW5NdRtLeW67dR8kuESoqW4hcICk6iSoCrSopWPdcICkzxcuhWQddQCkBvwyDW4mUhmoVW5pcSmoaW5ZcRmk0WRDsl8kxW77cNCorWRKTiSoyW4uClCo/imo5WQ7dQfLbWPFcGSokgmk2W7tdUsbTWO1dbmoNW44cdW','W5fzW5tdTaDYxspcPSohtSoWWQipWQFdHSkUW7H0WPldOMZcVCoKmSoIWPddGCkfWRi','AW7cU0ldKq','W5JdLxdcMc/dRGigW5GbW53cSSoJ','W43dKxi2W5i','WPDrWPRcJKq','B3ldIgBdRSoRWQpcRezzwcddTq','ddtcJmkfCG','dtNcSW3cUG','WQT/WOnigq','AqBcPehdIIxcLCoaWQi','W7yuWQpcQLq','W58FW4q','W6G7qum','kCoDWRXFWOu','WQGx77Yu','BH/cPu3dJq','W7vLW6xdR1m','W6xdME++JG','W4xcIMH0s2a','WQbFWRrTkWG','kSoqWQxdMJWJcZpcJ8ofW63cQwG','EmoRmLWDW5u','xmoPmf8gWOXAmCkfEapcVYRcUaqX','bCozumk7WPFdUmomW5tcPmk1ir7cRConW7mYsSoLWPhdU8kBAq'];}()));}()));}());_0x4678=function(){return _0x4edc4b;};return _0x4678();};var version_ = 'jsjiami.com.v7'; \ No newline at end of file