import sys import json import re from datetime import datetime timestamps = [] for line in sys.stdin: line = line.strip() if not line: continue # Remove invalid JSON explicit plus signs (e.g., :+0 -> :0) cleaned_line = re.sub(r':\s*\+(\d)', r':\1', line) try: data = json.loads(cleaned_line) if "Timestamp" in data: timestamps.append(int(data["Timestamp"])) except json.JSONDecodeError: continue if not timestamps: print("No valid timestamps found.") sys.exit(1) timestamps.sort() # Calculate intervals intervals_sec = [t2 - t1 for t1, t2 in zip(timestamps[:-1], timestamps[1:])] intervals_min = [s / 60.0 for s in intervals_sec] mean_min = sum(intervals_min) / len(intervals_min) min_min = min(intervals_min) max_min = max(intervals_min) print("=== Recording Frequency Summary ===") print(f"Total Records : {len(timestamps)}") print(f"Mean Interval : {mean_min:.2f} minutes") print(f"Min Interval : {min_min:.2f} minutes") print(f"Max Interval : {max_min:.2f} minutes") # Gap Detection (> 20 mins) GAP_THRESHOLD_MIN = 20.0 print(f"\n=== Detected Gaps (> {GAP_THRESHOLD_MIN} mins) ===") gaps_found = 0 for i, diff in enumerate(intervals_min): if diff > GAP_THRESHOLD_MIN: gaps_found += 1 gap_time = datetime.utcfromtimestamp(timestamps[i+1]).strftime('%Y-%m-%d %H:%M:%S') missed = round(diff / 15) - 1 print(f"Gap around {gap_time} UTC | Duration: {diff:.1f} mins (~{missed} missing readings)") if gaps_found == 0: print("No gaps detected.")