diff --git a/README.md b/README.md index 29134fe..f4f85ba 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,18 @@ 中国电信APP日常任务自动化工具。 -## 功能 +## 脚本说明 + +| 脚本 | 说明 | +|------|------| +| 电信任务.py | 电信APP签到、抽奖、喂食等任务 | +| tv189.py | 天翼超高清任务(签到、分享、视频奖励) | + +--- + +## 电信任务.py + +### 功能 - **每日签到** - 自动完成签到,获取金豆奖励 - **连签奖励** - 连续签到7天自动领取奖励 @@ -11,17 +22,17 @@ - **任务完成** - 自动完成可用的日常任务 - **喂食功能** - 自动执行喂食任务(每日最多10次) -## 环境要求 +### 环境要求 - Python 3.8+ -## 安装 +### 安装 ```bash pip install requests pycryptodome certifi ``` -## 配置 +### 配置 通过环境变量 `chinaTelecomAccount` 配置账号信息。 @@ -133,10 +144,10 @@ cron: 0 8 * * * ... [2025-12-10 08:00:25] [喂食完成] 138****0000 今日喂食次数已达上限 -[2025-12-10 08:00:30] 📧 所有任务完成 +[2025-12-10 08:00:30] 所有任务完成 ``` -## 常见问题 +### 常见问题 **Q: 提示"未找到环境变量"** @@ -151,6 +162,47 @@ cron: 0 8 * * * 脚本会自动检测并清除过期缓存。如仍有问题,手动删除 `Cache.json`。 +--- + +## tv189.py + +### 功能 + +- **每日签到** - 天翼超高清每日签到 +- **分享任务** - 自动完成分享任务 +- **VIP奖励** - VIP会员奖励、连续包月奖励 +- **节日奖励** - 节日活动奖励领取 +- **视频奖励** - 观看1/5/30分钟奖励领取 + +### 安装 + +```bash +pip install requests +``` + +### 配置 + +编辑 `tv189.py`,填入任务中心 Cookie: + +```python +USER_COOKIE = "从 h5.nty.tv189.com 抓包获取的 Cookie" +``` + +### 使用 + +```bash +python tv189.py +``` + +### 抓包说明 + +1. 打开天翼超高清APP +2. 进入任务中心页面 +3. 抓包域名 `h5.nty.tv189.com` 的请求 +4. 复制 Cookie 头信息 + +--- + ## 免责声明 本脚本仅供学习交流使用,请勿用于商业用途。使用者应遵守中国电信相关服务条款。 diff --git a/tv189.py b/tv189.py new file mode 100644 index 0000000..027ed50 --- /dev/null +++ b/tv189.py @@ -0,0 +1,123 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +天翼超高清全自动任务脚本 +""" + +import random +import requests +from typing import Optional + + +# ==================== 配置区 ==================== + +# 任务中心 Cookie (抓包域名: h5.nty.tv189.com) +USER_COOKIE = "" + +# ==================== 常量定义 ==================== + +BASE_URL = "https://h5.nty.tv189.com" + +COMMON_HEADERS = { + "Host": "h5.nty.tv189.com", + "Accept": "application/json, text/javascript, */*; q=0.01", + "X-Requested-With": "XMLHttpRequest", + "User-Agent": ( + "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) " + "AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 " + "appstore-newtysx-ios-UA-2.30.14.5" + ), + "Cookie": USER_COOKIE, + "Referer": "https://h5.nty.tv189.com/csite/tysx/task/main", +} + +VIDEO_REWARD_STAGES = [1, 5, 30] + + +# ==================== 工具函数 ==================== + + +def api_get(url_path: str) -> Optional[dict]: + """通用 GET 请求""" + separator = "&" if "?" in url_path else "?" + url = f"{BASE_URL}{url_path}{separator}{random.random()}" + + try: + resp = requests.get(url, headers=COMMON_HEADERS, timeout=10) + if resp.status_code == 200: + return resp.json() + except (requests.RequestException, ValueError): + pass + return None + + +# ==================== 任务函数 ==================== + + +def task_sign_in() -> None: + """每日签到""" + api_get("/api/portal/task/integralpresentforsign") + + +def task_share() -> None: + """分享任务""" + api_get("/api/portal/task/shareintegralapply") + + +def task_vip_bonus() -> None: + """VIP 奖励领取""" + api_get("/api/portal/task/vipintegralapply") + api_get("/api/portal/task/getrollvip") + + +def task_festival() -> None: + """节日活动奖励""" + api_get("/api/portal/task/festival-get") + + +def claim_video_rewards() -> None: + """领取视频观看奖励""" + for minutes in VIDEO_REWARD_STAGES: + url = f"{BASE_URL}/api/portal/task/playtask?e={minutes}" + try: + resp = requests.get(url, headers=COMMON_HEADERS, timeout=10) + result = resp.json() + if result.get("code") == 0: + info = result.get("info", {}) + if info.get("resultDetails"): + print(f"[成功] 观看{minutes}分钟奖励") + except (requests.RequestException, ValueError): + pass + + +def query_points() -> Optional[float]: + """查询元气值""" + data = api_get("/api/portal/task/integralquery") + if data and "intergral" in data: + return data["intergral"] / 10 + return None + + +# ==================== 主函数 ==================== + + +def main() -> None: + if not USER_COOKIE: + print("[错误] 请先配置 USER_COOKIE") + return + + # 执行任务 + task_sign_in() + task_share() + task_vip_bonus() + task_festival() + claim_video_rewards() + + # 查询最终积分 + points = query_points() + if points is not None: + print(f"[积分] 当前元气值: {points}") + + +if __name__ == "__main__": + main()