DoNotDisturb
DoNotDisturb copied to clipboard
Run python script from DND?
Hello everyone,
Sorry for the spam but I couldn't see where to post that.
I made a python script using Pushover with image capture to be run by DND but I get a:
2023-04-09 02:57:55 +0000: failed to execute python3 /Users/me/DoNotDisturb/dnd.py
Any idea why I can't run the script? (I tried from a terminal locally and it runs without problem, but DND can't run it for some reason)
The script:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Author: Kodsama
import requests
import subprocess
import time
import cv2
import numpy as np
import logging
logging.basicConfig(level=logging.INFO)
#Edit these variables
appToken = '' # Pushover app token
userToken = '' # Pushover user token
logFile = '/Library/Objective-See/DND/DND.log' # DND logfile path
imgFile = '/Users/me/DoNotDisturb/DND.jpg' # Snapshot path
wait = 0.01 # Waiting time in seconds
pics = 10 # Number of snapshots to take
# Don't edit from there
logging.info('Script start')
title = time.strftime("%c")
proc = subprocess.Popen(['tail', logFile], stdout=subprocess.PIPE)
log = proc.stdout.read()
frameWidth = 640
frameHeight = 480
cap = cv2.VideoCapture(0)
cap.set(3, frameWidth)
cap.set(4, frameHeight)
cap.set(10,150)
time.sleep(0.5) # Make sure everything is settled
logging.info('Camera set-up done')
success = False
try:
if cap.isOpened():
logging.info('Cheese :D')
success, img = cap.read()
for _ in range(pics):
success, img2 = cap.read()
img = np.vstack((img, img2))
time.sleep(wait)
finally:
cap.release()
logging.info(f'Snapshot done: success={success}')
if success:
logging.info(f'Write snapshot')
cv2.imwrite(imgFile, img)
logging.info(f'Send Pushover with snapshot')
r = requests.post("https://api.pushover.net/1/messages.json", data = {
"token": appToken,
"user": userToken,
"message": f"Do Not Disturb alert\n{title}\n{log}"
},
files = {
"attachment": ("snapshot.jpg", open(imgFile, "rb"), "image/jpeg")
})
else:
logging.warning(f'Send Pushover without snapshot')
r = requests.post("https://api.pushover.net/1/messages.json", data = {
"token": appToken,
"user": userToken,
"message": f"Do Not Disturb alert\n{title}\n{log}"
})
logging.info(f'Script done!')