# Source: https://gitee.com/jdqlscript/toulu/blob/main/Babycare.py
# Raw: https://gitee.com/jdqlscript/toulu/raw/main/Babycare.py
# Repo: jdqlscript/toulu
# Path: Babycare.py
# UploadedAt: 2025-06-28T11:18:42+08:00
# SHA256: 4a2e1c449fcddaa87cd53358847de65c3839d1ffb325484844f5db88e04e1971
# Category: 微信小程序/抓包版
# Evidence: appid/openid/session_key/encryptedData等小程序字段

#by:哆啦A梦
#TL库
#入口:小程序-Babycare官方旗舰店
#抓包api.bckid.com.cn域名下的authorization，多账号换行分割

import os
import requests
import json

# 从环境变量中获取 token，支持多账号换行分割
tokens = os.environ.get('Babycare', '').split('\n')

# 定义 URL
url = "https://api.bckid.com.cn/operation/front/bonus/userSign/v3/sign"
primary_url = "https://github.com/3288588344/toulu/raw/refs/heads/main/tl.txt"
backup_url = "https://tfapi.cn/TL/tl.json"

# 定义请求头
headers = {
    "Host": "api.bckid.com.cn",
    "content-length": "2",
    "content-type": "application/json",
    "charset": "utf-8",
    "referer": "https://servicewechat.com/wxab5642d7bced2dcc/447/page-frame.html",
    "accept-encoding": "gzip, deflate, br"
}

def print_divider():
    print("\n" + "=" * 35)

def print_account_info(account_num, token):
    print_divider()
    print(f"🤖 正在为账号 {account_num} 签到...")
    print_divider()

def print_sign_success(account_num, result):
    print_divider()
    print(f"🎉 账号 {account_num} 签到成功！")
    print(f"💪 最大连续签到天数: {result.get('maxSignDay', '信息获取失败')}")
    print(f"📅 当前连续签到天数: {result.get('signDaysCount', '信息获取失败')}")
    print(f"🎁 抽奖机会: {result.get('lotteryCount', '信息获取失败')}")
    print_divider()

def print_already_signed(account_num):
  
    print(f"👻 账号 {account_num} 今天已经签到过了，请明天再来！")
    print_divider()

def print_sign_failed(account_num, message):
    
    print(f"❌ 账号 {account_num} 签到失败！错误信息: {message}")
    print_divider()

def print_empty_token(account_num):
    
    print(f"⚠️ 账号 {account_num} 的 token 为空，跳过")
    print_divider()

def print_request_error(account_num, error):
    
    print(f"⚠️ 账号 {account_num} 请求异常: {error}")
    print_divider()

def get_proclamation():
    try:
        print("\n" + "=" * 35)
        print("📢 公告信息")
        
        
        response = requests.get(primary_url, timeout=10)
        if response.status_code == 200:
            print(response.text)
            print("=" * 35 + "\n")
            print("公告获取成功，开始执行任务...\n")
            return
        else:
            print(f"尝试获取公告，状态码: {response.status_code}, 尝试备用链接...")
    except requests.exceptions.RequestException as e:
        print(f"获取公告时发生错误: {e}, 尝试备用链接...")

    try:
        response = requests.get(backup_url, timeout=10)
        if response.status_code == 200:
            print(response.text)
            print("=" * 35 + "\n")
            print("公告获取成功，开始执行任务...\n")
        else:
            print(f"⚠️ 获取公告失败，状态码: {response.status_code}")
    except requests.exceptions.RequestException as e:
        print(f"⚠️ 获取公告时发生错误: {e}, 可能是网络问题或链接无效。")

print_divider()
print("🚀 开始执行签到任务")


get_proclamation()

# 添加账号编号提示
for idx, token in enumerate(tokens, start=1):
    if not token.strip():
        print_empty_token(idx)
        continue

    print_account_info(idx, token)
    headers["authorization"] = token.strip()

    try:
        response = requests.post(url, headers=headers, data=json.dumps({}))
        
        if response.status_code == 200:
            json_response = response.json()
            if json_response.get("code") == "200":
                print_sign_success(idx, json_response.get('body', {}))
            elif json_response.get("code") == "400":
                print_already_signed(idx)
            else:
                print_sign_failed(idx, json_response.get("message", "未知错误"))
        else:
            print_sign_failed(idx, f"HTTP状态码: {response.status_code}")
    except requests.exceptions.RequestException as e:
        print_request_error(idx, e)
    except json.JSONDecodeError:
        print_sign_failed(idx, "响应内容不是有效的 JSON 格式")


print("🏆 所有账号签到任务完成！")
print_divider()
