Files
keyhunter-parser/eternal_export.py

44 lines
1.4 KiB
Python

"""Eternal export: rewrite data/working_keys.txt with all live keys every 10 min.
Piggybacks on export_working.py logic (inline, single file)."""
import os
KF_BASE = os.path.dirname(os.path.abspath(__file__))
os.makedirs(os.path.join(KF_BASE, "data"), exist_ok=True)
import sqlite3
import time
import os
DB = os.environ.get("KF_DB") or os.path.join(KF_BASE, "data", "keys.db")
OUT = "data/working_keys.txt"
INTERVAL = 600
def export():
db = sqlite3.connect(DB, timeout=120)
c = db.cursor()
c.execute("SELECT val, prov, plan, price, remaining FROM keys "
"WHERE status IN ('WORKING','FREE','LIMITED') ORDER BY prov, val")
rows = c.fetchall()
db.close()
ts = time.strftime("%Y-%m-%dT%H:%M:%S")
lines = [f"{ts} | {p} | {v} | {pl or ''} | {pr or ''} | remaining={rem or ''}"
for v, p, pl, pr, rem in rows]
tmp = OUT + ".tmp"
with open(tmp, "w", encoding="utf-8") as f:
f.write("\n".join(lines) + "\n")
os.replace(tmp, OUT)
return len(lines)
def main():
print(time.strftime("[%H:%M:%S]") + " eternal export start (10 min)", flush=True)
while True:
try:
n = export()
print(time.strftime("[%H:%M:%S]") + f" exported {n} live keys", flush=True)
except Exception as e:
print(time.strftime("[%H:%M:%S]") + f" ERR {e}", flush=True)
time.sleep(INTERVAL)
if __name__ == "__main__":
main()