#410 Flickr image in notifications
This commit is contained in:
@@ -327,6 +327,8 @@ https://discordapp.com/api/webhooks/{WebhookID}/{WebhookToken}
|
|||||||
<dd>Sigmoid Sensitivity set in "Advanced Settings"</dd>
|
<dd>Sigmoid Sensitivity set in "Advanced Settings"</dd>
|
||||||
<dt>$overlap</dt>
|
<dt>$overlap</dt>
|
||||||
<dd>Overlap set in "Advanced Settings"</dd>
|
<dd>Overlap set in "Advanced Settings"</dd>
|
||||||
|
<dt>$flickrimage</dt>
|
||||||
|
<dd>A preview image of the detected species from Flickr. Set your API key below.</dd>
|
||||||
</dl>
|
</dl>
|
||||||
<p>Use the variables defined above to customize your notification title and body.</p>
|
<p>Use the variables defined above to customize your notification title and body.</p>
|
||||||
<label for="apprise_notification_title">Notification Title: </label>
|
<label for="apprise_notification_title">Notification Title: </label>
|
||||||
|
|||||||
@@ -3,17 +3,25 @@ import os
|
|||||||
import socket
|
import socket
|
||||||
import sqlite3
|
import sqlite3
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
import requests
|
||||||
|
|
||||||
userDir = os.path.expanduser('~')
|
userDir = os.path.expanduser('~')
|
||||||
APPRISE_CONFIG = userDir + '/BirdNET-Pi/apprise.txt'
|
APPRISE_CONFIG = userDir + '/BirdNET-Pi/apprise.txt'
|
||||||
DB_PATH = userDir + '/BirdNET-Pi/scripts/birds.db'
|
DB_PATH = userDir + '/BirdNET-Pi/scripts/birds.db'
|
||||||
|
|
||||||
|
|
||||||
def notify(body, title):
|
def notify(body, title, attached=None):
|
||||||
apobj = apprise.Apprise()
|
apobj = apprise.Apprise()
|
||||||
config = apprise.AppriseConfig()
|
config = apprise.AppriseConfig()
|
||||||
config.add(APPRISE_CONFIG)
|
config.add(APPRISE_CONFIG)
|
||||||
apobj.add(config)
|
apobj.add(config)
|
||||||
|
if attached is not None:
|
||||||
|
apobj.notify(
|
||||||
|
body=body,
|
||||||
|
title=title,
|
||||||
|
attach=attached,
|
||||||
|
)
|
||||||
|
else:
|
||||||
apobj.notify(
|
apobj.notify(
|
||||||
body=body,
|
body=body,
|
||||||
title=title,
|
title=title,
|
||||||
@@ -37,6 +45,21 @@ def sendAppriseNotifications(species, confidence, path, date, time, week, latitu
|
|||||||
websiteurl = "http://"+socket.gethostname()+".local"
|
websiteurl = "http://"+socket.gethostname()+".local"
|
||||||
|
|
||||||
listenurl = websiteurl+"?filename="+path
|
listenurl = websiteurl+"?filename="+path
|
||||||
|
image_url = None
|
||||||
|
flickr_images = {}
|
||||||
|
|
||||||
|
if len(settings_dict.get('FLICKR_API_KEY')) > 0 and "$flickrimage" in body:
|
||||||
|
if not comName in flickr_images:
|
||||||
|
# TODO: Make this work with non-english comnames. Implement the "// convert sci name to English name" logic from overview.php here
|
||||||
|
url = 'https://www.flickr.com/services/rest/?method=flickr.photos.search&api_key='+str(settings_dict.get('FLICKR_API_KEY'))+'&text='+str(comName)+'&sort=relevance&per_page=5&media=photos&format=json&license=2%2C3%2C4%2C5%2C6%2C9&nojsoncallback=1'
|
||||||
|
resp = requests.get(url=url)
|
||||||
|
data = resp.json()["photos"]["photo"][0]
|
||||||
|
|
||||||
|
image_url = 'https://farm'+str(data["farm"])+'.static.flickr.com/'+str(data["server"])+'/'+str(data["id"])+'_'+str(data["secret"])+'_n.jpg'
|
||||||
|
flickr_images[comName] = image_url
|
||||||
|
else:
|
||||||
|
image_url = flickr_images[comName]
|
||||||
|
|
||||||
|
|
||||||
if settings_dict.get('APPRISE_NOTIFY_EACH_DETECTION') == "1":
|
if settings_dict.get('APPRISE_NOTIFY_EACH_DETECTION') == "1":
|
||||||
notify_body = body.replace("$sciname", sciName)\
|
notify_body = body.replace("$sciname", sciName)\
|
||||||
@@ -50,6 +73,7 @@ def sendAppriseNotifications(species, confidence, path, date, time, week, latitu
|
|||||||
.replace("$longitude", longitude)\
|
.replace("$longitude", longitude)\
|
||||||
.replace("$cutoff", cutoff)\
|
.replace("$cutoff", cutoff)\
|
||||||
.replace("$sens", sens)\
|
.replace("$sens", sens)\
|
||||||
|
.replace("$flickrimage", "")\
|
||||||
.replace("$overlap", overlap)
|
.replace("$overlap", overlap)
|
||||||
notify_title = title.replace("$sciname", sciName)\
|
notify_title = title.replace("$sciname", sciName)\
|
||||||
.replace("$comname", comName)\
|
.replace("$comname", comName)\
|
||||||
@@ -62,8 +86,9 @@ def sendAppriseNotifications(species, confidence, path, date, time, week, latitu
|
|||||||
.replace("$longitude", longitude)\
|
.replace("$longitude", longitude)\
|
||||||
.replace("$cutoff", cutoff)\
|
.replace("$cutoff", cutoff)\
|
||||||
.replace("$sens", sens)\
|
.replace("$sens", sens)\
|
||||||
|
.replace("$flickrimage", "")\
|
||||||
.replace("$overlap", overlap)
|
.replace("$overlap", overlap)
|
||||||
notify(notify_body, notify_title)
|
notify(notify_body, notify_title, image_url)
|
||||||
|
|
||||||
APPRISE_NOTIFICATION_NEW_SPECIES_DAILY_COUNT_LIMIT = 1 # Notifies the first N per day.
|
APPRISE_NOTIFICATION_NEW_SPECIES_DAILY_COUNT_LIMIT = 1 # Notifies the first N per day.
|
||||||
if settings_dict.get('APPRISE_NOTIFY_NEW_SPECIES_EACH_DAY') == "1":
|
if settings_dict.get('APPRISE_NOTIFY_NEW_SPECIES_EACH_DAY') == "1":
|
||||||
@@ -90,6 +115,7 @@ def sendAppriseNotifications(species, confidence, path, date, time, week, latitu
|
|||||||
.replace("$longitude", longitude)\
|
.replace("$longitude", longitude)\
|
||||||
.replace("$cutoff", cutoff)\
|
.replace("$cutoff", cutoff)\
|
||||||
.replace("$sens", sens)\
|
.replace("$sens", sens)\
|
||||||
|
.replace("$flickrimage", "")\
|
||||||
.replace("$overlap", overlap)\
|
.replace("$overlap", overlap)\
|
||||||
+ " (first time today)"
|
+ " (first time today)"
|
||||||
notify_title = title.replace("$sciname", sciName)\
|
notify_title = title.replace("$sciname", sciName)\
|
||||||
@@ -103,9 +129,10 @@ def sendAppriseNotifications(species, confidence, path, date, time, week, latitu
|
|||||||
.replace("$longitude", longitude)\
|
.replace("$longitude", longitude)\
|
||||||
.replace("$cutoff", cutoff)\
|
.replace("$cutoff", cutoff)\
|
||||||
.replace("$sens", sens)\
|
.replace("$sens", sens)\
|
||||||
|
.replace("$flickrimage", "")\
|
||||||
.replace("$overlap", overlap)\
|
.replace("$overlap", overlap)\
|
||||||
+ " (first time today)"
|
+ " (first time today)"
|
||||||
notify(notify_body, notify_title)
|
notify(notify_body, notify_title, image_url)
|
||||||
con.close()
|
con.close()
|
||||||
except sqlite3.Error as e:
|
except sqlite3.Error as e:
|
||||||
print(e)
|
print(e)
|
||||||
@@ -135,6 +162,7 @@ def sendAppriseNotifications(species, confidence, path, date, time, week, latitu
|
|||||||
.replace("$longitude", longitude)\
|
.replace("$longitude", longitude)\
|
||||||
.replace("$cutoff", cutoff)\
|
.replace("$cutoff", cutoff)\
|
||||||
.replace("$sens", sens)\
|
.replace("$sens", sens)\
|
||||||
|
.replace("$flickrimage", "")\
|
||||||
.replace("$overlap", overlap)\
|
.replace("$overlap", overlap)\
|
||||||
+ " (only seen " + str(int(numberDetections)) + " times in last 7d)"
|
+ " (only seen " + str(int(numberDetections)) + " times in last 7d)"
|
||||||
notify_title = title.replace("$sciname", sciName)\
|
notify_title = title.replace("$sciname", sciName)\
|
||||||
@@ -148,9 +176,10 @@ def sendAppriseNotifications(species, confidence, path, date, time, week, latitu
|
|||||||
.replace("$longitude", longitude)\
|
.replace("$longitude", longitude)\
|
||||||
.replace("$cutoff", cutoff)\
|
.replace("$cutoff", cutoff)\
|
||||||
.replace("$sens", sens)\
|
.replace("$sens", sens)\
|
||||||
|
.replace("$flickrimage", "")\
|
||||||
.replace("$overlap", overlap)\
|
.replace("$overlap", overlap)\
|
||||||
+ " (only seen " + str(int(numberDetections)) + " times in last 7d)"
|
+ " (only seen " + str(int(numberDetections)) + " times in last 7d)"
|
||||||
notify(notify_body, notify_title)
|
notify(notify_body, notify_title, image_url)
|
||||||
con.close()
|
con.close()
|
||||||
except sqlite3.Error:
|
except sqlite3.Error:
|
||||||
print("Database busy")
|
print("Database busy")
|
||||||
|
|||||||
Reference in New Issue
Block a user