mirror of
https://github.com/lutris/lutris
synced 2024-09-29 20:43:37 +00:00
Add a "source:" tag that matches service names, and also "service:" as an alias.
This commit is contained in:
parent
acd7f7f07d
commit
5f1c135cdb
|
@ -9,6 +9,7 @@ from lutris.database.categories import (
|
|||
normalized_category_names,
|
||||
)
|
||||
from lutris.runners.runner import Runner
|
||||
from lutris.services import SERVICES
|
||||
from lutris.util.strings import parse_playtime_parts, strip_accents
|
||||
from lutris.util.tokenization import (
|
||||
TokenReader,
|
||||
|
@ -197,6 +198,8 @@ class GameSearch(BaseSearch):
|
|||
"favorite",
|
||||
"categorized",
|
||||
"category",
|
||||
"source",
|
||||
"service", # an alias for source
|
||||
"runner",
|
||||
"platform",
|
||||
"playtime",
|
||||
|
@ -217,6 +220,10 @@ class GameSearch(BaseSearch):
|
|||
category = tokens.get_cleaned_token() or ""
|
||||
return self.get_category_predicate(category)
|
||||
|
||||
if name in ("source", "service"):
|
||||
service_name = tokens.get_cleaned_token() or ""
|
||||
return self.get_service_predicate(service_name)
|
||||
|
||||
if name == "runner":
|
||||
runner_name = tokens.get_cleaned_token() or ""
|
||||
return self.get_runner_predicate(runner_name)
|
||||
|
@ -360,6 +367,20 @@ class GameSearch(BaseSearch):
|
|||
|
||||
return match_categorized
|
||||
|
||||
def get_service_predicate(self, service_name: str) -> Callable:
|
||||
service_name = service_name.casefold()
|
||||
|
||||
def match_service(db_game):
|
||||
game_service = db_game.get("service")
|
||||
if game_service:
|
||||
if game_service.casefold() == service_name:
|
||||
return True
|
||||
|
||||
service = SERVICES.get(game_service)
|
||||
return service and service_name == service.name.casefold()
|
||||
|
||||
return match_service
|
||||
|
||||
def get_runner_predicate(self, runner_name: str) -> Callable:
|
||||
runner_name = runner_name.casefold()
|
||||
|
||||
|
|
|
@ -311,6 +311,7 @@
|
|||
<b>hidden:</b><i>true</i> Only hidden games.
|
||||
<b>favorite:</b><i>true</i> Only favorite games.
|
||||
<b>category:</b><i>x</i> Only games in cateogry <i>x</i>.
|
||||
<b>source:</b><i>steam</i> Only Steam games
|
||||
<b>runner:</b><i>wine</i> Only Wine games
|
||||
<b>platform:</b><i>windows</i> Only Windows games
|
||||
<b>playtime:</b><i>&gt;2 hours</i> Only games played for more than 2 hours.
|
||||
|
|
Loading…
Reference in a new issue