Collect authenticated Qinglong scripts batch
This commit is contained in:
120
脚本库/APP版/账密/阿里云盘签到/2026-05-23_Aliyun_3b7f116f.py
Normal file
120
脚本库/APP版/账密/阿里云盘签到/2026-05-23_Aliyun_3b7f116f.py
Normal file
@@ -0,0 +1,120 @@
|
||||
# Source: https://github.com/CN-Grace/QinglongScripts/blob/main/Aliyun.py
|
||||
# Raw: https://raw.githubusercontent.com/CN-Grace/QinglongScripts/main/Aliyun.py
|
||||
# Repo: CN-Grace/QinglongScripts
|
||||
# Path: Aliyun.py
|
||||
# UploadedAt: 2026-05-23T15:48:24Z
|
||||
# SHA256: 3b7f116faf934e85235755bfab79f1a491b48adf931889612cf496052943a7ae
|
||||
# Category: APP版/账密
|
||||
# Evidence: username/password/mobile/login
|
||||
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
cron: 0 0 * * *
|
||||
new Env("阿里云盘签到")
|
||||
阿里云盘 每日签到脚本
|
||||
- 刷新 Access Token
|
||||
- 获取累计签到天数和奖励信息
|
||||
"""
|
||||
|
||||
import os
|
||||
import requests
|
||||
import urllib3
|
||||
from typing import Dict, Any, Optional
|
||||
|
||||
from utils import log_info, log_success, log_warning, log_error, beijing_time_str
|
||||
from notifier import send as notify_send
|
||||
|
||||
urllib3.disable_warnings()
|
||||
|
||||
# ==================== 用户配置 ====================
|
||||
ALIYUN_REFRESH_TOKEN = os.environ.get("ALIYUN_REFRESH_TOKEN", "")
|
||||
|
||||
|
||||
def get_access_token(refresh_token: str) -> Optional[str]:
|
||||
"""使用 refresh_token 获取新的 access_token"""
|
||||
url = "https://auth.aliyundrive.com/v2/account/token"
|
||||
data = {"grant_type": "refresh_token", "refresh_token": refresh_token}
|
||||
try:
|
||||
result = requests.post(url=url, json=data, timeout=10).json()
|
||||
access_token = result.get("access_token")
|
||||
if access_token:
|
||||
log_success("Token 刷新成功")
|
||||
return access_token
|
||||
log_error("Token 刷新失败,响应中无 access_token")
|
||||
return None
|
||||
except Exception as e:
|
||||
log_error(f"Token 刷新异常: {e}")
|
||||
return None
|
||||
|
||||
|
||||
def sign(access_token: str) -> Dict[str, Any]:
|
||||
"""执行签到,返回累计天数和奖励信息"""
|
||||
url = "https://member.aliyundrive.com/v1/activity/sign_in_list"
|
||||
headers = {"Authorization": access_token, "Content-Type": "application/json"}
|
||||
try:
|
||||
result = requests.post(url=url, headers=headers, json={}, timeout=10).json()
|
||||
if not result.get("success"):
|
||||
msg = result.get("message", "未知错误")
|
||||
log_error(f"签到失败: {msg}")
|
||||
return {"success": False, "message": msg}
|
||||
|
||||
sign_days = result["result"]["signInCount"]
|
||||
log_info(f"累计签到天数: {sign_days}")
|
||||
|
||||
reward_name, reward_desc = "", ""
|
||||
for log in result["result"]["signInLogs"]:
|
||||
if log["status"] == "normal":
|
||||
today_log = log
|
||||
if today_log.get("reward"):
|
||||
reward_name = today_log["reward"].get("name", "")
|
||||
reward_desc = today_log["reward"].get("description", "")
|
||||
log_success(f"今日奖励: {reward_name}{reward_desc}")
|
||||
break
|
||||
else:
|
||||
log_warning("今日奖励信息未找到")
|
||||
|
||||
return {
|
||||
"success": True,
|
||||
"sign_days": sign_days,
|
||||
"reward_name": reward_name,
|
||||
"reward_desc": reward_desc,
|
||||
}
|
||||
except Exception as e:
|
||||
log_error(f"签到请求异常: {e}")
|
||||
return {"success": False, "message": str(e)}
|
||||
|
||||
|
||||
def build_report(result: Dict[str, Any]) -> str:
|
||||
"""构建签到报告"""
|
||||
lines = ["📦 阿里云盘 签到报告", ""]
|
||||
if result.get("success"):
|
||||
lines.append(f"✅ 签到状态: 成功")
|
||||
lines.append(f"📅 累计签到: {result['sign_days']} 天")
|
||||
if result["reward_name"] or result["reward_desc"]:
|
||||
lines.append(f"🎁 今日奖励: {result['reward_name']}{result['reward_desc']}")
|
||||
else:
|
||||
lines.append(f"❌ 签到状态: 失败")
|
||||
lines.append(f"⚠️ 错误信息: {result.get('message', '未知错误')}")
|
||||
lines.append("")
|
||||
lines.append("─" * 18)
|
||||
lines.append(f"🕒 执行时间: {beijing_time_str()}")
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def main() -> Dict[str, Any]:
|
||||
if not ALIYUN_REFRESH_TOKEN:
|
||||
log_error("未配置 ALIYUN_REFRESH_TOKEN")
|
||||
return {"success": False, "message": "未配置 refresh_token"}
|
||||
|
||||
access_token = get_access_token(ALIYUN_REFRESH_TOKEN)
|
||||
if not access_token:
|
||||
return {"success": False, "message": "Token 刷新失败"}
|
||||
|
||||
return sign(access_token)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
result = main()
|
||||
report = build_report(result)
|
||||
notify_send("阿里云盘 签到报告", report)
|
||||
log_info(f"签到结果: {result}")
|
||||
Reference in New Issue
Block a user