#-*- coding: utf-8 -*-

from subprocess import run
from traceback import format_exc
from functions import *
from bs4 import BeautifulSoup

config = jsonLoad("config.json")

class EmptyCardException(Exception):
    pass

async def getWaterLeft(cardid, filename, app=None):
        
    url = f"https://bwtaqua.com.ua/card-topup/?id={cardid}"
    
    try:

        run(["touch", f"data/pages/{str(filename)}.html"])
        
        if config["use_compiled_page_saver"]:
            run(["PageSaver/pageSaver", f"\"https://bwtaqua.com.ua/card-topup/?id={cardid}\"", ">", f"data/pages/{str(filename)}.html"])
        else:
            run(["node", "PageSaver/pageSaver.js", f"\"https://bwtaqua.com.ua/card-topup/?id={cardid}\"", ">", f"data/pages/{str(filename)}.html"])

        with open(f'data/pages/{str(filename)}.html') as f:
            html_file = f.read()
            f.close()
    
        soup = BeautifulSoup(html_file, 'html.parser')

        output = (soup.find_all("h3", class_="headline headline_center headline_pink js-payment-balance")[0].getText()).replace("Твій баланс ", "").replace(" л", "")
        
        appendLog(f"Parsed {output} liters of water remaining (user: {str(filename)}, cardid: {cardid})")
     
    except Exception as exp:
        
        appendLog(f"Exception occured: {exp} (user: {str(filename)}, cardid: {cardid})")
        
        if app != None:
            await app.send_message(config["owner_id"], f"**Exception occured:**\n • User: `{str(filename)}`\n • Card: [{cardid}]({url})\n • Exception: `{exp}`\n • Traceback: `{format_exc()}`", disable_web_page_preview=True)
        else:
            print(f'Exception occured and could not send to user: {exp}')
        
        output = "Failure"
    
    return output
    
if __name__ == "__main__":
    
    cardid = input("Enter card number: ")
    userid = input("Enter Telegram ID (optional): ")
    
    print(f"Card has {str(getWaterLeft(cardid, userid, app=None))} l. left")
