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!')
@kodsama nice idea. I'll love to modify a little bit and use it. Btw I'm having an issue "App is not available in your region" my regions is United States. Maybe you had the same issue and now workaround?