From 910d692f0d36eb331c4b61640b2ab2a4d4034faa Mon Sep 17 00:00:00 2001 From: April Date: Fri, 21 Oct 2022 21:50:05 -0700 Subject: [PATCH] WateringNeeds, Aches & Pains, and Mosquito Activity records --- recordGenerators/AchesAndPains.py | 76 ++++++++++++++++++++++++++++ recordGenerators/MosquitoActivity.py | 76 ++++++++++++++++++++++++++++ recordGenerators/WateringNeeds.py | 76 ++++++++++++++++++++++++++++ 3 files changed, 228 insertions(+) create mode 100644 recordGenerators/AchesAndPains.py create mode 100644 recordGenerators/MosquitoActivity.py create mode 100644 recordGenerators/WateringNeeds.py diff --git a/recordGenerators/AchesAndPains.py b/recordGenerators/AchesAndPains.py new file mode 100644 index 0000000..6631ca1 --- /dev/null +++ b/recordGenerators/AchesAndPains.py @@ -0,0 +1,76 @@ +import shutil +import requests +import logging,coloredlogs +from py2Lib import bit +import Util.MachineProductCfg as MPC +import records.LFRecord as LFR +import gzip +from os import remove +import xml.dom.minidom + +l = logging.getLogger(__name__) +coloredlogs.install() + +geocodes = [] +coopIds = [] + +for i in MPC.getPrimaryLocations(): + coopIds.append(LFR.getCoopId(i)) + geocodes.append(LFR.getLatLong(i).replace('/', ',')) + +apiKey = "21d8a80b3d6b444998a80b3d6b1449d3" + +def getData(coopId, geocode): + fetchUrl = f"https://api.weather.com/v2/indices/achePain/daypart/7day?geocode={geocode}&language=en-US&format=xml&apiKey={apiKey}" + + res = requests.get(fetchUrl) + + if res.status_code != 200: + l.error("DO NOT REPORT THE ERROR BELOW") + l.error(f"Failed to write AchesAndPains record -- Status code {res.status_code}") + return + + data = res.text + newData = data[63:-26] + + i2Doc = f'\n \n {newData}\n {coopId}\n ' + + f = open('./.temp/AchesAndPains.i2m', 'a') + f.write(i2Doc) + f.close() + +def makeRecord(): + l.info("Writing AchesAndPains record.") + + header = '' + footer = '' + + with open('./.temp/AchesAndPains.i2m', 'a') as doc: + doc.write(header) + + for (x, y) in zip(coopIds, geocodes): + getData(x,y) + + with open('./.temp/AchesAndPains.i2m', 'a') as end: + end.write(footer) + + dom = xml.dom.minidom.parse('./.temp/AchesAndPains.i2m') + xmlPretty = dom.toprettyxml(indent= " ") + + with open('./.temp/AchesAndPains.i2m', 'w') as g: + g.write(xmlPretty[23:]) + g.close() + + + # Compresss i2m to gzip + with open ('./.temp/AchesAndPains.i2m', 'rb') as f_in: + with gzip.open('./.temp/AchesAndPains.gz', 'wb') as f_out: + shutil.copyfileobj(f_in, f_out) + + file = "./.temp/AchesAndPains.gz" + command = '' + + bit.sendFile([file], [command], 1, 0) + + remove('./.temp/AchesAndPains.i2m') + remove('./.temp/AchesAndPains.gz') \ No newline at end of file diff --git a/recordGenerators/MosquitoActivity.py b/recordGenerators/MosquitoActivity.py new file mode 100644 index 0000000..572290c --- /dev/null +++ b/recordGenerators/MosquitoActivity.py @@ -0,0 +1,76 @@ +import shutil +import requests +import logging,coloredlogs +from py2Lib import bit +import Util.MachineProductCfg as MPC +import records.LFRecord as LFR +import gzip +from os import remove +import xml.dom.minidom + +l = logging.getLogger(__name__) +coloredlogs.install() + +geocodes = [] +coopIds = [] + +for i in MPC.getPrimaryLocations(): + coopIds.append(LFR.getCoopId(i)) + geocodes.append(LFR.getLatLong(i).replace('/', ',')) + +apiKey = "21d8a80b3d6b444998a80b3d6b1449d3" + +def getData(coopId, geocode): + fetchUrl = f"https://api.weather.com/v2/indices/mosquito/daypart/7day?geocode={geocode}&language=en-US&format=xml&apiKey={apiKey}" + + res = requests.get(fetchUrl) + + if res.status_code != 200: + l.error("DO NOT REPORT THE ERROR BELOW") + l.error(f"Failed to write MosquitoActivity record -- Status code {res.status_code}") + return + + data = res.text + newData = data[63:-26] + + i2Doc = f'\n \n {newData}\n {coopId}\n ' + + f = open('./.temp/MosquitoActivity.i2m', 'a') + f.write(i2Doc) + f.close() + +def makeRecord(): + l.info("Writing MosquitoActivity record.") + + header = '' + footer = '' + + with open('./.temp/MosquitoActivity.i2m', 'a') as doc: + doc.write(header) + + for (x, y) in zip(coopIds, geocodes): + getData(x,y) + + with open('./.temp/MosquitoActivity.i2m', 'a') as end: + end.write(footer) + + dom = xml.dom.minidom.parse('./.temp/MosquitoActivity.i2m') + xmlPretty = dom.toprettyxml(indent= " ") + + with open('./.temp/MosquitoActivity.i2m', 'w') as g: + g.write(xmlPretty[23:]) + g.close() + + + # Compresss i2m to gzip + with open ('./.temp/MosquitoActivity.i2m', 'rb') as f_in: + with gzip.open('./.temp/MosquitoActivity.gz', 'wb') as f_out: + shutil.copyfileobj(f_in, f_out) + + file = "./.temp/MosquitoActivity.gz" + command = '' + + bit.sendFile([file], [command], 1, 0) + + remove('./.temp/MosquitoActivity.i2m') + remove('./.temp/MosquitoActivity.gz') \ No newline at end of file diff --git a/recordGenerators/WateringNeeds.py b/recordGenerators/WateringNeeds.py new file mode 100644 index 0000000..0436811 --- /dev/null +++ b/recordGenerators/WateringNeeds.py @@ -0,0 +1,76 @@ +import shutil +import requests +import logging,coloredlogs +from py2Lib import bit +import Util.MachineProductCfg as MPC +import records.LFRecord as LFR +import gzip +from os import remove +import xml.dom.minidom + +l = logging.getLogger(__name__) +coloredlogs.install() + +geocodes = [] +coopIds = [] + +for i in MPC.getPrimaryLocations(): + coopIds.append(LFR.getCoopId(i)) + geocodes.append(LFR.getLatLong(i).replace('/', ',')) + +apiKey = "21d8a80b3d6b444998a80b3d6b1449d3" + +def getData(coopId, geocode): + fetchUrl = f"https://api.weather.com/v2/indices/wateringNeeds/daypart/7day?geocode={geocode}&language=en-US&format=xml&apiKey={apiKey}" + + res = requests.get(fetchUrl) + + if res.status_code != 200: + l.error("DO NOT REPORT THE ERROR BELOW") + l.error(f"Failed to write WateringNeeds record -- Status code {res.status_code}") + return + + data = res.text + newData = data[63:-26] + + i2Doc = f'\n \n {newData}\n {coopId}\n ' + + f = open('./.temp/WateringNeeds.i2m', 'a') + f.write(i2Doc) + f.close() + +def makeRecord(): + l.info("Writing WateringNeeds record.") + + header = '' + footer = '' + + with open('./.temp/WateringNeeds.i2m', 'a') as doc: + doc.write(header) + + for (x, y) in zip(coopIds, geocodes): + getData(x,y) + + with open('./.temp/WateringNeeds.i2m', 'a') as end: + end.write(footer) + + dom = xml.dom.minidom.parse('./.temp/WateringNeeds.i2m') + xmlPretty = dom.toprettyxml(indent= " ") + + with open('./.temp/WateringNeeds.i2m', 'w') as g: + g.write(xmlPretty[23:]) + g.close() + + + # Compresss i2m to gzip + with open ('./.temp/WateringNeeds.i2m', 'rb') as f_in: + with gzip.open('./.temp/WateringNeeds.gz', 'wb') as f_out: + shutil.copyfileobj(f_in, f_out) + + file = "./.temp/WateringNeeds.gz" + command = '' + + bit.sendFile([file], [command], 1, 0) + + remove('./.temp/WateringNeeds.i2m') + remove('./.temp/WateringNeeds.gz') \ No newline at end of file