mirror of
https://github.com/house-of-abbey/GarminHomeAssistant.git
synced 2025-08-03 18:38:35 +00:00
Added Watch Battery transmission
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.
This commit is contained in:
70
launcherIconResize.py
Normal file
70
launcherIconResize.py
Normal file
@ -0,0 +1,70 @@
|
||||
####################################################################################
|
||||
#
|
||||
# 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)
|
Reference in New Issue
Block a user