mirror of
https://github.com/azaion/ai-training.git
synced 2026-04-22 23:46:35 +00:00
fix rabbit consumer
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
import datetime
|
||||
import os
|
||||
import msgpack
|
||||
import json
|
||||
import datetime
|
||||
|
||||
|
||||
class Detection:
|
||||
@@ -17,21 +19,49 @@ class Detection:
|
||||
return f'{self.cls}: {self.x:.2f} {self.y:.2f} {self.w:.2f} {self.h:.2f}, prob: {(self.confidence * 100):.1f}%'
|
||||
|
||||
|
||||
class AnnotationCreatedMessage:
|
||||
class AnnotationCreatedMessageNarrow:
|
||||
def __init__(self, msgpack_bytes):
|
||||
unpacked_data = msgpack.unpackb(msgpack_bytes)
|
||||
self.createdDate = unpacked_data.get(0)
|
||||
unpacked_data = msgpack.unpackb(msgpack_bytes, strict_map_key=False)
|
||||
self.name = unpacked_data.get(1)
|
||||
self.originalMediaName = unpacked_data.get(2)
|
||||
self.time = unpacked_data.get(3)
|
||||
self.imageExtension = unpacked_data.get(4)
|
||||
detections_json_str = unpacked_data.get(5)
|
||||
self.createdEmail = unpacked_data.get(2)
|
||||
|
||||
|
||||
class AnnotationCreatedMessage:
|
||||
last_offset = None
|
||||
|
||||
def __init__(self, msgpack_bytes):
|
||||
unpacked_data = self.read_rabbit(msgpack_bytes)
|
||||
ts = unpacked_data[0]
|
||||
self.createdDate = datetime.datetime.utcfromtimestamp(ts.seconds) + datetime.timedelta(microseconds=ts.nanoseconds/1000)
|
||||
self.name = unpacked_data[1]
|
||||
self.originalMediaName = unpacked_data[2]
|
||||
self.time = datetime.timedelta(microseconds=unpacked_data[3]/10)
|
||||
self.imageExtension = unpacked_data[4]
|
||||
detections_json_str = unpacked_data[5]
|
||||
self.detections = self._parse_detections(detections_json_str)
|
||||
self.image = unpacked_data.get(6)
|
||||
self.createdRole = unpacked_data.get(7)
|
||||
self.createdEmail = unpacked_data.get(8)
|
||||
self.source = unpacked_data.get(9)
|
||||
self.status = unpacked_data.get(10)
|
||||
self.image = unpacked_data[6]
|
||||
self.createdRole = unpacked_data[7]
|
||||
self.createdEmail = unpacked_data[8]
|
||||
self.source = unpacked_data[9]
|
||||
self.status = unpacked_data[10]
|
||||
|
||||
@staticmethod
|
||||
def read_rabbit(message_bytes):
|
||||
if AnnotationCreatedMessage.last_offset is not None:
|
||||
try:
|
||||
unpacked_data = msgpack.unpackb(message_bytes[AnnotationCreatedMessage.last_offset:], raw=False, strict_map_key=False)
|
||||
return unpacked_data
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
for offset in range(3, 15):
|
||||
try:
|
||||
unpacked_data = msgpack.unpackb(message_bytes[offset:], raw=False, strict_map_key=False)
|
||||
AnnotationCreatedMessage.last_offset = offset
|
||||
return unpacked_data
|
||||
except Exception:
|
||||
pass
|
||||
raise Exception(f'Cannot read rabbit message! Bytes: {message_bytes}')
|
||||
|
||||
def __str__(self):
|
||||
if self.detections:
|
||||
@@ -46,13 +76,13 @@ class AnnotationCreatedMessage:
|
||||
if detections_json_str:
|
||||
detections_list = json.loads(detections_json_str)
|
||||
return [Detection(
|
||||
d.get('AnnotationName'),
|
||||
d.get('ClassNumber'),
|
||||
d.get('CenterX'),
|
||||
d.get('CenterY'),
|
||||
d.get('Height'),
|
||||
d.get('Width'),
|
||||
d.get('Probability')
|
||||
d.get('an'),
|
||||
d.get('cl'),
|
||||
d.get('x'),
|
||||
d.get('y'),
|
||||
d.get('w'),
|
||||
d.get('h'),
|
||||
d.get('p')
|
||||
) for d in detections_list]
|
||||
return []
|
||||
|
||||
|
||||
Reference in New Issue
Block a user