Added try/except to prevent exiting of sunset thread
This commit is contained in:
parent
fa157287e1
commit
9d490f8ce4
|
@ -3,7 +3,7 @@ import sys
|
||||||
import json
|
import json
|
||||||
from time import sleep
|
from time import sleep
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, time, timedelta
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from flask import Blueprint, request, jsonify
|
from flask import Blueprint, request, jsonify
|
||||||
|
@ -14,32 +14,40 @@ blueprint = Blueprint('detection', __name__)
|
||||||
|
|
||||||
|
|
||||||
def get_sunset() -> datetime:
|
def get_sunset() -> datetime:
|
||||||
IPGEOLOCATION_API_KEY = os.environ['IPGEOLOCATION_API_KEY']
|
|
||||||
ipgeolocation_api_response = requests.get(f'https://api.ipgeolocation.io/astronomy?apiKey={IPGEOLOCATION_API_KEY}&location=Winter+Haven,+FL')
|
|
||||||
ipgeolocation_api_response.raise_for_status()
|
|
||||||
|
|
||||||
astronomical_json = json.loads(ipgeolocation_api_response.content)
|
|
||||||
sunset_time = datetime.strptime(astronomical_json['sunset'], '%H:%M').time()
|
|
||||||
sunset_date = datetime.now().date()
|
sunset_date = datetime.now().date()
|
||||||
if sunset_time < datetime.now().time():
|
try:
|
||||||
# Sunset has already passed today
|
IPGEOLOCATION_API_KEY = os.environ['IPGEOLOCATION_API_KEY']
|
||||||
sunset_date += timedelta(days=1)
|
ipgeolocation_api_response = requests.get(f'https://api.ipgeolocation.io/astronomy?apiKey={IPGEOLOCATION_API_KEY}&location=Winter+Haven,+FL')
|
||||||
return datetime.combine(sunset_date, sunset_time)
|
ipgeolocation_api_response.raise_for_status()
|
||||||
|
|
||||||
|
astronomical_json = json.loads(ipgeolocation_api_response.content)
|
||||||
|
sunset_time = datetime.strptime(astronomical_json['sunset'], '%H:%M').time()
|
||||||
|
except Exception as e:
|
||||||
|
print(e, file=sys.stderr)
|
||||||
|
sunset_time = time(20, 00, 00)
|
||||||
|
finally:
|
||||||
|
if sunset_time < datetime.now().time():
|
||||||
|
# Sunset has already passed today
|
||||||
|
sunset_date += timedelta(days=1)
|
||||||
|
return datetime.combine(sunset_date, sunset_time)
|
||||||
|
|
||||||
|
|
||||||
def reset_all_camera_detection_at_sunset():
|
def reset_all_camera_detection_at_sunset():
|
||||||
while True:
|
while True:
|
||||||
sunset = get_sunset()
|
try:
|
||||||
print(f'Waiting until {sunset} to reset detection for all cameras...', file=sys.stderr)
|
sunset = get_sunset()
|
||||||
seconds_until_sunset = (sunset - datetime.now()).total_seconds()
|
print(f'Waiting until {sunset} to reset detection for all cameras...', file=sys.stderr)
|
||||||
sleep(seconds_until_sunset)
|
seconds_until_sunset = (sunset - datetime.now()).total_seconds()
|
||||||
|
sleep(seconds_until_sunset)
|
||||||
|
|
||||||
# Get all camera names
|
# Get all camera names
|
||||||
frigate_api_response = requests.get('http://frigate:5000/api/config')
|
frigate_api_response = requests.get('http://frigate:5000/api/config')
|
||||||
frigate_api_response.raise_for_status()
|
frigate_api_response.raise_for_status()
|
||||||
all_camera_names = json.loads(frigate_api_response.content)['cameras'].keys()
|
all_camera_names = json.loads(frigate_api_response.content)['cameras'].keys()
|
||||||
for camera_name in all_camera_names:
|
for camera_name in all_camera_names:
|
||||||
set_camera_detection(camera_name, True)
|
set_camera_detection(camera_name, True)
|
||||||
|
except Exception as e:
|
||||||
|
print(e, file=sys.stderr)
|
||||||
|
|
||||||
|
|
||||||
def set_camera_detection(camera: str, value: bool, delay: int = 0) -> None:
|
def set_camera_detection(camera: str, value: bool, delay: int = 0) -> None:
|
||||||
|
|
Loading…
Reference in New Issue