Add whisper backend method to get closest sample from timestamp.
This commit is contained in:
parent
e421956817
commit
0ac724636e
|
@ -28,6 +28,7 @@ import whisper
|
|||
|
||||
from django.conf import settings
|
||||
|
||||
from . import time_utils
|
||||
|
||||
class WhisperBackend():
|
||||
|
||||
|
@ -114,3 +115,30 @@ class WhisperBackend():
|
|||
if values:
|
||||
return min(values)
|
||||
return None
|
||||
|
||||
def get_closest(self, timestamp, lookup_range=None):
|
||||
if not timestamp:
|
||||
return None
|
||||
before = None
|
||||
after = None
|
||||
data = self.get_timestamped_data(lookup_range, timestamp - 1)
|
||||
if data:
|
||||
before = data[-1]
|
||||
if before and timestamp == time_utils.unix_time(before[0]):
|
||||
return before
|
||||
data = self.get_timestamped_data(lookup_range,
|
||||
timestamp + lookup_range - 1)
|
||||
if data:
|
||||
after = data[0]
|
||||
if not before and not after:
|
||||
return None
|
||||
if before and not after:
|
||||
return before
|
||||
if after and not before:
|
||||
return after
|
||||
diff_before = timestamp - time_utils.unix_time(before[0])
|
||||
diff_after = time_utils.unix_time(after[0]) - timestamp
|
||||
if diff_before <= diff_after:
|
||||
return before
|
||||
else:
|
||||
return after
|
||||
|
|
Reference in New Issue