Add whisper backend method to get closest sample from timestamp.

This commit is contained in:
Mikaël Ates 2016-01-18 17:51:09 +01:00
parent e421956817
commit 0ac724636e
1 changed files with 28 additions and 0 deletions

View File

@ -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