Removing the old code
This commit is contained in:
		
							parent
							
								
									5c12390c73
								
							
						
					
					
						commit
						5699452ebf
					
				
					 1 changed files with 0 additions and 161 deletions
				
			
		
							
								
								
									
										161
									
								
								main.py
									
									
									
									
									
								
							
							
						
						
									
										161
									
								
								main.py
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -1,161 +0,0 @@
 | 
			
		|||
#!/usr/bin/env python3
 | 
			
		||||
 | 
			
		||||
import datetime
 | 
			
		||||
from genericpath import isfile
 | 
			
		||||
import json
 | 
			
		||||
import os
 | 
			
		||||
import requests
 | 
			
		||||
import calendar
 | 
			
		||||
from flask import Flask
 | 
			
		||||
from flask import jsonify
 | 
			
		||||
 | 
			
		||||
url_energy = "https://www.ote-cr.cz/cs/kratkodobe-trhy/elektrina/denni-trh/@@chart-data?report_date={}"
 | 
			
		||||
url_currency = "https://data.kurzy.cz/json/meny/b[1].json"
 | 
			
		||||
url_currency2 = "https://www.cnb.cz/cs/financni-trhy/devizovy-trh/kurzy-devizoveho-trhu/kurzy-devizoveho-trhu/denni_kurz.txt?date={day}.{month}.{year}"
 | 
			
		||||
CACHE_PATH = "./cache.json"
 | 
			
		||||
ENERGY_CACHE_PATH = "./cache-energy.json"
 | 
			
		||||
NO_CACHE = False
 | 
			
		||||
SELL_FEE = 0.45
 | 
			
		||||
BUY_FEE = 0.45
 | 
			
		||||
VAT=1.21
 | 
			
		||||
 | 
			
		||||
class PriceException(Exception):
 | 
			
		||||
    pass
 | 
			
		||||
 | 
			
		||||
def get_distribution_price():
 | 
			
		||||
    cez_57d_vt = 0.64862
 | 
			
		||||
    cez_57d_nt = 0.43809
 | 
			
		||||
 | 
			
		||||
    tax = 0.0283
 | 
			
		||||
    services = 0.21282
 | 
			
		||||
    ote = 0 # this is 4 crown per month
 | 
			
		||||
    oze = 0.495
 | 
			
		||||
 | 
			
		||||
    additional = tax+services+ote+oze
 | 
			
		||||
 | 
			
		||||
    return {
 | 
			
		||||
        "high": cez_57d_vt+additional,
 | 
			
		||||
        "low": cez_57d_nt+additional,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
def get_breaker_payment():
 | 
			
		||||
    # https://www.tzb-info.cz/ceny-paliv-a-energii/14-ceny-elektriny#D57d
 | 
			
		||||
    cez_32a = 500
 | 
			
		||||
 | 
			
		||||
    currentDate = datetime.date.today()
 | 
			
		||||
    daysInMonth = calendar.monthrange(currentDate.year, currentDate.month)[1]
 | 
			
		||||
    return cez_32a/daysInMonth/24
 | 
			
		||||
 | 
			
		||||
def get_current_energy_price(date_str, selected_hour):
 | 
			
		||||
    selected_hour = str(selected_hour)
 | 
			
		||||
    data = {
 | 
			
		||||
        "date": "",
 | 
			
		||||
        "hours": {},
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        if os.path.isfile(ENERGY_CACHE_PATH) and not NO_CACHE:
 | 
			
		||||
            with open(ENERGY_CACHE_PATH, "r") as f:
 | 
			
		||||
                data = json.load(f)
 | 
			
		||||
    except json.decoder.JSONDecodeError:
 | 
			
		||||
        cache = {}
 | 
			
		||||
 | 
			
		||||
    if data["date"] == date_str:
 | 
			
		||||
        return data["hours"][selected_hour]
 | 
			
		||||
 | 
			
		||||
    r = requests.get(url_energy.format(date_str))
 | 
			
		||||
 | 
			
		||||
    print(r.text)
 | 
			
		||||
    for hour in r.json()["data"]["dataLine"][1]["point"]:
 | 
			
		||||
        data["hours"][str(int(hour["x"])-1)] = hour["y"]
 | 
			
		||||
 | 
			
		||||
    data["date"] = date_str
 | 
			
		||||
    with open(ENERGY_CACHE_PATH, "w") as f:
 | 
			
		||||
        json.dump(data, f)
 | 
			
		||||
 | 
			
		||||
    return data["hours"][selected_hour]
 | 
			
		||||
 | 
			
		||||
#def get_currency_ratio(currency):
 | 
			
		||||
#    r = requests.get(url_currency)
 | 
			
		||||
#    return r.json()["kurzy"][currency]["dev_stred"]
 | 
			
		||||
 | 
			
		||||
def get_currency_ratio(currency):
 | 
			
		||||
    now = datetime.date.today()
 | 
			
		||||
    url = url_currency2.format(day=now.day,month=now.month,year=now.year)
 | 
			
		||||
    r = requests.get(url)
 | 
			
		||||
    for row in [x.split("|") for x in r.text.split("\n") if x and "|" in x]:
 | 
			
		||||
        if row[3] == "EUR":
 | 
			
		||||
            return float(row[4].replace(",", "."))
 | 
			
		||||
 | 
			
		||||
    raise PriceException("EUR not found")
 | 
			
		||||
 | 
			
		||||
def hour_result():
 | 
			
		||||
    current_hour = datetime.datetime.now().hour
 | 
			
		||||
    today = datetime.date.today().strftime("%Y-%m-%d")
 | 
			
		||||
 | 
			
		||||
    cache = {}
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        if os.path.isfile(CACHE_PATH) and not NO_CACHE:
 | 
			
		||||
            with open(CACHE_PATH, "r") as f:
 | 
			
		||||
                cache = json.load(f)
 | 
			
		||||
    except json.decoder.JSONDecodeError:
 | 
			
		||||
        cache = {}
 | 
			
		||||
    
 | 
			
		||||
    if cache.get("date") == today and cache.get("hour") == current_hour:
 | 
			
		||||
        cache["cached"] = True
 | 
			
		||||
        return cache
 | 
			
		||||
 | 
			
		||||
    energy_price = get_current_energy_price(today, current_hour)
 | 
			
		||||
    eur2czk = get_currency_ratio("EUR")
 | 
			
		||||
    breaker = get_breaker_payment()
 | 
			
		||||
    distribution = get_distribution_price()
 | 
			
		||||
 | 
			
		||||
    data = {
 | 
			
		||||
        "date": datetime.date.today().strftime("%Y-%m-%d"),
 | 
			
		||||
        "hour": datetime.datetime.now().hour,
 | 
			
		||||
        "breaker": "32A",
 | 
			
		||||
        "tariff": "57d",
 | 
			
		||||
        "price": {
 | 
			
		||||
            "distribution": distribution,
 | 
			
		||||
            "market": energy_price/1000*eur2czk,
 | 
			
		||||
            "market_vat": energy_price/1000*eur2czk*VAT,
 | 
			
		||||
            "marker_sell": energy_price/1000*eur2czk-SELL_FEE, # Typo
 | 
			
		||||
            "market_sell": energy_price/1000*eur2czk-SELL_FEE,
 | 
			
		||||
            "breaker": breaker,
 | 
			
		||||
            "breaker_vat": breaker*VAT,
 | 
			
		||||
            "sell_fee": SELL_FEE,
 | 
			
		||||
            "buy_fee": BUY_FEE,
 | 
			
		||||
            "total": {
 | 
			
		||||
                "high": energy_price/1000*eur2czk+breaker+distribution["high"]+BUY_FEE,
 | 
			
		||||
                "low": energy_price/1000*eur2czk+breaker+distribution["low"]+BUY_FEE,
 | 
			
		||||
            },
 | 
			
		||||
            "total_no_breaker": {
 | 
			
		||||
                "high": energy_price/1000*eur2czk+distribution["high"]+BUY_FEE,
 | 
			
		||||
                "low": energy_price/1000*eur2czk+distribution["low"]+BUY_FEE,
 | 
			
		||||
            },
 | 
			
		||||
            "total_vat": {
 | 
			
		||||
                "high": (energy_price/1000*eur2czk+breaker+distribution["high"]+BUY_FEE)*VAT,
 | 
			
		||||
                "low": (energy_price/1000*eur2czk+breaker+distribution["low"]+BUY_FEE)*VAT,
 | 
			
		||||
            },
 | 
			
		||||
            "total_no_breaker_vat": {
 | 
			
		||||
                "high": (energy_price/1000*eur2czk+distribution["high"]+BUY_FEE)*VAT,
 | 
			
		||||
                "low": (energy_price/1000*eur2czk+distribution["low"]+BUY_FEE)*VAT,
 | 
			
		||||
            },
 | 
			
		||||
        },
 | 
			
		||||
        "cached": False,
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    with open(CACHE_PATH, "w") as f:
 | 
			
		||||
        json.dump(data, f)
 | 
			
		||||
 | 
			
		||||
    return data
 | 
			
		||||
 | 
			
		||||
app = Flask(__name__)
 | 
			
		||||
 | 
			
		||||
@app.route("/")
 | 
			
		||||
def result():
 | 
			
		||||
    return jsonify(hour_result())
 | 
			
		||||
 | 
			
		||||
if __name__ == "__main__":
 | 
			
		||||
    app.run(debug=True)
 | 
			
		||||
		Loading…
	
		Reference in a new issue