#!/usr/bin/env python3

import subprocess


BATTERY_ZERO_DATA = subprocess.check_output(["upower", "-i", "/org/freedesktop/UPower/devices/battery_BAT0"]).decode('utf-8')
BATTERY_ONE_DATA = subprocess.check_output(["upower", "-i", "/org/freedesktop/UPower/devices/battery_BAT1"]).decode('utf-8')

BATTERY_STATE_MAP = {
    'charging': "󰂄",
    'fully-charged': "󱟢",
    'empty': "󰂃",
}

bat_0 = {}
bat_1 = {}


def get_upower_value(data, key):
    return data.split(key)[-1].split('\n')[0].strip()


def parse_battery_data(data, obj):
    obj['state'] = get_upower_value(data, 'state:')
    obj['percentage'] = get_upower_value(data, 'percentage:')

    if obj['state'] not in BATTERY_STATE_MAP:
        bat_level = int(obj['percentage'].strip('%'))

        if bat_level < 10:
            obj['icon'] = "󰁺"
        elif 20 > bat_level >= 10:
            obj['icon'] = "󰁻"
        elif 30 > bat_level >= 20:
            obj['icon'] = "󰁼"
        elif 40 > bat_level >= 30:
            obj['icon'] = "󰁽"
        elif 50 > bat_level >= 40:
            obj['icon'] = "󰁾"
        elif 60 > bat_level >= 50:
            obj['icon'] = "󰁿"
        elif 70 > bat_level >= 60:
            obj['icon'] = "󰂀"
        elif 80 > bat_level >= 70:
            obj['icon'] = "󰂁"
        elif 90 > bat_level >= 80:
            obj['icon'] = "󰂂"
        elif 100 > bat_level >= 90:
            obj['icon'] = "󰁹"
        else:
            obj['icon'] = "󱈑"

    else:
        obj['icon'] = BATTERY_STATE_MAP.get(obj['state'], "󱃌")


parse_battery_data(BATTERY_ZERO_DATA, bat_0)
parse_battery_data(BATTERY_ONE_DATA, bat_1)

print(f"{bat_0['icon']} {bat_0['percentage']} {bat_1['icon']} {bat_1['percentage']}")
    

