import time
import hashlib
import json
import sys
from typing import Dict, Any
class FormChangeMonitor:
def __init__(self, form_data: Dict[str, Any], interval: int = 1):
"""
Initializes the FormChangeMonitor.
Args:
form_data: The initial state of the form.
interval: The interval (in seconds) to check for changes.
"""
self.form_data = form_data
self.interval = interval
self.previous_hash = self._calculate_hash(form_data)
def _calculate_hash(self, data: Dict[str, Any]) -> str:
"""Calculates a hash of the form data."""
data_string = json.dumps(data, sort_keys=True).encode('utf-8')
return hashlib.sha256(data_string).hexdigest()
def check_changes(self) -> Dict[str, Any]:
"""
Checks for changes in the form data.
Returns:
The updated form data if changes are detected, otherwise None.
"""
try:
current_data = self.form_data # Get the current form data
current_hash = self._calculate_hash(current_data)
if current_hash != self.previous_hash:
self.previous_hash = current_hash
print("Form data changed!")
return current_data
else:
return None # No changes
except Exception as e:
print(f"Error during change check: {e}")
return None
def run(self):
"""Runs the monitoring loop."""
while True:
updated_data = self.check_changes()
if updated_data:
self.form_data = updated_data # Update the form data
print("Updated form data:", updated_data)
time.sleep(self.interval)
if __name__ == '__main__':
# Example usage:
initial_form_data = {"name": "Alice", "age": 30, "city": "New York"}
monitor = FormChangeMonitor(initial_form_data, interval=2)
monitor.run()
Add your comment