-
Notifications
You must be signed in to change notification settings - Fork 145
Expand file tree
/
Copy pathblinkapp.py
More file actions
44 lines (32 loc) · 1.12 KB
/
blinkapp.py
File metadata and controls
44 lines (32 loc) · 1.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
"""Script to run blinkpy as an blinkapp."""
from os import environ
import asyncio
from datetime import datetime, timedelta
from aiohttp import ClientSession
from blinkpy.blinkpy import Blink
from blinkpy.auth import Auth
from blinkpy.helpers.util import json_load
CREDFILE = environ.get("CREDFILE")
TIMEDELTA = timedelta(environ.get("TIMEDELTA", 1))
def get_date():
"""Return now - timedelta for blinkpy."""
return (datetime.now() - TIMEDELTA).isoformat()
async def download_videos(blink, save_dir="/media"):
"""Make request to download videos."""
await blink.download_videos(save_dir, since=get_date())
async def start(session: ClientSession):
"""Startup blink app."""
blink = Blink(session=session)
blink.auth = Auth(await json_load(CREDFILE), session=session)
await blink.start()
return blink
async def main():
"""Run the blink app."""
session = ClientSession()
blink = await start(session)
await download_videos(blink)
await blink.save(CREDFILE)
await session.close()
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())