mirror of
https://github.com/house-of-abbey/GarminHomeAssistant.git
synced 2025-04-30 20:52:27 +00:00
Added a background service to send the watch battery level to Home Assistant. Changed the Glance View as requested by a user. Updated to new HA icon using SVG in stead of PNG.
71 lines
2.6 KiB
Python
71 lines
2.6 KiB
Python
####################################################################################
|
|
#
|
|
# Distributed under MIT Licence
|
|
# See https://github.com/house-of-abbey/GarminHomeAssistant/blob/main/LICENSE.
|
|
#
|
|
####################################################################################
|
|
#
|
|
# GarminHomeAssistant is a Garmin IQ application written in Monkey C and routinely
|
|
# tested on a Venu 2 device. The source code is provided at:
|
|
# https://github.com/house-of-abbey/GarminHomeAssistant.
|
|
#
|
|
# J D Abbey & P A Abbey, 29 December 2023
|
|
#
|
|
#
|
|
# Description:
|
|
#
|
|
# Python script to automatically resize the application launcher icon from the
|
|
# original 70x70 pixel width to something more appropriate for different screen
|
|
# sizes.
|
|
#
|
|
# Python installation:
|
|
# pip install BeautifulSoup
|
|
# NB. For XML formatting:
|
|
# pip install lxml
|
|
#
|
|
# References:
|
|
# * https://www.crummy.com/software/BeautifulSoup/bs4/doc/
|
|
# * https://realpython.com/beautiful-soup-web-scraper-python/
|
|
# * https://www.crummy.com/software/BeautifulSoup/bs4/doc/#parsing-xml
|
|
# * https://www.crummy.com/software/BeautifulSoup/bs4/doc/#xml
|
|
#
|
|
####################################################################################
|
|
|
|
from bs4 import BeautifulSoup, Comment
|
|
import os
|
|
import shutil
|
|
|
|
output_dir_prefix = 'resources-launcher-'
|
|
# Original icons for 416x416 screen size with 70x70 icons
|
|
input_dir = output_dir_prefix + '70-70'
|
|
|
|
# Convert icons to different screen sizes by these parameters
|
|
lookup = [26, 30, 33, 35, 36, 40, 54, 60, 61, 62, 65, 80]
|
|
|
|
# Delete all but the original 48x48 icon directories
|
|
for entry in os.listdir("."):
|
|
if entry.startswith(output_dir_prefix) and entry != input_dir:
|
|
shutil.rmtree(entry)
|
|
|
|
# (Re-)Create the resized icon directories
|
|
for icon_size in lookup:
|
|
output_dir = output_dir_prefix + str(icon_size) + "-" + str(icon_size)
|
|
print("\nCreate directory:", output_dir)
|
|
if os.path.exists(output_dir) and os.path.isdir(output_dir):
|
|
shutil.rmtree(output_dir)
|
|
os.makedirs(output_dir)
|
|
for entry in os.listdir(input_dir):
|
|
if entry.endswith(".svg"):
|
|
print("Create file: ", entry.ljust(40) + " SVG - Change file")
|
|
with open(input_dir + "/" + entry, "r") as f:
|
|
soup = BeautifulSoup(f.read(), features="xml")
|
|
svg: BeautifulSoup = list(soup.children)[0]
|
|
h = int(svg.attrs["height"])
|
|
svg.attrs["width"] = icon_size
|
|
svg.attrs["height"] = icon_size
|
|
with open(output_dir + "/" + entry, "wb") as o:
|
|
o.write(svg.encode("utf-8"))
|
|
elif entry.endswith(".xml"):
|
|
print("Create file: ", entry.ljust(40) + " XML - Copy file")
|
|
shutil.copyfile(input_dir + "/" + entry, output_dir + "/" + entry)
|