diff --git a/Seedbox/50 MrtveTorrenty.py b/Seedbox/50 MrtveTorrenty.py index 430bc43..c6ec218 100644 --- a/Seedbox/50 MrtveTorrenty.py +++ b/Seedbox/50 MrtveTorrenty.py @@ -6,17 +6,19 @@ from datetime import datetime, timedelta # CONFIG # ============================================================ -DRY_RUN = True # ← změň na False až si ověříš výstup +DRY_RUN = False # ← změň na False až si ověříš výstup DEAD_AFTER_HOURS = 72 # torrent musí být v qB alespoň tolik hodin DEAD_PROGRESS_THRESHOLD = 95.0 # pokud je progress < tato % po uplynutí doby → dead +STUCK_AFTER_HOURS = 168 # 7 dní — pro torrenty téměř hotové (>= 95%) ale zaseknuté + QBT_URL = "https://vladob.zen.usbx.me/qbittorrent" QBT_USER = "vladob" QBT_PASS = "jCni3U6d#y4bfcm" DB_CONFIG = { - "host": "192.168.1.50", + "host": "192.168.1.76", "port": 3306, "user": "root", "password": "Vlado9674+", @@ -53,7 +55,8 @@ def main(): print("=" * 60) print("MRTVÉ TORRENTY — UltraCC Seedbox cleanup") print(f"DRY_RUN = {DRY_RUN}") - print(f"Kritéria : v qB déle než {DEAD_AFTER_HOURS}h A progress < {DEAD_PROGRESS_THRESHOLD}%") + print(f"Kritérium A: progress < {DEAD_PROGRESS_THRESHOLD}% A v qB déle než {DEAD_AFTER_HOURS}h") + print(f"Kritérium B: progress >= {DEAD_PROGRESS_THRESHOLD}% ale < 100% A v qB déle než {STUCK_AFTER_HOURS}h (zaseknutý)") print("=" * 60) qbt = connect_qbt() @@ -63,7 +66,8 @@ def main(): torrents = qbt.torrents_info() now = datetime.now() - deadline = now - timedelta(hours=DEAD_AFTER_HOURS) + deadline_a = now - timedelta(hours=DEAD_AFTER_HOURS) + deadline_b = now - timedelta(hours=STUCK_AFTER_HOURS) dead_count = 0 skip_count = 0 @@ -83,22 +87,23 @@ def main(): added_dt = datetime.fromtimestamp(added_on) progress_pct = float(t.progress) * 100.0 + age_hours = (now - added_dt).total_seconds() / 3600 - # Torrent ještě není dost starý - if added_dt > deadline: - skip_count += 1 - continue + # ── Kritérium A: nízký progress po 72h ──────────────── + is_dead_a = (added_dt <= deadline_a) and (progress_pct < DEAD_PROGRESS_THRESHOLD) - # Progress je OK (téměř hotov) → přeskočit - if progress_pct >= DEAD_PROGRESS_THRESHOLD: + # ── Kritérium B: zaseknutý blízko 100% po 7 dnech ───── + is_dead_b = (added_dt <= deadline_b) and (progress_pct >= DEAD_PROGRESS_THRESHOLD) and (progress_pct < 100.0) + + if not is_dead_a and not is_dead_b: skip_count += 1 continue # ── Torrent splňuje kritéria "mrtvý" ────────────────── thash = t.hash.lower() - age_hours = (now - added_dt).total_seconds() / 3600 + reason = "nízký progress po 72h" if is_dead_a else "zaseknutý blízko 100% po 7 dnech" - print(f"\n💀 MRTVÝ: {t.name}") + print(f"\n💀 MRTVÝ ({reason}): {t.name}") print(f" Přidán : {added_dt} ({age_hours:.1f}h zpět)") print(f" Progress : {progress_pct:.1f}%") print(f" Stav : {t.state}")