Improvements to motion detection and download methods, add to examples

This commit is contained in:
Bobrock
2020-12-13 14:56:10 -06:00
parent 00835e3543
commit 86117de420
4 changed files with 107 additions and 6 deletions

View File

@@ -0,0 +1,43 @@
import os
from configparser import RawConfigParser
from datetime import datetime as dt, timedelta
from reolink_api import Camera
def read_config(props_path: str) -> dict:
"""Reads in a properties file into variables.
NB! this config file is kept out of commits with .gitignore. The structure of this file is such:
# secrets.cfg
[camera]
ip={ip_address}
username={username}
password={password}
"""
config = RawConfigParser()
assert os.path.exists(props_path), f"Path does not exist: {props_path}"
config.read(props_path)
return config
# Read in your ip, username, & password
# (NB! you'll likely have to create this file. See tests/test_camera.py for details on structure)
config = read_config('../secrets.cfg')
ip = config.get('camera', 'ip')
un = config.get('camera', 'username')
pw = config.get('camera', 'password')
# Connect to camera
cam = Camera(ip, un, pw)
start = (dt.now() - timedelta(hours=1))
end = dt.now()
# Collect motion events between these timestamps for substream
processed_motions = cam.get_motion_files(start=start, end=end, streamtype='sub')
dl_dir = os.path.join(os.path.expanduser('~'), 'Downloads')
for i, motion in enumerate(processed_motions):
fname = motion['filename']
# Download the mp4
resp = cam.get_file(fname, output_path=os.path.join(dl_dir, f'motion_event_{i}.mp4'))