diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..fb05bf3 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,2 @@ +recursive-include locale * +include *.txt \ No newline at end of file diff --git a/locale/en-us/skill.json b/locale/en-us/skill.json new file mode 100644 index 0000000..5635c93 --- /dev/null +++ b/locale/en-us/skill.json @@ -0,0 +1,7 @@ +{ + "name": "TuneIn Skill", + "examples": [ + "play heavy metal heart radio", + "play jazz on tune in" + ] +} diff --git a/scripts/bump_alpha.py b/scripts/bump_alpha.py deleted file mode 100644 index e465543..0000000 --- a/scripts/bump_alpha.py +++ /dev/null @@ -1,18 +0,0 @@ -import fileinput -from os.path import join, dirname - - -version_file = join(dirname(dirname(__file__)), "version.py") -version_var_name = "VERSION_ALPHA" - -with open(version_file, "r", encoding="utf-8") as v: - for line in v.readlines(): - if line.startswith(version_var_name): - version = int(line.split("=")[-1]) - new_version = int(version) + 1 - -for line in fileinput.input(version_file, inplace=True): - if line.startswith(version_var_name): - print(f"{version_var_name} = {new_version}") - else: - print(line.rstrip('\n')) diff --git a/scripts/bump_build.py b/scripts/bump_build.py deleted file mode 100644 index 61099f8..0000000 --- a/scripts/bump_build.py +++ /dev/null @@ -1,21 +0,0 @@ -import fileinput -from os.path import join, dirname - - -version_file = join(dirname(dirname(__file__)), "version.py") -version_var_name = "VERSION_BUILD" -alpha_var_name = "VERSION_ALPHA" - -with open(version_file, "r", encoding="utf-8") as v: - for line in v.readlines(): - if line.startswith(version_var_name): - version = int(line.split("=")[-1]) - new_version = int(version) + 1 - -for line in fileinput.input(version_file, inplace=True): - if line.startswith(version_var_name): - print(f"{version_var_name} = {new_version}") - elif line.startswith(alpha_var_name): - print(f"{alpha_var_name} = 0") - else: - print(line.rstrip('\n')) diff --git a/scripts/bump_major.py b/scripts/bump_major.py deleted file mode 100644 index 2610fbb..0000000 --- a/scripts/bump_major.py +++ /dev/null @@ -1,27 +0,0 @@ -import fileinput -from os.path import join, dirname - - -version_file = join(dirname(dirname(__file__)), "version.py") -version_var_name = "VERSION_MAJOR" -minor_var_name = "VERSION_MINOR" -build_var_name = "VERSION_BUILD" -alpha_var_name = "VERSION_ALPHA" - -with open(version_file, "r", encoding="utf-8") as v: - for line in v.readlines(): - if line.startswith(version_var_name): - version = int(line.split("=")[-1]) - new_version = int(version) + 1 - -for line in fileinput.input(version_file, inplace=True): - if line.startswith(version_var_name): - print(f"{version_var_name} = {new_version}") - elif line.startswith(minor_var_name): - print(f"{minor_var_name} = 0") - elif line.startswith(build_var_name): - print(f"{build_var_name} = 0") - elif line.startswith(alpha_var_name): - print(f"{alpha_var_name} = 0") - else: - print(line.rstrip('\n')) diff --git a/scripts/bump_minor.py b/scripts/bump_minor.py deleted file mode 100644 index 86dfd9d..0000000 --- a/scripts/bump_minor.py +++ /dev/null @@ -1,24 +0,0 @@ -import fileinput -from os.path import join, dirname - - -version_file = join(dirname(dirname(__file__)), "version.py") -version_var_name = "VERSION_MINOR" -build_var_name = "VERSION_BUILD" -alpha_var_name = "VERSION_ALPHA" - -with open(version_file, "r", encoding="utf-8") as v: - for line in v.readlines(): - if line.startswith(version_var_name): - version = int(line.split("=")[-1]) - new_version = int(version) + 1 - -for line in fileinput.input(version_file, inplace=True): - if line.startswith(version_var_name): - print(f"{version_var_name} = {new_version}") - elif line.startswith(build_var_name): - print(f"{build_var_name} = 0") - elif line.startswith(alpha_var_name): - print(f"{alpha_var_name} = 0") - else: - print(line.rstrip('\n')) diff --git a/scripts/prepare_skillstore.py b/scripts/prepare_skillstore.py deleted file mode 100644 index bfc50fd..0000000 --- a/scripts/prepare_skillstore.py +++ /dev/null @@ -1,76 +0,0 @@ -from ovos_skills_manager import SkillEntry -from os.path import exists, join, dirname -from shutil import rmtree -import os -from os import makedirs -import json -from ovos_utils.bracket_expansion import expand_parentheses, expand_options - - -branch = "dev" -repo = "skill-ovos-tunein" -author = "OpenVoiceOS" - -url = f"https://github.com/{author}/{repo}@{branch}" - -skill = SkillEntry.from_github_url(url) -tmp_skills = "/tmp/osm_installed_skills" -skill_folder = f"{tmp_skills}/{skill.uuid}" - -base_dir = dirname(dirname(__file__)) -desktop_dir = join(base_dir, "res", "desktop") -android_ui = join(base_dir, "res", "+android") -makedirs(desktop_dir, exist_ok=True) - -readme = join(base_dir, "README.md") -jsonf = join(desktop_dir, "skill.json") -desktopf = join(desktop_dir, f"{repo}.desktop") -skill_code = join(base_dir, "__init__.py") - -res_folder = join(base_dir, "locale", "en-us") - - -def read_samples(path): - samples = [] - with open(path) as fi: - for _ in fi.read().split("\n"): - if _ and not _.strip().startswith("#"): - samples += expand_options(_) - return samples - -samples = [] -for root, folders, files in os.walk(res_folder): - for f in files: - if f.endswith(".intent"): - samples += read_samples(join(root, f)) -skill._data["examples"] = list(set(samples)) - -has_android = exists(android_ui) -with open(skill_code) as f: - has_homescreen = f"{repo}.{author}.home" in f.read() - -if not exists(readme): - with open(readme, "w") as f: - f.write(skill.generate_readme()) - -if has_homescreen and not exists(desktopf): - with open(desktopf, "w") as f: - f.write(skill.desktop_file) - -if not exists(jsonf): - data = skill.json - with open(jsonf, "w") as f: - if not has_android or not has_homescreen: - data.pop("android") - if not has_homescreen: - data.pop("desktop") - data["desktopFile"] = False -else: - with open(jsonf) as f: - data = json.load(f) - -# set dev branch -data["branch"] = "dev" - -with open(jsonf, "w") as f: - json.dump(data, f, indent=4) diff --git a/scripts/prepare_translations.py b/scripts/prepare_translations.py deleted file mode 100644 index 01a674d..0000000 --- a/scripts/prepare_translations.py +++ /dev/null @@ -1,53 +0,0 @@ -"""this script should run every time the contents of the locale folder change -except if PR originated from @gitlocalize-app -TODO - on commit to dev -""" - -import json -from os.path import dirname -import os - -locale = f"{dirname(dirname(__file__))}/locale" -tx = f"{dirname(dirname(__file__))}/translations" - - -for lang in os.listdir(locale): - intents = {} - dialogs = {} - vocs = {} - regexes = {} - for root, _, files in os.walk(f"{locale}/{lang}"): - b = root.split(f"/{lang}")[-1] - - for f in files: - if b: - fid = f"{b}/{f}" - else: - fid = f - with open(f"{root}/{f}") as fi: - strings = [l.replace("{{", "{").replace("}}", "}") - for l in fi.read().split("\n") if l.strip() - and not l.startswith("#")] - - if fid.endswith(".intent"): - intents[fid] = strings - elif fid.endswith(".dialog"): - dialogs[fid] = strings - elif fid.endswith(".voc"): - vocs[fid] = strings - elif fid.endswith(".rx"): - regexes[fid] = strings - - os.makedirs(f"{tx}/{lang.lower()}", exist_ok=True) - if intents: - with open(f"{tx}/{lang.lower()}/intents.json", "w") as f: - json.dump(intents, f, indent=4) - if dialogs: - with open(f"{tx}/{lang.lower()}/dialogs.json", "w") as f: - json.dump(dialogs, f, indent=4) - if vocs: - with open(f"{tx}/{lang.lower()}/vocabs.json", "w") as f: - json.dump(vocs, f, indent=4) - if regexes: - with open(f"{tx}/{lang.lower()}/regexes.json", "w") as f: - json.dump(regexes, f, indent=4) diff --git a/scripts/release_skillstore.py b/scripts/release_skillstore.py deleted file mode 100644 index a176d89..0000000 --- a/scripts/release_skillstore.py +++ /dev/null @@ -1,41 +0,0 @@ -import json -from os.path import join, dirname - -base_dir = dirname(dirname(__file__)) - - -def get_version(): - """ Find the version of the package""" - version_file = join(base_dir, 'version.py') - major, minor, build, alpha = (None, None, None, None) - with open(version_file) as f: - for line in f: - if 'VERSION_MAJOR' in line: - major = line.split('=')[1].strip() - elif 'VERSION_MINOR' in line: - minor = line.split('=')[1].strip() - elif 'VERSION_BUILD' in line: - build = line.split('=')[1].strip() - elif 'VERSION_ALPHA' in line: - alpha = line.split('=')[1].strip() - - if ((major and minor and build and alpha) or - '# END_VERSION_BLOCK' in line): - break - version = f"{major}.{minor}.{build}" - if alpha and int(alpha) > 0: - version += f"a{alpha}" - return version - - -desktop_dir = join(base_dir, "res", "desktop") - -jsonf = join(desktop_dir, "skill.json") - -with open(jsonf) as f: - data = json.load(f) - -data["branch"] = "v" + get_version() - -with open(jsonf, "w") as f: - json.dump(data, f, indent=4) diff --git a/scripts/remove_alpha.py b/scripts/remove_alpha.py deleted file mode 100644 index fca7342..0000000 --- a/scripts/remove_alpha.py +++ /dev/null @@ -1,13 +0,0 @@ -import fileinput -from os.path import join, dirname - - -version_file = join(dirname(dirname(__file__)), "version.py") - -alpha_var_name = "VERSION_ALPHA" - -for line in fileinput.input(version_file, inplace=True): - if line.startswith(alpha_var_name): - print(f"{alpha_var_name} = 0") - else: - print(line.rstrip('\n')) diff --git a/scripts/translate.py b/scripts/translate.py deleted file mode 100644 index 43b0687..0000000 --- a/scripts/translate.py +++ /dev/null @@ -1,157 +0,0 @@ -from os.path import dirname, join, isdir, exists -from pathlib import Path -import shutil -import os -import re -from ovos_utils.bracket_expansion import expand_options -from ovos_translate_plugin_deepl import DeepLTranslator - - -API_KEY = os.getenv("API_KEY") -if not API_KEY: - raise ValueError - -single_lang = os.getenv("TARGET_LANG") -target_langs = (single_lang,) if single_lang else ("de-de", - "ca-es", - "cs-cz", - "da-dk", - "es-es", - "fr-fr", - "hu-hu", - "it-it", - "nl-nl", - "pl-pl", - "pt-pt", - "ru-ru", - "sv-fi", - "sv-se") - - -base_folder = dirname(dirname(__file__)) -res_folder = join(base_folder, "locale") - -# old structure -old_voc_folder = join(base_folder, "vocab") -old_dialog_folder = join(base_folder, "dialog") -old_res_folder = [old_voc_folder, old_dialog_folder] - -src_lang="en-us" -src_files={} -# note: regex/namedvalues are just copied, this cant be auto translated reliably -ext = [".voc", ".dialog", ".intent", ".entity", ".rx", ".value", ".word"] -untranslated = [".rx", ".value", ".entity"] - -tx = DeepLTranslator({"api_key": API_KEY}) - - -def file_location(f: str, base: str) -> bool: - for root, dirs, files in os.walk(base): - for file in files: - if f == file: - return join(root, file) - return None - -def translate(lines: list, target_lang: str) -> list: - translations = [] - for line in lines: - replacements = dict() - for num, var in enumerate(re.findall(r"(?:{{|{)[ a-zA-Z0-9_]*(?:}}|})", line)): - line = line.replace(var, f'@{num}', 1) - replacements[f'@{num}'] = var - try: - translated = tx.translate(line, target=target_lang, source=src_lang) - except Exception as e: - continue - for num, var in replacements.items(): - translated = translated.replace(num, var) - translations.append(translated) - - return translations - - -def entities(file: str) -> set: - vars = set() - if not exists(file): - return vars - - lines = get_lines(file) - for line in lines: - for var in re.findall(r"(?:{{|{)[ a-zA-Z0-9_]*(?:}}|})", line): - vars.add(var) - return vars - - -def get_lines(file: str): - with open(file, "r") as f: - # entity files often include #-placeholder - if file.endswith(".entity"): - lines = [exp for l in f.read().split("\n") for exp - in expand_options(l) if l] - else: - lines = [exp for l in f.read().split("\n") for exp - in expand_options(l) if l and not l.startswith("#")] - return lines - - -def migrate_locale(folder): - for lang in os.listdir(folder): - path = join(folder, lang) - for root, dirs, files in os.walk(path): - for file in files: - if file_location(file, join(res_folder, lang)) is None: - rel_path = root.replace(folder, "").lstrip("/") - new_path = join(res_folder, rel_path) - os.makedirs(new_path, exist_ok=True) - shutil.move(join(root, file), - join(new_path, file)) - shutil.rmtree(path) - shutil.rmtree(folder) - - -for folder in old_res_folder: - if not isdir(folder): - continue - migrate_locale(folder) - -src_folder = join(res_folder, src_lang) -for root, dirs, files in os.walk(src_folder): - if src_lang not in root: - continue - for f in files: - if any(f.endswith(e) for e in ext): - file_path = join(root, f) - rel_path = file_path.replace(src_folder, "").lstrip("/") - src_files[rel_path] = file_path - -for lang in target_langs: - # service cant translate - if not tx.get_langcode(lang): - continue - for rel_path, src in src_files.items(): - filename = Path(rel_path).name - dst = file_location(filename, join(res_folder, lang)) or \ - join(res_folder, lang, rel_path) - if entities(src) != entities(dst): - if exists(dst): - os.remove(dst) - elif not exists(dst): - pass - else: - continue - os.makedirs(dirname(dst), exist_ok=True) - - lines = get_lines(src) - if any(filename.endswith(e) for e in untranslated): - tx_lines = lines - is_translated = False - else: - tx_lines = translate(lines, lang) - is_translated = True - if tx_lines: - tx_lines = list(set(tx_lines)) - with open(dst, "w") as f: - if is_translated: - f.write(f"# auto translated from {src_lang} to {lang}\n") - for translated in set(tx_lines): - f.write(translated + "\n")