Add files via upload

This commit is contained in:
3288588344
2025-01-12 08:47:21 +08:00
committed by GitHub
parent 439af5aa05
commit bfd79d2cd1

842
全棉时代.js Normal file
View File

@@ -0,0 +1,842 @@
"""
>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返回树木IDsunshine和其他信息
_, 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()
'''