#!/usr/bin/env python3 import sys import urllib.request import json import os import shutil from PIL import ImageFont from PIL import ImageDraw from PIL import Image from dotenv import load_dotenv from paramiko import SSHClient from scp import SCPClient #### HEAR BE DRAGONS # set python environment if getattr(sys, 'frozen', False): bundle_dir = sys._MEIPASS else: # we are running in a normal Python environment bundle_dir = os.path.dirname(os.path.abspath(__file__)) # load environmental variables load_dotenv(bundle_dir + "/.env") ## get JSON from solar edge server infile = os.getenv('INFILE') outfile = os.getenv('OUTFILE') font_face = os.getenv('FONT_FACE') ssh_host = os.getenv('SSH_HOST') ssh_port = os.getenv('SSH_PORT') ssh_user = os.getenv('SSH_USER') ssh_folder = os.getenv('SSH_FOLDER') line1 = int(os.getenv('LINE1')) line2 = int(os.getenv('LINE2')) xpos = int(os.getenv('MARGIN')) fill_color = str(os.getenv('COLOR')) co2 = 0 trees = 0 url = [] while os.getenv('URL'+str(len(url)+1)): req = urllib.request.Request(os.getenv('URL'+str(len(url)+1))) url.append(os.getenv('URL'+str(len(url)+1))) # parsing response r = urllib.request.urlopen(req).read() cont = json.loads(r.decode('utf-8')) co2 += round(cont['envBenefits']['gasEmissionSaved']['co2']) trees += round(cont['envBenefits']['treesPlanted']) ## create image for website image = Image.open(bundle_dir + "/" + infile) font = ImageFont.truetype(bundle_dir + "/" + font_face, 19) draw = ImageDraw.Draw(image) draw.text((xpos, line1), "{:,} lbs".format(co2) , font=font, fill=fill_color) draw.text((xpos, line2), "{:,}".format(trees), font=font, fill=fill_color) image.save(outfile) ## upload image to website or copy to folder if ssh_host: ssh = SSHClient() ssh.load_system_host_keys() ssh.connect(hostname=ssh_host, port=ssh_port, username=ssh_user) scp = SCPClient(ssh.get_transport()) scp.put(outfile, ssh_folder) scp.close() ssh.close() else: shutil.copy2(outfile, ssh_folder) os.remove(outfile)