diff --git a/entropy.py b/entropy.py index ed7f3d7..480b5f2 100644 --- a/entropy.py +++ b/entropy.py @@ -24,19 +24,31 @@ def main(): parser.add_argument("--url", default="http://192.168.0.200/mjpg/video.mjpg", help="Camera MJPEG stream URL") parser.add_argument("--single", type=int, default=1, help="Generate N random numbers and exit (default: 1)") parser.add_argument("--bit", type=int, default=256, help="Bit length of each random number (default: 256)") + parser.add_argument("--loop", action="store_true", help="Run forever, generating numbers every second") args = parser.parse_args() - for i in range(args.single): - try: - frame = fetch_frame_opencv(args.url) - random_numbers = generate_random_numbers(frame, [args.bit]) - for number in random_numbers.values(): - print(f"{number:x}") # Print as hex without '0x' prefix - except Exception as e: - print(f"Error: {e}", file=sys.stderr) - return 1 - if args.single > 1 and i < args.single - 1: - time.sleep(1) # Small delay between frames in single mode + if args.loop: + while True: + try: + frame = fetch_frame_opencv(args.url) + random_numbers = generate_random_numbers(frame, [args.bit]) + for number in random_numbers.values(): + print(f"{number:x}") + except Exception as e: + print(f"Error: {e}", file=sys.stderr) + time.sleep(1) # Wait before retrying + else: + for i in range(args.single): + try: + frame = fetch_frame_opencv(args.url) + random_numbers = generate_random_numbers(frame, [args.bit]) + for number in random_numbers.values(): + print(f"{number:x}") + except Exception as e: + print(f"Error: {e}", file=sys.stderr) + return 1 + if args.single > 1 and i < args.single - 1: + time.sleep(1) # Small delay between frames if __name__ == "__main__": import sys