From 87469ae528b852055f893b07f4f67d3a2dc06be2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Manuel=20Barroso=20Galindo?= Date: Sat, 17 Dec 2022 21:42:01 +0100 Subject: [PATCH] Improving category filter. --- .github/calculate_db.py | 26 ++++++++++++++++++++------ .github/download_distribution.py | 16 ++++++++-------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/.github/calculate_db.py b/.github/calculate_db.py index 4c6066e49..243b39b10 100755 --- a/.github/calculate_db.py +++ b/.github/calculate_db.py @@ -159,8 +159,11 @@ class Metadata: def __init__(self, props): self._props = props - def is_mgl_folder(self, folder): - return folder in self._props['folders'] and self._props['folders'][folder]['is_mgl'] + def is_mgl_home(self, home): + return home in self._props['home'] and self._props['home'][home]['is_mgl'] + + def category_by_home(self, home): + return None if home not in self._props['home'] else self._props['home'][home]['category'] class Tags: def __init__(self, metadata) -> None: @@ -247,9 +250,13 @@ class Tags: first_level = path.parts[1].lower() self._append(result, self._use_term(first_level)) - if self._metadata.is_mgl_folder(first_level): + if self._metadata.is_mgl_home(first_level): self._append(result, self._use_term('mgl')) - + + category = self._metadata.category_by_home(first_level) + if category is not None: + self._append(result, self._use_term(category)) + second_level = path.parts[2].lower() if len(path.parts) > 3: self._append(result, self._use_term(second_level)) @@ -265,9 +272,13 @@ class Tags: if parent == 'docs': first_level = path.parts[1].lower() self._append(result, self._use_term(first_level)) - if self._metadata.is_mgl_folder(first_level): + if self._metadata.is_mgl_home(first_level): self._append(result, self._use_term('mgl')) + category = self._metadata.category_by_home(first_level) + if category is not None: + self._append(result, self._use_term(category)) + second_level = path.parts[2].lower() if len(path.parts) > 3: self._append(result, self._use_term(second_level)) @@ -324,8 +335,11 @@ class Tags: if (parent == 'games' or parent == 'docs'): if first_level in ['gba2p', 'gameboy2p']: self._append(result, self._use_term('handheld2p')) - if self._metadata.is_mgl_folder(first_level): + if self._metadata.is_mgl_home(first_level): self._append(result, self._use_term('mgl')) + category = self._metadata.category_by_home(first_level) + if category is not None: + self._append(result, self._use_term(category)) self._append(result, self._use_term(first_level)) diff --git a/.github/download_distribution.py b/.github/download_distribution.py index 49440c42d..0863761dd 100755 --- a/.github/download_distribution.py +++ b/.github/download_distribution.py @@ -333,7 +333,7 @@ def impl_install_generic_core(path, target_dir, core, metadata, touch_games_fold copy_file(f'{releases_dir}/{latest_release}', f'{target_dir}/{core["category"]}/{latest_release}') binaries.append(bin) - metadata.add_folder(core['home']) + metadata.add_home(core['home'], core['category']) home_folders = [core['home']] for mgl in mgl_files(releases_dir): @@ -346,7 +346,7 @@ def impl_install_generic_core(path, target_dir, core, metadata, touch_games_fold continue home_folders.append(setname) - metadata.add_mgl_folder(setname) + metadata.add_mgl_home(setname, core['category']) for folder in home_folders: for readme in list_readmes(path): @@ -501,17 +501,17 @@ extra_content_early_installers = { class Metadata: @staticmethod def new_props(): - return {'folders': {}} + return {'home': {}} def __init__(self, props): self._props = props - def add_mgl_folder(self, folder): - self._props['folders'][folder] = self._props['folders'].get(folder, {'is_mgl': True}) + def add_mgl_home(self, folder, category): + self._props['home'][folder] = self._props['home'].get(folder, {'is_mgl': True, 'category': category.lower()[1:]}) - def add_folder(self, folder): - self._props['folders'][folder] = self._props['folders'].get(folder, {'is_mgl': True}) - self._props['folders'][folder]['is_mgl'] = False + def add_home(self, folder, category): + self._props['home'][folder] = self._props['home'].get(folder, {'is_mgl': True, 'category': category.lower()[1:]}) + self._props['home'][folder]['is_mgl'] = False def mra_files(folder): return [without_folder(folder, f) for f in list_files(folder, recursive=False) if Path(f).suffix.lower() == '.mra']