Files
Gainsight/Scripts/drac_test.py
2023-03-28 16:55:54 -04:00

66 lines
2.5 KiB
Python

import adbase
import json
import time
import requests
class birdnet(adbase.ADBase):
def initialize(self):
self.hassapi = self.get_plugin_api("HASS")
self.adapi = self.get_ad_api()
self.mqttapi = self.get_plugin_api("MQTT")
self.birdnet_mqtt = "birdnet"
self.mqttapi.listen_event(
self.birdnet_message, "MQTT_MESSAGE", topic=self.birdnet_mqtt
)
def birdnet_message(self, event_name, data, kwargs):
pre_split = data["payload"]
common_name = pre_split.split(",")[0].strip()
science_name = pre_split.split(",")[1].strip()
date_seen = pre_split.split(",")[2].strip
time_seen = pre_split.split(",")[3].strip()
confidence = pre_split.split(",")[5].strip()
# print(f"A {common_name} was seen on {date_seen} at {time_seen}. Confidence is {confidence}.")
self.mqttapi.mqtt_publish("birdnet/sensors/common_name", common_name)
self.mqttapi.mqtt_publish("birdnet/sensors/science_name", science_name)
self.mqttapi.mqtt_publish("birdnet/sensors/time_seen", time_seen)
self.mqttapi.mqtt_publish("birdnet/sensors/date_seen", date_seen)
self.mqttapi.mqtt_publish("birdnet/sensors/confidence", confidence)
url = f"https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles={science_name}"
response = requests.get(url)
response = response.json()
for value in response["query"]["pages"]:
wiki_desc = response["query"]["pages"][value]["extract"]
self.hassapi.set_state(
"sensor.birdnet_wiki", state="on", attributes={"description": wiki_desc}
)
headers = {"User-Agent": "Python_Flickr/1.0"}
flickr_api = "2b550e7db4a944843a46e57c263582e3"
flickr_url = f"https://www.flickr.com/services/rest/?method=flickr.photos.search&api_key={flickr_api}&text={common_name} bird&sort=relevance&per_page=5&media=photos&format=json&nojsoncallback=1"
flickr_resp = requests.get(url=flickr_url, headers=headers)
data = flickr_resp.json()["photos"]["photo"][0]
print(data)
image_url = (
"https://farm"
+ str(data["farm"])
+ ".static.flickr.com/"
+ str(data["server"])
+ "/"
+ str(data["id"])
+ "_"
+ str(data["secret"])
+ "_n.jpg"
)
self.hassapi.set_state(
"sensor.birdpic_test", state="on", attributes={"image": image_url}
)