From 6ab3981fa4f995038ebfe934b441372c761b7df9 Mon Sep 17 00:00:00 2001 From: j1nx Date: Wed, 9 Nov 2022 19:25:16 +0100 Subject: [PATCH] Testing of examples skill info patch --- .../0001-drop-examples-skill.patch | 267 ++++++++++++++++++ 1 file changed, 267 insertions(+) create mode 100644 buildroot-external/package/skill-ovos-homescreen/0001-drop-examples-skill.patch diff --git a/buildroot-external/package/skill-ovos-homescreen/0001-drop-examples-skill.patch b/buildroot-external/package/skill-ovos-homescreen/0001-drop-examples-skill.patch new file mode 100644 index 00000000..82a24974 --- /dev/null +++ b/buildroot-external/package/skill-ovos-homescreen/0001-drop-examples-skill.patch @@ -0,0 +1,267 @@ +From ba22850b5b3e6941c3792ff1eabca8060b189ba6 Mon Sep 17 00:00:00 2001 +From: Aditya Mehra +Date: Fri, 4 Nov 2022 11:11:22 +1030 +Subject: [PATCH 1/4] drop examples skill and use util from osm + +--- + __init__.py | 43 ++++++++++--------------------------------- + 1 file changed, 10 insertions(+), 33 deletions(-) + +diff --git a/__init__.py b/__init__.py +index e8ed826..47c19d3 100644 +--- a/__init__.py ++++ b/__init__.py +@@ -26,7 +26,7 @@ + from ovos_utils.xdg_utils import xdg_config_home + from .skill import (DashboardHandler, + CardGenerator) +- ++from ovos_skills_manager.utils import get_skills_examples + + class OVOSHomescreenSkill(MycroftSkill): + # The constructor of the skill, which calls MycroftSkill's constructor +@@ -38,10 +38,9 @@ def __init__(self): + self.selected_wallpaper = None # Get from config after __init__ is done + self.wallpaper_collection = [] + self.rtlMode = None # Get from config after __init__ is done +- ++ + # Populate skill IDs to use for data sources + self.datetime_skill = None # Get from config after __init__ is done +- self.skill_info_skill = None # Get from config after __init__ is done + self.datetime_api = None + self.skill_info_api = None + +@@ -51,7 +50,7 @@ def __init__(self): + # Display Configuration Variables + self.wallpaper_rotation_enabled = False + self.dashboard_handler = None +- ++ + # Media State Tracking For Widget + # Needed for setting qml button state + self.media_widget_player_state = None +@@ -62,7 +61,6 @@ def initialize(self): + self.card_generator = CardGenerator(self.file_system.path, self.bus, + path.dirname(__file__)) + self.datetime_api = None +- self.skill_info_api = None + self.loc_wallpaper_folder = self.file_system.path + '/wallpapers/' + self.selected_wallpaper = self.settings.get( + "wallpaper") or "default.jpg" +@@ -72,9 +70,6 @@ def initialize(self): + "datetime_skill") or "skill-ovos-date-time.openvoiceos" + self.examples_enabled = 1 if self.settings.get( + "examples_enabled", True) else 0 +- if self.examples_enabled: +- self.skill_info_skill = self.settings.get( +- "examples_skill") or "ovos-skills-info.openvoiceos" + + now = datetime.datetime.now() + callback_time = datetime.datetime( +@@ -124,7 +119,7 @@ def initialize(self): + + if not self.file_system.exists("wallpapers"): + os.mkdir(path.join(self.file_system.path, "wallpapers")) +- ++ + # Handler For Weather Response + self.bus.on("skill-ovos-weather.openvoiceos.weather.response", self.update_weather_response) + +@@ -176,17 +171,8 @@ def update_examples(self): + """ + Loads or updates skill examples via the skill_info_api. + """ +- if not self.skill_info_api: +- if not self.examples_enabled: +- LOG.warning("Examples are disabled in settings") +- else: +- LOG.warning("Requested update before skill_info API loaded") +- self._load_skill_apis() +- if self.skill_info_api: +- self.gui['skill_examples'] = { +- "examples": self.skill_info_api.skill_info_examples()} +- else: +- LOG.warning("No skill_info_api, skipping update") ++ skill_examples = get_skills_examples(randomize=True) ++ self.gui['skill_examples'] = {"examples": skill_examples} + self.gui['skill_info_enabled'] = self.examples_enabled + + def update_dt(self): +@@ -290,7 +276,7 @@ def check_wallpaper_path(self, wallpaper): + return self.def_wallpaper_folder + elif path.exists(file_loc_check): + return self.loc_wallpaper_folder +- ++ + def check_wallpaper_rotation_config(self, message=None): + display_config_path_local = path.join(xdg_config_home(), "OvosDisplay.conf") + if path.exists(display_config_path_local): +@@ -329,13 +315,6 @@ def _load_skill_apis(self): + """ + Loads weather, date/time, and examples skill APIs + """ +- +- try: +- if not self.skill_info_api: +- self.skill_info_api = SkillApi.get(self.skill_info_skill) or None +- except Exception as e: +- LOG.error(f"Failed To Import OVOS Info Skill: {e}") +- + # Import Date Time Skill As Date Time Provider + try: + if not self.datetime_api: +@@ -361,7 +340,7 @@ def _split_month_string(self, month_date: str) -> list: + + ##################################################################### + # Build Voice Applications Model +- ++ + def find_icon_full_path(self, icon_name): + localuser = environ.get('USER') + folder_search_paths = ["/usr/share/icons/", "/usr/local/share/icons/", +@@ -387,7 +366,7 @@ def parse_desktop_file(self, file_path): + + with open(file_path, "r") as f: + file_contents = f.read() +- ++ + name_start = file_contents.find("Name=") + name_end = file_contents.find("\n", name_start) + name = file_contents[name_start + 5:name_end] +@@ -415,7 +394,7 @@ def parse_desktop_file(self, file_path): + 11:categories_end] + + categories_list = categories.split(";") +- ++ + if "VoiceApp" in categories_list: + app_entry = { + "name": name, +@@ -542,8 +521,6 @@ def get_dashboard_cards(self, message=None): + cards = self.dashboard_handler.get_collection() + collection = {"collection": cards} + return collection +- +- + + + def create_skill(): + +From 06e23d0a7c7085025e06b036b722e7a4d3a492ad Mon Sep 17 00:00:00 2001 +From: Aditya Mehra +Date: Fri, 4 Nov 2022 11:56:00 +1030 +Subject: [PATCH 2/4] restore examples skill api optionally + +--- + __init__.py | 13 +++++++++++-- + 1 file changed, 11 insertions(+), 2 deletions(-) + +diff --git a/__init__.py b/__init__.py +index 47c19d3..bd24d29 100644 +--- a/__init__.py ++++ b/__init__.py +@@ -41,6 +41,7 @@ def __init__(self): + + # Populate skill IDs to use for data sources + self.datetime_skill = None # Get from config after __init__ is done ++ self.skill_info_skill = None # Get from config after __init__ is done + self.datetime_api = None + self.skill_info_api = None + +@@ -70,6 +71,9 @@ def initialize(self): + "datetime_skill") or "skill-ovos-date-time.openvoiceos" + self.examples_enabled = 1 if self.settings.get( + "examples_enabled", True) else 0 ++ if self.examples_enabled: ++ self.skill_info_skill = self.settings.get( ++ "examples_skill") or "ovos-skills-info.openvoiceos" + + now = datetime.datetime.now() + callback_time = datetime.datetime( +@@ -171,8 +175,13 @@ def update_examples(self): + """ + Loads or updates skill examples via the skill_info_api. + """ +- skill_examples = get_skills_examples(randomize=True) +- self.gui['skill_examples'] = {"examples": skill_examples} ++ if self.skill_info_api: ++ self.gui['skill_examples'] = { ++ "examples": self.skill_info_api.skill_info_examples()} ++ else: ++ skill_examples = get_skills_examples(randomize=True) ++ self.gui['skill_examples'] = {"examples": skill_examples} ++ + self.gui['skill_info_enabled'] = self.examples_enabled + + def update_dt(self): + +From bbe52c7bc3bae4e47e4ace2eaa810572c34cba8e Mon Sep 17 00:00:00 2001 +From: Aditya Mehra +Date: Sat, 5 Nov 2022 11:03:37 +1030 +Subject: [PATCH 3/4] remove examples skill and depend on settings to get it + +--- + __init__.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/__init__.py b/__init__.py +index bd24d29..2dd2f4f 100644 +--- a/__init__.py ++++ b/__init__.py +@@ -73,7 +73,7 @@ def initialize(self): + "examples_enabled", True) else 0 + if self.examples_enabled: + self.skill_info_skill = self.settings.get( +- "examples_skill") or "ovos-skills-info.openvoiceos" ++ "examples_skill") + + now = datetime.datetime.now() + callback_time = datetime.datetime( + +From 9decdde074d790e11433a3fc54a166a415c6b236 Mon Sep 17 00:00:00 2001 +From: builderjer <34875857+builderjer@users.noreply.github.com> +Date: Mon, 7 Nov 2022 17:52:53 -0700 +Subject: [PATCH 4/4] Feat/random examples (#54) + +* Fix skill examples not rotating + +* added setting to randomize examples +--- + __init__.py | 2 +- + settingsmeta.yml | 7 +++++++ + 2 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/__init__.py b/__init__.py +index 2dd2f4f..d546d35 100644 +--- a/__init__.py ++++ b/__init__.py +@@ -179,7 +179,7 @@ def update_examples(self): + self.gui['skill_examples'] = { + "examples": self.skill_info_api.skill_info_examples()} + else: +- skill_examples = get_skills_examples(randomize=True) ++ skill_examples = get_skills_examples(randomize=self.settings.get("randomize_examples", True)) + self.gui['skill_examples'] = {"examples": skill_examples} + + self.gui['skill_info_enabled'] = self.examples_enabled +diff --git a/settingsmeta.yml b/settingsmeta.yml +index 88ee52f..f8eab4c 100644 +--- a/settingsmeta.yml ++++ b/settingsmeta.yml +@@ -20,8 +20,15 @@ skillMetadata: + type: text + label: Wallpaper + value: default.jpg ++ - name: Examples ++ fields: + - name: examples_enabled + type: bool + label: Enable Examples + value: true ++ - name: randomize_examples ++ type: bool ++ label: Randomize Example Entries ++ value: true ++ +