recv_darkirc_msgs.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/usr/bin/python3
  2. import zmq
  3. from pydrk import api, serial
  4. from datetime import datetime
  5. api_client = api.Api(addr="127.0.0.1", port=9484)
  6. context = zmq.Context()
  7. pub_socket = context.socket(zmq.SUB)
  8. pub_socket.connect("tcp://127.0.0.1:9485")
  9. pub_socket.setsockopt(zmq.SUBSCRIBE, b"")
  10. node_path = "/plugin/darkirc"
  11. sig_name = "recv"
  12. slot_name = "python_listener"
  13. user_data = b"darkirc_recv"
  14. slot_id = api_client.register_slot(node_path, sig_name, slot_name, user_data)
  15. print(f"Registered slot ID: {slot_id}")
  16. print("Listening...")
  17. print("=" * 80)
  18. while True:
  19. parts = pub_socket.recv_multipart()
  20. assert len(parts) == 2
  21. signal_data, recv_user_data = parts
  22. assert recv_user_data == user_data
  23. cur = serial.Cursor(signal_data)
  24. channel = serial.decode_str(cur)
  25. timestamp = serial.read_u64(cur)
  26. msg_id_bytes = cur.read(32)
  27. msg_id = msg_id_bytes.hex()
  28. nick = serial.decode_str(cur)
  29. msg = serial.decode_str(cur)
  30. dt = datetime.fromtimestamp(timestamp / 1000.0)
  31. print(f"[{dt.strftime('%Y-%m-%d %H:%M:%S')}] #{channel} <{nick}> {msg}")
  32. print(f" Message ID: {msg_id}")
  33. print("-" * 80)