#!/usr/bin/env python3 """Last-Z Gift Center CLI""" import argparse import os import sys import requests from dotenv import load_dotenv load_dotenv() BASE_URL = "https://giftcenter.last-z.com" LOGIN_ERRORS = { 10006: "Token 已過期", 10007: "請稍後再試", 10017: "需要充值記錄", 10018: "UID 不存在", 10019: "不支援的幣別", 10020: "操作過於頻繁", 10022: "帳號警告", 10023: "不支援的地區", 10024: "帳號已刪除", 10002001: "系統錯誤", 10002002: "請求逾時", 10002003: "未預期的錯誤", } REDEEM_ERRORS = { "E001": "系統錯誤", "E002": "系統錯誤", "E003": "系統錯誤", "E004": "禮品碼不存在", "E005": "禮品碼已過期", "E006": "禮品碼已被使用", "E007": "兌換次數已達上限", "E008": "系統錯誤", "E009": "請稍後再試", } def get_uid(): uid = os.getenv("UID") if not uid: print("錯誤:請在 .env 設定 UID=your_uid_here", file=sys.stderr) sys.exit(1) return uid def cmd_login(args): uid = args.uid or get_uid() try: resp = requests.get(f"{BASE_URL}/getcodeuser.php", params={"uid": uid}, timeout=10) resp.raise_for_status() data = resp.json() except requests.RequestException as e: print(f"請求失敗:{e}", file=sys.stderr) sys.exit(1) if data.get("code") == 0: r = data["result"] print(f"登入成功") print(f" 名稱 : {r.get('name')}") print(f" UID : {uid}") print(f" SID : {r.get('sid')}") print(f" 國家 : {r.get('country')}") print(f" 等級 : {r.get('level')}") else: code = data.get("code", 10002001) print(f"登入失敗:{LOGIN_ERRORS.get(code, f'錯誤碼 {code}')}", file=sys.stderr) sys.exit(1) def cmd_redeem(args): uid = args.uid or get_uid() code = args.code try: resp = requests.get( f"{BASE_URL}/code.php", headers={"Usertoken": uid}, params={"uid": uid, "code": code}, timeout=10, ) resp.raise_for_status() data = resp.json() except requests.RequestException as e: print(f"請求失敗:{e}", file=sys.stderr) sys.exit(1) error_code = data.get("errorCode") if error_code == "ok": print(f"兌換成功!禮品碼 {code} 已套用") else: msg = REDEEM_ERRORS.get(error_code, f"未知錯誤碼 {error_code}") print(f"兌換失敗:{msg}", file=sys.stderr) sys.exit(1) def main(): parser = argparse.ArgumentParser(description="Last-Z Gift Center CLI") parser.add_argument("--uid", help="指定 UID(覆蓋 .env)") sub = parser.add_subparsers(dest="command", required=True) # login p_login = sub.add_parser("login", help="登入並查看帳號資訊") p_login.add_argument("--uid", help="指定 UID(覆蓋 .env)") p_login.set_defaults(func=cmd_login) # redeem p_redeem = sub.add_parser("redeem", help="兌換禮品碼") p_redeem.add_argument("code", help="禮品碼") p_redeem.add_argument("--uid", help="指定 UID(覆蓋 .env)") p_redeem.set_defaults(func=cmd_redeem) args = parser.parse_args() args.func(args) if __name__ == "__main__": main()