""" >TL库:https://github.com/3288588344/toulu.git tg频道:https://t.me/TLtoulu QQ频道:https://pd.qq.com/s/672fku8ge 项目 全棉时代种棉花 入口 #小程序://全棉时代 变量 code #token#备注 多账号换行 变量名 qmzmh """ import os import requests from datetime import datetime, timezone, timedelta import json import time import random # 配置参数 base_url = "https://hxxxy.gov.cn" user_agent = "Mozilla/5.0 (Linux; Android 11; ONEPLUS A6000 Build/RKQ1.201217.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/116.0.0.0 Mobile Safari/537.36 XWEB/1160065 MMWEBSDK/20231201 MMWEBID/2930 MicroMessenger/8.0.45.2521(0x28002D3D) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 miniProgram/wxdfcaa44b1aa891a7" def get_beijing_date(): beijing_time = datetime.now(timezone(timedelta(hours=8))) return beijing_time.date() def dq_time(): dqsj = int(time.time()) dysj = datetime.fromtimestamp(dqsj).strftime('%Y-%m-%d %H:%M:%S') print("当前时间戳:", dqsj) print("转换后的时间:", dysj) return dqsj, dysj def get_env_variable(var_name): value = os.getenv(var_name) if value is None: print(f'环境变量{var_name}未设置,请检查。') return None accounts = value.strip().split('\n') print(f'-----------本次账号运行数量:{len(accounts)}-----------') print(f'------全棉时代种棉花-----1.2------') return accounts def create_headers(code, token): headers = { 'host': 'sg01.purcotton.com', 'accept': 'application/json, text/plain, */*', 'app-id': 'wxdfcaa44b1aa891a7', 'user-agent': user_agent, 'content-type': 'application/json;charset=UTF-8', 'origin': 'https://sg01.purcotton.com', 'x-requested-with': 'com.tencent.mm', 'sec-fetch-site': 'same-origin', 'sec-fetch-mode': 'cors', 'sec-fetch-dest': 'empty', 'accept-encoding': 'gzip, deflate', 'accept-language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', 'cookie': 'sajssdk_2015_cross_new_user=1', 'code': code, 'token': token, } return headers def jscz(code, token): # 浇水 # 调用hqid函数并获取树木ID及其他信息 tree_id, sunshine, total_sunshine = hqid(code, token) if tree_id is not None: #print(f"获得的树木ID: {tree_id}") # 可以在这里打印阳光信息,如果需要 #print(f"当前阳光: {sunshine}, 总阳光: {total_sunshine}") while True: # 开始一个无限循环 url = "https://sg01.purcotton.com/api/watering" data = {"tree_user_id": tree_id, "water_cnt": 1} # 使用动态获取的树木ID headers = create_headers(code, token) #print(data) try: response = requests.post(url, headers=headers, json=data) response.raise_for_status() response_data = response.json() if response_data.get("code") == 200: # 提取剩余水滴数 remaining_water = response_data["data"]["info"]["sy_water"] print(f"剩余水滴数: {remaining_water}") # 根据剩余水滴数决定是否继续 if remaining_water < 30: # 如果剩余水滴数小于30,则停止 print("水滴不足,停止浇水。") break print("执行浇水操作...") # 暂停1到3秒 time.sleep(random.randint(1, 3)) elif response_data.get("code") == 400: print(response_data.get("msg", "未知错误")) break # 遇到错误时停止循环 else: print("未知的响应code:", response_data.get("code")) print("完整响应:", response_data) break # 如果响应码不是200或400,停止循环 except requests.exceptions.RequestException as e: print(f"请求失败: {e}") break # 请求异常时停止循环 else: print("未能获取树木ID,无法执行浇水操作。") def llhmp(code, token, action, tid): # 添加了tid参数 phone, _ = login(code, token) # 调用login函数,获取电话号码,忽略user_id url = "https://nmp.pureh2b.com/api/purcotton/completetask" headers = { 'Host': 'nmp.pureh2b.com', 'XWeb-Xhr': '1', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'zh-CN,zh;q=0.9', 'code': code, 'token': token, } data = { 'action': action, 'phone': phone, 'from': 'guoyuan' } #print(data) try: response = requests.post(url, headers=headers, data=data) response.raise_for_status() response_data = response.json() # 解析响应数据为JSON action_descriptions = { 'browse_venue': '逛甄选好棉品', 'browse_new_user_zone': '浏览新用户专区', 'browse_community': '社区送福利', 'subscibe': '订阅奖励提醒' } action_description = action_descriptions.get(action, '执行任务') #print(f"执行任务 '{action_description}' 响应内容:", response.text) # 打印响应内容 if response_data.get("code") == 200: print(f"{action_description} 任务成功,暂停一段时间再继续...") time.sleep(random.randint(15, 20)) tjlq_mpjl(code, token, tid) # 在任务成功后调用领取奖励的函数 elif response_data.get("code") == 400: #print() # 打印响应内容 print(f"{action_description} :{response_data.get('msg')}") #tjlq_mpjl(code, token, tid) # 在任务成功后调用领取奖励的函数 else: print("{action_description} 收到未预期的响应,响应内容如下:") print(response_data) except requests.exceptions.RequestException as e: print(f"请求失败: {e}") def tjlq_mpjl(code, token, tid): # 添加了tid参数来指定任务ID 提交 任务 领取奖励 url = "https://sg01.purcotton.com/api/task/receive-task-water" headers = create_headers(code, token) data = {"tid": tid} # 使用传入的任务ID #print(data) try: response = requests.post(url, headers=headers, json=data) # 发送POST请求 response.raise_for_status() # 检查响应状态码 # 解析响应数据 response_data = response.json() if response_data.get("code") == 200: print("奖励领取成功。") # 打印sy_water和get_water data = response_data.get("data", {}) sy_water = data.get("sy_water", "未知") # get_water = data.get("get_water", "未知") # 同上 print(f"剩余水量:{sy_water}, 获取水量:{get_water}") else: print(f"奖励领取失败,错误信息:{response_data.get('msg')}") except requests.exceptions.RequestException as e: print(f"请求失败: {e}") def task_list(code, token): # 任务列表 url = "https://sg01.purcotton.com/api/task/list" headers = create_headers(code, token) today_date = datetime.now().strftime("%Y-%m-%d") # 获取今天的日期,格式为YYYY-MM-DD # 任务ID到任务名称的映射 task_names = { 1: "签到, 1", 2: "不知道1, 0", 4: "三餐福袋, 3", 6: "逛甄选好棉品, 4", 10: "订阅奖励提醒, 1", 13: "浏览新用户, 2", 14: "庄园小课堂, 3", 15: "棉花工厂, 1", 16: "社区送福利, 1" } try: response = requests.get(url, headers=headers) response.raise_for_status() response_data = response.json() today_tasks = [] # 用于存储今天的任务信息 if response_data.get("code") == 200: task_user_info = response_data.get("data", {}).get("task_user_info", []) print("------任务进度条-----------") for task in task_user_info: task_id = task.get('task_id') complete_num = task.get('complete_num') complete_date = task.get('complete_date') # 比较任务完成日期是否为今天 #print("------任务进度条-----------") if complete_date == today_date: task_name = task_names.get(task_id, f"未知任务 {task_id}") # 获取任务名称,如果未知则显示未知任务和ID print(f"任务ID: {task_id} {task_name}/{complete_num}, 任务时间: {complete_date}") #print(f"{task_name}/{complete_num} 时间: {complete_date}") today_tasks.append(task) print("-----------------") print() return today_tasks else: print(f"获取任务列表失败,错误信息:{response_data.get('msg')}") return [] except requests.exceptions.RequestException as e: print(f"请求失败: {e}") return [] def pdrw(code, token): # 判断任务 """根据任务完成情况执行任务""" try: task_user_info = task_list(code, token) task_completion_limits = { 6: 4,# 任务ID为6的任务只能完成4次 逛甄选好棉品 13: 2, # 任务ID为13的任务只能完成2次 浏览新用户专区 15: 1, # 假设任务ID为15的任务只能完成1次 棉花工厂 4: 3, # 4 3次三餐福袋 7-12 14-17 18-22 16: 1, # ID 16 社区送福利 10: 1, # ID 10 订阅奖励提醒 14: 1, #ID14 #庄园小课堂 1: 1, #ID #签到 } # 先检查所有指定的任务是否已经存在于任务列表中 existing_task_ids = [task['task_id'] for task in task_user_info] #print(existing_task_ids) # 遍历每个任务ID,检查是否需要执行任务 for task_id, max_completes in task_completion_limits.items(): task_info = next((task for task in task_user_info if task['task_id'] == task_id), None) if task_info: complete_num = task_info['complete_num'] if complete_num < max_completes: #print(f"任务ID: {task_id}, 当前完成次数: {complete_num}, 将执行任务并尝试领取奖励。") print() if task_id == 6: llhmp(code, token, 'browse_venue', '6') #today_water(code, token) elif task_id == 13: llhmp(code, token, 'browse_new_user_zone', '13') today_water(code, token) sj_yg(code, token)#收集阳光 syyg(code, token)#使用阳光 # 这里可以添加其他任务ID的逻辑 elif task_id == 15: # 对于任务ID 15的特定处理 complete_task(code, token, '15') elif task_id == 16: llhmp(code, token, 'browse_community', '16') elif task_id == 10: llhmp(code, token, 'subscibe', '10') elif task_id == 14: hdwt_box(code, token, '14') elif task_id == 4: # 对于任务ID 15的特定处理 lq_fd(code, token, '4') elif task_id == 1: lq_fd(code, token, '1') time.sleep(random.randint(1, 5)) elif task_id not in existing_task_ids: #print(f"任务ID: {task_id}, 未在列表中,将尝试执行并领取奖励。") print() if task_id == 6: llhmp(code, token, 'browse_venue', '6') today_water(code, token) elif task_id == 13: llhmp(code, token, 'browse_new_user_zone', '13') sj_yg(code, token)#收集阳光 syyg(code, token)#使用阳光 elif task_id == 15: complete_task(code, token, '15') elif task_id == 16: llhmp(code, token, 'browse_community', '16') elif task_id == 10: llhmp(code, token, 'subscibe', '10') elif task_id == 14: hdwt_box(code, token, '14') elif task_id == 1: lq_fd(code, token, '1') elif task_id == 4: lq_fd(code, token, '4') time.sleep(random.randint(1, 5)) # 添加其他任务ID和类型的逻辑 except requests.exceptions.RequestException as e: print(f"请求失败: {e}") # 任务 数据 def complete_task(code, token, tid): # 棉花工厂 url = "https://sg01.purcotton.com/api/task/complete-manual-task" headers = create_headers(code, token) payload = { "tid": tid, "relate_id": 0, } try: response = requests.post(url, headers=headers, json=payload) response.raise_for_status() # 检查HTTP响应状态码,如果不是200系列,则抛出异常 # 解析响应数据 response_data = response.json() if response_data.get("code") == 200: print("奖励领取成功。") tjlq_mpjl(code, token, tid) else: # 如果响应中的code不是200,打印错误信息 print(f"任务失败:{response_data.get('msg')}") except requests.exceptions.RequestException as e: # 如果请求过程中发生异常,打印异常信息 print(f"请求失败: {e}") def lq_fd(code, token, tid): # 三餐福袋和签到 # 确保tid为整数类型 tid = int(tid) # 将tid转换为整型以确保与整数进行比较 task_name = "未知任务" if tid == 4: task_name = "三餐福袋" #7-12 14-17 18-22 elif tid == 1: task_name = "签到" url = "https://sg01.purcotton.com/api/task/complete-task" headers = create_headers(code, token) data = {"tid": tid} # 使用传入的任务ID try: response = requests.post(url, headers=headers, json=data) response.raise_for_status() # 检查响应状态码 # 解析响应数据 response_data = response.json() if response_data.get("code") == 200: print(f"{task_name} 奖励领取成功。") # 打印sy_water和get_water data = response_data.get("data", {}) sy_water = data.get("sy_water", "未知") get_water = data.get("get_water", "未知") print(f"{task_name} 剩余水量:{sy_water}, 获取水量:{get_water}") else: print(f"{task_name}:{response_data.get('msg')}") except requests.exceptions.RequestException as e: print(f"请求失败: {e}") # 任务 完 # 提取数据 开始 def hqid(code, token): # 获取树木ID和阳光信息 url = "https://sg01.purcotton.com/api/index" headers = create_headers(code, token) try: response = requests.get(url, headers=headers) response.raise_for_status() response_data = response.json() # print("Response JSON:", response_data) # 用于调试 if response_data.get("code") == 200: tree_data = response_data['data']['tree'] user_data = response_data['data']['user'] # 获取用户相关数据 # 获取树木ID tree_id = tree_data.get('id') # 获取阳光相关数据 sunshine = user_data.get('sunshine', 0) # 如果不存在,则默认为0 total_sunshine = user_data.get('total_sunshine', 0) # 如果不存在,则默认为0 # 可以选择打印这些信息 #print(f"树木ID: {tree_id} 当前阳光: {sunshine} 总阳光: {total_sunshine} ") # 根据需要返回所需的数据,这里返回一个包含所有信息的元组 return tree_id, sunshine, total_sunshine else: print(f"请求失败,错误代码: {response_data.get('code')}, 错误信息: {response_data.get('msg')}") return None, None, None # 如果请求失败,返回包含None的元组 except requests.exceptions.RequestException as e: print(f"请求失败: {e}") return None, None, None # 如果发生异常,返回包含None的元组 def login(code, token): # 提取的号码 url = "https://sg01.purcotton.com/api/login" headers = create_headers(code, token) data = { "invite_source": "task", "channel": "" # "channel": "zmh_assist" } try: response = requests.post(url, headers=headers, json=data) response.raise_for_status() # 检查HTTP响应状态 response_data = response.json() if response_data.get("code") == 200: phone = response_data["data"]["phone"] user_id = response_data["data"]["id"] # 提取id #print("提取的电话号码:", phone) #print("提取的用户ID:", user_id) # 打印id return phone, user_id # 返回电话号码和用户ID else: print("请求失败,错误代码:", response_data.get("code"), "错误信息:", response_data.get("msg")) return None, None except requests.exceptions.RequestException as e: print(f"请求失败: {e}") return None, None # 提取数据 完 # 回答问题 def hdwt_box(code, token, tid): #庄园小课堂 url = "https://sg01.purcotton.com/api/answer" headers = create_headers(code, token) try: response = requests.get(url, headers=headers) response.raise_for_status() response_data = response.json() exams = response_data.get("data", {}).get("exams", []) #print(response.json()) for exam in exams: exam_id = exam.get('id') print(f"正在处理问题ID: {exam_id}") # 这里是你提交答案的代码逻辑 url_submit_answer = "https://sg01.purcotton.com/api/answer/complete" payload = { "tid": tid, # 假设任务ID为14 "exam_id": exam_id, "win": 1 # 假设标记为正确 } submit_response = requests.post(url_submit_answer, headers=headers, json=payload) submit_response.raise_for_status() if submit_response.status_code == 200: submit_response_data = submit_response.json() #print(submit_response_data) # 打印完整的响应体 # 提取并打印get_water, complete_num, 和 box_id get_water = submit_response_data.get("data", {}).get("get_water", 0) complete_num = submit_response_data.get("data", {}).get("complete_num", 0) box_id = submit_response_data.get("data", {}).get("box_id", 0) print(f"获取水量:{get_water}, 完成数量:{complete_num}, 宝箱ID:{box_id}") # 如果box_id大于0,则打开宝箱 if box_id > 0: print(f"检测到宝箱ID: {box_id},尝试打开宝箱...") url_open_box = "https://sg01.purcotton.com/api/answer/open-box" box_payload = {"box_id": box_id} box_response = requests.post(url_open_box, headers=headers, json=box_payload) box_response.raise_for_status() if box_response.status_code == 200: box_response_data = box_response.json() # print(f"宝箱 {box_id} 打开成功,响应内容:", box_response_data) # 提取sy_water和get_water sy_water = box_response_data.get("data", {}).get("sy_water", 0) get_water = box_response_data.get("data", {}).get("get_water", 0) print(f"宝箱 剩余水量:{sy_water}, 宝箱水量:{get_water}") # 随机停止3-5秒 time.sleep(random.randint(3, 5)) except requests.exceptions.RequestException as e: print(f"请求失败: {e}") def today_water(code, token):# url = "https://sg01.purcotton.com/api/get-today-water" headers = create_headers(code, token) # 确保 create_headers 函数正确定义并返回所需的头部信息 try: response = requests.post(url, headers=headers) response.raise_for_status() # 确保响应状态为200 # 解析响应体为JSON response_data = response.json() # 检查响应中的code字段 if response_data.get("code") == 200: #print("完整响应体:", response_data) # 打印完整的响应体 # 提取所需数据 sy_water = response_data.get("data", {}).get("sy_water", "未知") get_water = response_data.get("data", {}).get("get_water", "未知") tomorrow_get_water_num = response_data.get("data", {}).get("tomorrow_get_water_num", "未知") #print(f"剩余水量(sy_water): {sy_water}") print(f"今日获取水量: {get_water}") print(f"明日可获取水量: {tomorrow_get_water_num}") print(f"今日获取水量: {get_water} 明日可获取水量: {tomorrow_get_water_num}") else: # 打印错误消息 print(f"水瓶 {response_data.get('msg', '未知错误')}") except requests.exceptions.RequestException as e: print(f"请求失败: {e}") def cscscs(code, token): url = "https://sg01.purcotton.com/api/statistics/store" headers = create_headers(code, token) _, user_id = login(code, token) # 调用login函数,忽略电话号码,只获取user_id data = { "uid": user_id, "type": 301 # 确保这里的值符合API的要求 } #print(data) # 打印整个响应数据 try: response = requests.post(url, headers=headers, json=data) response.raise_for_status() # 检查HTTP响应状态 response_data = response.json() #print(response_data) # 打印整个响应数据 except requests.exceptions.RequestException as e: print(f"请求失败: {e}") # 阳光 def sj_yg(code, token): success = False while not success: url = "https://sg01.purcotton.com/api/get-sunshine" headers = create_headers(code, token) # 使用当前时间戳 payload = {"time": int(time.time() * 1000)} #print(f"请求负载: {payload}") try: response = requests.post(url, headers=headers, json=payload) response_data = response.json() if response.status_code == 200: if response_data["code"] == 200: sy_sunshine = response_data['data'].get('sy_sunshine') get_sunshine = response_data['data'].get('get_sunshine') print(f"成功领取阳光: 剩余阳光: {sy_sunshine}, 获得阳光: {get_sunshine}") success = True # 标记成功领取,退出循环 elif response_data["code"] == 400: print("没有可领取的阳光") break # 如果没有可领取的阳光,跳出循环 else: print(f"阳光操作响应: {response_data}") else: print(f"请求失败,HTTP状态码: {response.status_code}") except requests.exceptions.RequestException as e: print(f"请求失败: {e}") if success: # 如果成功领取阳光,则暂停1到3秒后继续 sleep_time = random.randint(1, 3) print(f"暂停{sleep_time}秒后重新领取...") time.sleep(sleep_time) success = False # 重置成功标志,继续领取 def syyg(code, token): """当阳光值大于100时,完成阳光任务""" # 假设hqid返回树木ID,sunshine,和其他信息 _, sunshine, _ = hqid(code, token) if sunshine > 99: url = "https://sg01.purcotton.com/api/sunshine-task/complete-task" headers = create_headers(code, token) # 使用create_headers函数创建请求头 payload = {"tid": 1} # 固定payload,可能需要根据API文档调整 try: response = requests.post(url, headers=headers, json=payload) response.raise_for_status() # 检查响应是否成功 response_data = response.json() if response_data.get("code") == 200: print("成功完成阳光任务。") # 这里可以根据响应体进一步处理,如打印信息或记录日志 else: print(f"完成阳光任务失败,错误代码: {response_data.get('code')}, 错误信息: {response_data.get('msg')}") except requests.exceptions.RequestException as e: print(f"请求完成阳光任务时出错: {e}") else: print(f"阳光值未达到{sunshine}/100,不执行任务。") # 好友? def hyid(code, token): url = "https://sg01.purcotton.com/api/friend/list?page=1&page_size=50" headers = create_headers(code, token) try: response = requests.get(url, headers=headers) response.raise_for_status() # 确保响应状态为200 # 解析响应体为JSON response_data = response.json() friend_user_ids = [] # 用于存储符合条件的朋友的用户ID if response_data.get("code") == 200: friends_list = response_data.get("data", {}).get("list", []) for friend in friends_list: friend_user_id = friend.get("friend_user_id") help_water_cnt = friend.get("help_water_cnt") be_help_water_cnt = friend.get("friend_user_info", {}).get("be_help_water_cnt") #print(f"朋友用户ID: {friend_user_id}, 帮忙浇水次数: {help_water_cnt}, 被帮忙浇水次数: {be_help_water_cnt}") # 只有当帮忙浇水次数小于1时,才收集该朋友的用户ID if help_water_cnt < 1: friend_user_ids.append(friend_user_id) return friend_user_ids # 返回所有符合条件收集到的用户ID else: print("请求失败,错误代码:", response_data.get("code"), "错误信息:", response_data.get("msg")) except requests.exceptions.RequestException as e: print(f"请求失败: {e}") def access_friend_detail(code, token, friend_user_id): """访问朋友的详细信息,并尝试对其树进行浇水操作""" url = "https://sg01.purcotton.com/api/friend/index" headers = create_headers(code, token) headers['friend-id'] = str(friend_user_id) try: response = requests.get(url, headers=headers) response.raise_for_status() response_data = response.json() if response_data.get("code") == 200: tree_info = response_data.get('data', {}).get('tree', {}) if isinstance(tree_info, list) and tree_info: tree_info = tree_info[0] tree_id = tree_info.get('id') if isinstance(tree_info, dict) else None help_water_info = response_data.get('data', {}).get('help_water', {}) help_water_code = help_water_info.get('code') help_water_msg = help_water_info.get('msg') #print(f"{friend_user_id}朋友树ID: {tree_id}, 帮忙浇水代码: {help_water_code}, 信息: '{help_water_msg}'") if tree_id is not None: success = water_friend_tree(code, token, tree_id, friend_user_id) if not success: print(f"由于操作失败,停止处理朋友{friend_user_id}的后续操作。") return False else: print(f"获取朋友{friend_user_id}的详细信息失败,错误代码: {response_data.get('code')}, 错误信息: {response_data.get('msg')}") return False except requests.exceptions.RequestException as e: print(f"请求失败: {e}") return False return True def water_friend_tree(code, token, tree_id, friend_user_id): """执行给定朋友的树浇水操作""" url = "https://sg01.purcotton.com/api/friend/water" headers = create_headers(code, token) payload = {"tree_user_id": tree_id} headers['friend-id'] = str(friend_user_id) try: response = requests.post(url, headers=headers, json=payload) response.raise_for_status() response_data = response.json() #print(response_data) # 打印整个响应体,用于调试 if response_data["code"] == 200: # 检查response_data['data']是否为字典,以此判断是否可以安全访问'info' if isinstance(response_data['data'], dict): use_water = response_data['data']['info'].get('use_water', '未知') reward_water = response_data['data']['info'].get('reward_water', '未知') print(f"对树ID {tree_id} 的浇水操作成功: 使用水量: {use_water}, 奖励水量: {reward_water}") else: # 如果data不是字典,直接打印data字段,这里可能是错误消息或其他说明 print(f"操作结果: {response_data['data']}") return False elif response_data["code"] == 400: #print(f"{response_data.get('msg', '未知错误')}. 完整响应体: {response_data}") print(f"{response_data.get('msg', '未知错误')}. ") return False else: print(f"对树ID {tree_id} 的浇水操作响应: {response_data}") return False except requests.exceptions.RequestException as e: print(f"请求失败: {e}") return False return True def process_all_friends(friends_user_ids, code, token): """遍历朋友列表,尝试对每个朋友的树进行浇水操作,并在首次失败时停止""" for friend_user_id in friends_user_ids: if not access_friend_detail(code, token, friend_user_id): #print(f"由于操作失败,停止对所有后续朋友的处理。") break # 遇到第一个失败,立即跳出循环 def main(): var_name = 'qmzmh' tokens = get_env_variable(var_name) if not tokens: return total_tokens = len(tokens) if total_tokens > 20: print("账号数量超过20个,不执行操作。") return for index, token_info in enumerate(tokens, start=1): parts = token_info.split('#') if len(parts) < 2: print("令牌格式不正确。跳过处理。") continue code = parts[0] token = parts[1] remark = parts[2] if len(parts) > 2 else "" print() print(f"------账号{index}/{total_tokens},备注: {remark}-------") phone, user_id = login(code, token) if phone and user_id: # 检查是否成功获取电话号码和用户ID # 进行后续任务 cscscs(code, token) #sj_yg(code, token)#收集阳光 #syyg(code, token)#使用阳光 jscz(code, token) #浇水 pdrw(code, token) #任务判断 friend_user_ids = hyid(code, token) if friend_user_ids: process_all_friends(friend_user_ids, code, token) # 正确传入朋友ID列表 else: print("登录失败或获取用户信息失败,跳过当前账号的后续操作。") if __name__ == "__main__": main() ''' def main(): var_name = 'qmzmh' tokens = get_env_variable(var_name) if not tokens: return total_tokens = len(tokens) if total_tokens > 20: print("账号数量超过20个,不执行操作。") return for index, token_info in enumerate(tokens, start=1): parts = token_info.split('#') if len(parts) < 2: print("令牌格式不正确。跳过处理。") continue code = parts[0] token = parts[1] remark = parts[2] if len(parts) > 2 else "" print(f"------账号{index}/{total_tokens},备注: {remark}-------") login(code, token)#判断要手机号码/提取的电话号码: 才运行下面的任务 cscscs(code, token)#更新 #sj_yg(code, token)#收集阳光 #syyg(code, token)#使用阳光 jscz(code, token) #浇水 pdrw(code, token) #任务判断 friend_user_ids = hyid(code, token) if friend_user_ids: process_all_friends(friend_user_ids, code, token) # 正确传入朋友ID列表 if __name__ == "__main__": main() '''