import sqlite3 import argparse import json DB_NAME = 'form_filler.db' conn = sqlite3.connect(DB_NAME) def add_website(address, json_data): try: form_fields = json.loads(json_data) form_fields["task"] = "form.message" except json.JSONDecodeError: print("Nieprawidłowy JSON!") return try: conn.execute("INSERT INTO websites (address) VALUES (?)", (address,)) conn.execute("INSERT INTO data (website_address, form_fields) VALUES (?, ?)", (address, json.dumps(form_fields))) conn.commit() print(f"Dodano stronę {address} z podanymi polami.") except sqlite3.IntegrityError: print(f"Strona już istnieje w bazie! Użyj flagi --remove aby ją usunąć.") def remove_website(address): cur = conn.execute("DELETE FROM websites WHERE address = ?", (address,)) conn.commit() if cur.rowcount: print(f"Usunięto dane strony o adresie {address}") else: print(f"Nie znaleziono strony o adresie {address}") def list_websites(): rows = conn.execute("SELECT id, address, active FROM websites").fetchall() for row in rows: print(f"[{row[0]}] {row[1]} - {'WŁĄCZONA' if row[2] else 'WYŁĄCZONA'}") def set_active_status(address, status): conn.execute("UPDATE websites SET active = ? WHERE address = ?", (1 if status else 0, address)) conn.commit() print(f"Ustawiono testowanie formularza w witrynie {address}") def cli(): parser = argparse.ArgumentParser() parser.add_argument("--add", nargs=2, metavar=("address", "fields"), help="Dodaj nową witrynę") parser.add_argument("--remove", help="Usuń witrynę z bazy danych") parser.add_argument("--active", nargs=2, metavar=("address", "0|1"), help="Włącz/wyłącz testowanie formularza na witrynie") parser.add_argument("--list", action="store_true", help="Pokaż listę witryn") args = parser.parse_args() if args.add: add_website(args.add[0], args.add[1]) elif args.remove: remove_website(args.remove) elif args.active: set_active_status(args.active[0], bool(int(args.active[1]))) elif args.list: list_websites() if __name__ == "__main__": cli()