diff --git a/scripts/utils/classes.py b/scripts/utils/classes.py new file mode 100644 index 0000000..38c29cf --- /dev/null +++ b/scripts/utils/classes.py @@ -0,0 +1,49 @@ +import datetime +import os +import re + +from tzlocal import get_localzone + + +class Detection: + def __init__(self, file_date, start_time, stop_time, scientific_name, common_name, confidence): + self.start = float(start_time) + self.stop = float(stop_time) + self.datetime = file_date + datetime.timedelta(seconds=self.start) + self.date = self.datetime.strftime("%Y-%m-%d") + self.time = self.datetime.strftime("%H:%M:%S") + self.iso8601 = self.datetime.astimezone(get_localzone()).isoformat() + self.week = self.datetime.isocalendar()[1] + self.confidence = round(float(confidence), 4) + self.confidence_pct = round(self.confidence * 100) + self.species = scientific_name + self.scientific_name = scientific_name + self.common_name = common_name + self.common_name_safe = self.common_name.replace("'", "").replace(" ", "_") + self.file_name_extr = None + + def __str__(self): + return f'Detection({self.species}, {self.common_name}, {self.confidence}, {self.iso8601})' + + +class ParseFileName: + def __init__(self, file_name): + self.file_name = file_name + name = os.path.splitext(os.path.basename(file_name))[0] + date_created = re.search('^[0-9]+-[0-9]+-[0-9]+', name).group() + time_created = re.search('[0-9]+:[0-9]+:[0-9]+$', name).group() + self.file_date = datetime.datetime.strptime(f'{date_created}T{time_created}', "%Y-%m-%dT%H:%M:%S") + self.root = name + + ident_match = re.search("RTSP_[0-9]+-", file_name) + self.RTSP_id = ident_match.group() if ident_match is not None else "" + + @property + def iso8601(self): + current_iso8601 = self.file_date.astimezone(get_localzone()).isoformat() + return current_iso8601 + + @property + def week(self): + week = self.file_date.isocalendar()[1] + return week