mirror of
https://github.com/derrod/legendary.git
synced 2024-12-22 17:55:27 +00:00
[cli/core] Add option to force refresh game metadata
This commit is contained in:
parent
dbc4131ec2
commit
7509550eb1
|
@ -153,9 +153,15 @@ class LegendaryCLI:
|
||||||
if not self.core.login():
|
if not self.core.login():
|
||||||
logger.error('Login failed, cannot continue!')
|
logger.error('Login failed, cannot continue!')
|
||||||
exit(1)
|
exit(1)
|
||||||
logger.info('Getting game list... (this may take a while)')
|
|
||||||
|
if args.force_refresh:
|
||||||
|
logger.info('Refreshing game list, this may take a while...')
|
||||||
|
else:
|
||||||
|
logger.info('Getting game list... (this may take a while)')
|
||||||
|
|
||||||
games, dlc_list = self.core.get_game_and_dlc_list(
|
games, dlc_list = self.core.get_game_and_dlc_list(
|
||||||
platform_override=args.platform_override, skip_ue=not args.include_ue
|
platform_override=args.platform_override, skip_ue=not args.include_ue,
|
||||||
|
force_refresh=args.force_refresh
|
||||||
)
|
)
|
||||||
# Get information for games that cannot be installed through legendary (yet), such
|
# Get information for games that cannot be installed through legendary (yet), such
|
||||||
# as games that have to be activated on and launched through Origin.
|
# as games that have to be activated on and launched through Origin.
|
||||||
|
@ -1376,6 +1382,8 @@ def main():
|
||||||
list_parser.add_argument('--csv', dest='csv', action='store_true', help='List games in CSV format')
|
list_parser.add_argument('--csv', dest='csv', action='store_true', help='List games in CSV format')
|
||||||
list_parser.add_argument('--tsv', dest='tsv', action='store_true', help='List games in TSV format')
|
list_parser.add_argument('--tsv', dest='tsv', action='store_true', help='List games in TSV format')
|
||||||
list_parser.add_argument('--json', dest='json', action='store_true', help='List games in JSON format')
|
list_parser.add_argument('--json', dest='json', action='store_true', help='List games in JSON format')
|
||||||
|
list_parser.add_argument('--force-refresh', dest='force_refresh', action='store_true',
|
||||||
|
help='Force a refresh of all game metadata')
|
||||||
|
|
||||||
list_installed_parser.add_argument('--check-updates', dest='check_updates', action='store_true',
|
list_installed_parser.add_argument('--check-updates', dest='check_updates', action='store_true',
|
||||||
help='Check for updates for installed games')
|
help='Check for updates for installed games')
|
||||||
|
|
|
@ -307,9 +307,8 @@ class LegendaryCore:
|
||||||
def get_game_list(self, update_assets=True) -> List[Game]:
|
def get_game_list(self, update_assets=True) -> List[Game]:
|
||||||
return self.get_game_and_dlc_list(update_assets=update_assets)[0]
|
return self.get_game_and_dlc_list(update_assets=update_assets)[0]
|
||||||
|
|
||||||
def get_game_and_dlc_list(self, update_assets=True,
|
def get_game_and_dlc_list(self, update_assets=True, platform_override=None,
|
||||||
platform_override=None,
|
force_refresh=False, skip_ue=True) -> (List[Game], Dict[str, List[Game]]):
|
||||||
skip_ue=True) -> (List[Game], Dict[str, List[Game]]):
|
|
||||||
_ret = []
|
_ret = []
|
||||||
_dlc = defaultdict(list)
|
_dlc = defaultdict(list)
|
||||||
|
|
||||||
|
@ -319,7 +318,7 @@ class LegendaryCore:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
game = self.lgd.get_game_meta(ga.app_name)
|
game = self.lgd.get_game_meta(ga.app_name)
|
||||||
if update_assets and (not game or
|
if update_assets and (not game or force_refresh or
|
||||||
(game and game.app_version != ga.build_version and not platform_override)):
|
(game and game.app_version != ga.build_version and not platform_override)):
|
||||||
if game and game.app_version != ga.build_version and not platform_override:
|
if game and game.app_version != ga.build_version and not platform_override:
|
||||||
self.log.info(f'Updating meta for {game.app_name} due to build version mismatch')
|
self.log.info(f'Updating meta for {game.app_name} due to build version mismatch')
|
||||||
|
@ -343,11 +342,13 @@ class LegendaryCore:
|
||||||
|
|
||||||
return _ret, _dlc
|
return _ret, _dlc
|
||||||
|
|
||||||
def get_non_asset_library_items(self, skip_ue=True) -> (List[Game], Dict[str, List[Game]]):
|
def get_non_asset_library_items(self, force_refresh=False,
|
||||||
|
skip_ue=True) -> (List[Game], Dict[str, List[Game]]):
|
||||||
"""
|
"""
|
||||||
Gets a list of Games without assets for installation, for instance Games delivered via
|
Gets a list of Games without assets for installation, for instance Games delivered via
|
||||||
third-party stores that do not have assets for installation
|
third-party stores that do not have assets for installation
|
||||||
|
|
||||||
|
:param force_refresh: Force a metadata refresh
|
||||||
:param skip_ue: Ingore Unreal Marketplace entries
|
:param skip_ue: Ingore Unreal Marketplace entries
|
||||||
:return: List of Games and DLC that do not have assets
|
:return: List of Games and DLC that do not have assets
|
||||||
"""
|
"""
|
||||||
|
@ -363,7 +364,7 @@ class LegendaryCore:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
game = self.lgd.get_game_meta(libitem['appName'])
|
game = self.lgd.get_game_meta(libitem['appName'])
|
||||||
if not game:
|
if not game or force_refresh:
|
||||||
eg_meta = self.egs.get_game_info(libitem['namespace'], libitem['catalogItemId'])
|
eg_meta = self.egs.get_game_info(libitem['namespace'], libitem['catalogItemId'])
|
||||||
game = Game(app_name=libitem['appName'], app_version=None,
|
game = Game(app_name=libitem['appName'], app_version=None,
|
||||||
app_title=eg_meta['title'], asset_info=None, metadata=eg_meta)
|
app_title=eg_meta['title'], asset_info=None, metadata=eg_meta)
|
||||||
|
|
Loading…
Reference in a new issue