File: check_scummvm_ids.py

package info (click to toggle)
game-data-packager 85.1
  • links: PTS, VCS
  • area: contrib
  • in suites: trixie
  • size: 33,332 kB
  • sloc: python: 15,320; sh: 713; ansic: 95; makefile: 60
file content (65 lines) | stat: -rwxr-xr-x 1,810 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/usr/bin/python3
# encoding=utf-8
#
# Copyright © 2024 Alexandre Detiste <alexandre@detiste.be>
# SPDX-License-Identifier: GPL-2.0-or-later

import os
import subprocess

from game_data_packager.game import load_games
from game_data_packager.games.scummvm_common import (ScummvmGameData,
                                                     ScummvmPackage)


def get_scummvm_ids() -> set[str]:
    result = set()
    stdout = subprocess.check_output(['scummvm', '--list-all-games'],
                                     text=True)
    for line in stdout.splitlines():
        if ':' in line:
            gameid = line.split()[0]
            result.add(gameid)
    return result


scummvm_ids = get_scummvm_ids()

scummvm_ids2: dict[str, int] = dict()
for gameid in scummvm_ids:
    assert gameid not in scummvm_ids2
    scummvm_ids2[gameid] = 1

    oldgameid = gameid.split(':')[1]
    scummvm_ids2[oldgameid] = scummvm_ids2.get(oldgameid, 0) + 1

scummvm_ids3: set[str] = set()
for gameid, count in scummvm_ids2.items():
    if count > 1:
        # print('discarding non-discriminating id: %s' % gameid)
        pass
    else:
        scummvm_ids3.add(gameid)


def get_gdp_ids() -> set[str]:
    games = set()
    for name, game in load_games(
        datadir=os.environ.get('GDP_BUILDDIR', 'out')
    ).items():
        if game.wikibase != 'https://wiki.scummvm.org/index.php/':
            continue
        assert isinstance(game, ScummvmGameData), game
        game.load_file_data()
        for package in game.packages.values():
            assert isinstance(package, ScummvmPackage), package
            gameid = package.gameid or game.gameid
            games.add(gameid)
    return games


gdp_ids = get_gdp_ids()
# print(gdp_ids)

print("Unknown game id's:")
print(sorted(gdp_ids - scummvm_ids3))