48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
import sys
|
|
import time
|
|
|
|
import games
|
|
import jsonfile
|
|
|
|
ABOUT_FILE = "about.json"
|
|
REQUEST_DELAY_SECONDS = 0.3
|
|
|
|
|
|
def main() -> int:
|
|
about = jsonfile.load(ABOUT_FILE)
|
|
listed_games = about.get("games", [])
|
|
if not listed_games:
|
|
print("about.json has no games to import")
|
|
return 0
|
|
|
|
try:
|
|
already_listed = {game["name"].lower() for game in games.list_games()}
|
|
except (OSError, ValueError) as error:
|
|
print(f"Import stopped: {error}", file=sys.stderr)
|
|
return 1
|
|
failed = []
|
|
for game in listed_games:
|
|
if game["name"].lower() in already_listed:
|
|
print(f"Already listed {game['name']}")
|
|
continue
|
|
try:
|
|
saved = games.add_game(game.get("url"), game["name"], "played", None, game.get("image"))
|
|
print(f"Imported {saved['name']} (IGDB {saved['igdbId']})")
|
|
except (OSError, ValueError) as error:
|
|
print(f"Skipped {game['name']}: {error}", file=sys.stderr)
|
|
failed.append(game)
|
|
time.sleep(REQUEST_DELAY_SECONDS)
|
|
|
|
if failed:
|
|
print(f"{len(failed)} games were not imported, so about.json was left as it is. Fix them and run this again.", file=sys.stderr)
|
|
return 1
|
|
|
|
del about["games"]
|
|
jsonfile.save(ABOUT_FILE, about)
|
|
print(f"Imported {len(listed_games)} games and removed them from about.json")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|