# -*- coding: utf-8 -*-
# 全删 BT 栈：卸载 Sonarr/Radarr/Jackett/qBittorrent + 删 FlareSolverr/gost + 清 frpc 媒体隧道
# 保留：glances、research-tool、frpc SSH(12022)+glances(61209) 隧道、AutoAdminLogon
import os, time, re, shutil
log = r"C:\bt_cleanup.log"
def lw(s): open(log, 'a', encoding='utf-8').write(s + "\n")
open(log, 'w', encoding='utf-8').write("START " + time.ctime() + "\n")
try: os.remove(r"C:\bt_cleanup_done.txt")
except: pass

# 1) 停服务/进程
for svc in ['Sonarr', 'Radarr', 'Jackett']:
    os.system('sc stop %s >nul 2>&1' % svc)
for img in ['qbittorrent.exe', 'flaresolverr.exe', 'gost.exe', 'chrome.exe', 'chromedriver.exe']:
    os.system('taskkill /F /IM %s >nul 2>&1' % img)
time.sleep(4)

# 2) choco 卸载
choco = r"C:\ProgramData\chocolatey\bin\choco.exe"
lw("uninstalling...")
os.system('"%s" uninstall sonarr radarr jackett qbittorrent -y -x >> "%s" 2>&1' % (choco, log))
lw("uninstall done")

# 3) 删目录/文件
for d in [r"C:\flaresolverr", r"C:\gost", r"C:\ProgramData\Jackett", r"C:\Media", r"C:\flaresolverr.zip"]:
    try:
        if os.path.isdir(d): shutil.rmtree(d, ignore_errors=True)
        elif os.path.isfile(d): os.remove(d)
    except: pass
lw("dirs removed")

# 4) 删计划任务
for t in ['flaresolverr', 'gost-local', 'qbittorrent']:
    os.system('schtasks /delete /tn %s /f >nul 2>&1' % t)

# 5) 删启动文件夹 qbittorrent.bat
for p in [r"C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\qbittorrent.bat"]:
    try: os.remove(p)
    except: pass

# 6) 清 frpc.toml 媒体隧道（保留 ssh + glances）
toml = r"C:\frp\frp_0.61.1_windows_amd64\frpc.toml"
try:
    s = open(toml, encoding='utf-8').read()
    for name in ['jellyfin', 'sonarr', 'radarr', 'jackett', 'qbittorrent']:
        s = re.sub(r'\n\[\[proxies\]\]\s*\nname = "%s"\s*\n.*?remotePort = \d+\s*' % name, '\n', s, flags=re.S)
    open(toml, 'w', encoding='utf-8').write(s)
    lw("frpc.toml cleaned; remaining proxies: " + ",".join(re.findall(r'name = "([^"]+)"', s)))
except Exception as e:
    lw("frpc edit err: " + str(e))

# 7) 重启 frpc（会断 SSH，本脚本是脱离式任务不受影响）
os.system('taskkill /F /IM frpc.exe >nul 2>&1')
time.sleep(2)
os.system('schtasks /run /tn frpc >nul 2>&1')
lw("frpc restarted")
lw("DONE " + time.ctime())
open(r"C:\bt_cleanup_done.txt", 'w').write("DONE")
