更新 Points_Based/D_SFSY_SJBHD.py
This commit is contained in:
@@ -4,10 +4,11 @@
|
|||||||
|
|
||||||
顺丰2026世界杯活动 - 射门游戏 + 比赛竞猜 + 每日礼物
|
顺丰2026世界杯活动 - 射门游戏 + 比赛竞猜 + 每日礼物
|
||||||
Author: Auto-generated (参考端午活动脚本)
|
Author: Auto-generated (参考端午活动脚本)
|
||||||
Version: 1.2.0
|
Version: 1.2.1
|
||||||
Date: 2026-07-06
|
Date: 2026-07-07
|
||||||
|
|
||||||
更新日志:
|
更新日志:
|
||||||
|
1.2.1 (2026-07-07) 修复多变量解析:支持青龙同名变量换行分隔,兼容 & 分隔
|
||||||
1.2.0 (2026-07-06) 优化邀请逻辑:支持列表内账号互相邀请,显示已邀请好友列表
|
1.2.0 (2026-07-06) 优化邀请逻辑:支持列表内账号互相邀请,显示已邀请好友列表
|
||||||
1.1.0 (2026-07-04) 新增下注结算(settleBet)阶段、赔率显示、潜在收益/今日盈亏列
|
1.1.0 (2026-07-04) 新增下注结算(settleBet)阶段、赔率显示、潜在收益/今日盈亏列
|
||||||
1.0.0 (2026-07-03) 初版:每日礼物 + 任务(白名单) + 射门游戏 + 比赛下注
|
1.0.0 (2026-07-03) 初版:每日礼物 + 任务(白名单) + 射门游戏 + 比赛下注
|
||||||
@@ -416,7 +417,6 @@ class WorldCupExecutor:
|
|||||||
for i, friend in enumerate(invite_list, 1):
|
for i, friend in enumerate(invite_list, 1):
|
||||||
mobile = friend.get('mobile', '未知')
|
mobile = friend.get('mobile', '未知')
|
||||||
invite_date = friend.get('inviteDate', '未知')
|
invite_date = friend.get('inviteDate', '未知')
|
||||||
# 脱敏显示
|
|
||||||
if len(mobile) >= 7:
|
if len(mobile) >= 7:
|
||||||
mobile_masked = mobile[:3] + "****" + mobile[7:]
|
mobile_masked = mobile[:3] + "****" + mobile[7:]
|
||||||
else:
|
else:
|
||||||
@@ -810,7 +810,133 @@ def run_account(account_url: str, index: int, invite_pool: List[str]) -> Dict[st
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# ==================== 主程序(重写解析逻辑,支持同名多变量) ====================
|
||||||
def main():
|
def main():
|
||||||
# 收集所有 sfsyUrl 相关环境变量(兼容青龙面板同名多变量)
|
# 第一步:收集所有可能包含账号信息的环境变量
|
||||||
|
raw_values = []
|
||||||
|
for key, value in os.environ.items():
|
||||||
|
if key == 'sfsyUrl' or key.startswith('sfsyUrl_'):
|
||||||
|
raw_values.append(value)
|
||||||
|
|
||||||
|
if not raw_values:
|
||||||
|
print("❌ 未找到任何 sfsyUrl / sfsyUrl_* 环境变量,请检查青龙面板变量配置")
|
||||||
|
return
|
||||||
|
|
||||||
|
# 第二步:合并所有值,按 & 和 \n 分割
|
||||||
|
combined = '&'.join(raw_values)
|
||||||
|
parts = []
|
||||||
|
for p in combined.split('&'):
|
||||||
|
if '\n' in p:
|
||||||
|
parts.extend(p.split('\n'))
|
||||||
|
else:
|
||||||
|
if p.strip():
|
||||||
|
parts.append(p.strip())
|
||||||
|
|
||||||
|
# 第三步:提取以 sessionId= 开头的有效账号字符串
|
||||||
account_urls = []
|
account_urls = []
|
||||||
invite_pool = [] #
|
for p in parts:
|
||||||
|
p = p.strip()
|
||||||
|
if not p:
|
||||||
|
continue
|
||||||
|
if p.startswith('sessionId='):
|
||||||
|
account_urls.append(p)
|
||||||
|
elif 'sessionId=' in p:
|
||||||
|
# 从第一个 sessionId= 开始截取
|
||||||
|
idx = p.find('sessionId=')
|
||||||
|
account_urls.append(p[idx:])
|
||||||
|
|
||||||
|
# 第四步:去重(保留首次出现顺序)
|
||||||
|
seen = set()
|
||||||
|
unique_urls = []
|
||||||
|
for u in account_urls:
|
||||||
|
if u not in seen:
|
||||||
|
seen.add(u)
|
||||||
|
unique_urls.append(u)
|
||||||
|
account_urls = unique_urls
|
||||||
|
|
||||||
|
if not account_urls:
|
||||||
|
print("❌ 未能解析出有效的账号 Cookie,请检查格式(应以 sessionId= 开头)")
|
||||||
|
print(f" 原始输入片段: {combined[:200]}...")
|
||||||
|
return
|
||||||
|
|
||||||
|
# 第五步:提取邀请池(所有 user_id)
|
||||||
|
invite_pool = []
|
||||||
|
for url in account_urls:
|
||||||
|
m = re.search(r'_login_user_id_=([A-Fa-f0-9]+)', url)
|
||||||
|
if m:
|
||||||
|
invite_pool.append(m.group(1))
|
||||||
|
|
||||||
|
# 设置全局邀请池
|
||||||
|
global inviteId
|
||||||
|
inviteId = invite_pool
|
||||||
|
|
||||||
|
# 打乱顺序,防止固定顺序触发风控
|
||||||
|
random.shuffle(account_urls)
|
||||||
|
|
||||||
|
print("=" * 60)
|
||||||
|
print(f"⚽ 顺丰2026世界杯活动 - 射门挑战 + 比赛竞猜")
|
||||||
|
print(f"👨💻 Author: Auto-generated")
|
||||||
|
print(f"📱 共获取到 {len(account_urls)} 个账号")
|
||||||
|
print(f"🤝 邀请池: {len(invite_pool)} 个账号")
|
||||||
|
print(f"⚙️ 并发数量: {CONCURRENT_NUM}")
|
||||||
|
print(f"🎯 阶段开关: 礼物={ENABLE_DAILY_GIFT} 任务={ENABLE_TASKS} 游戏={ENABLE_GAME} 下注={ENABLE_BET} 结算={ENABLE_SETTLE}")
|
||||||
|
print(f"💰 单场下注: {BET_COIN} 金币(最低 10)")
|
||||||
|
print(f"⏰ 执行时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||||||
|
print("=" * 60)
|
||||||
|
|
||||||
|
all_results = []
|
||||||
|
|
||||||
|
if CONCURRENT_NUM <= 1:
|
||||||
|
for idx, url in enumerate(account_urls):
|
||||||
|
result = run_account(url, idx, invite_pool)
|
||||||
|
all_results.append(result)
|
||||||
|
if idx < len(account_urls) - 1:
|
||||||
|
print("-" * 60)
|
||||||
|
time.sleep(2)
|
||||||
|
else:
|
||||||
|
with ThreadPoolExecutor(max_workers=CONCURRENT_NUM) as pool:
|
||||||
|
futures = {pool.submit(run_account, url, idx, invite_pool): idx for idx, url in enumerate(account_urls)}
|
||||||
|
for future in as_completed(futures):
|
||||||
|
all_results.append(future.result())
|
||||||
|
|
||||||
|
all_results.sort(key=lambda x: x['index'])
|
||||||
|
|
||||||
|
print(f"\n" + "=" * 90)
|
||||||
|
print(f"📊 世界杯活动汇总")
|
||||||
|
print("=" * 90)
|
||||||
|
print(f"{'序号':<6} {'手机号':<15} {'金币余额':<10} {'通关数':<6} {'下注数':<6} {'潜在收益':<10} {'今日盈亏':<10} {'每日礼物':<8}")
|
||||||
|
print("-" * 100)
|
||||||
|
|
||||||
|
total_balance = 0
|
||||||
|
total_payout = 0.0
|
||||||
|
total_pnl = 0
|
||||||
|
|
||||||
|
for r in all_results:
|
||||||
|
idx = r['index'] + 1
|
||||||
|
phone = r['phone'][:3] + "****" + r['phone'][7:] if r.get('phone') and len(r['phone']) >= 7 else r.get('phone', '未登录')
|
||||||
|
daily = '✅' if r.get('daily_gift') else '❌'
|
||||||
|
balance = r.get('final_balance', 0)
|
||||||
|
stages = len(r.get('stages_passed', []))
|
||||||
|
bets = r.get('bets_placed', 0)
|
||||||
|
payout = sum(d.get('potential_payout', 0) for d in r.get('bet_details', []))
|
||||||
|
pnl = r.get('settle_pnl', 0)
|
||||||
|
wins = r.get('settle_wins', 0)
|
||||||
|
losses = r.get('settle_losses', 0)
|
||||||
|
if wins + losses > 0:
|
||||||
|
pnl_str = f'{pnl:+d} ({wins}胜{losses}负)'
|
||||||
|
else:
|
||||||
|
pnl_str = '-'
|
||||||
|
total_payout += payout
|
||||||
|
total_pnl += pnl
|
||||||
|
total_balance += balance
|
||||||
|
|
||||||
|
print(f"{idx:<6} {phone:<15} {balance:<10} {stages:<6} {bets:<6} {payout:<10} {pnl_str:<10} {daily:<8}")
|
||||||
|
|
||||||
|
print("-" * 100)
|
||||||
|
print(f"{'汇总':<6} {'账号: ' + str(len(all_results)):<15} 总金币余额: {total_balance} | 累计盈亏: {total_pnl:+d}")
|
||||||
|
print("=" * 90)
|
||||||
|
print("\n🎊 所有账号执行完成!")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user