developer as full field now, reverse index of originals and developers created
This commit is contained in:
@@ -1061,6 +1061,7 @@
|
||||
"https://gitlab.com/osgames/epicheroes.git",
|
||||
"https://gitlab.com/osgames/firststrike.git",
|
||||
"https://gitlab.com/osgames/freecivac.git",
|
||||
"https://gitlab.com/osgames/freenukum.git",
|
||||
"https://gitlab.com/osgames/freetennis.git",
|
||||
"https://gitlab.com/osgames/freetrain.git",
|
||||
"https://gitlab.com/osgames/freya-engine.git",
|
||||
@@ -1110,6 +1111,7 @@
|
||||
"https://gitlab.com/osgames/omega-roguelike.git",
|
||||
"https://gitlab.com/osgames/openblox.git",
|
||||
"https://gitlab.com/osgames/opencity.git",
|
||||
"https://gitlab.com/osgames/openhomm.git",
|
||||
"https://gitlab.com/osgames/openmortal.git",
|
||||
"https://gitlab.com/osgames/openquartz.git",
|
||||
"https://gitlab.com/osgames/openrpg.git",
|
||||
@@ -1248,9 +1250,7 @@
|
||||
],
|
||||
"bzr": [
|
||||
"https://code.launchpad.net/4dtris",
|
||||
"https://code.launchpad.net/heroesofwesnoth",
|
||||
"https://code.launchpad.net/openhomm",
|
||||
"https://code.launchpad.net/~dnax88/gweled/trunk",
|
||||
"https://code.launchpad.net/~silwol/freenukum"
|
||||
"https://code.launchpad.net/gweled",
|
||||
"https://code.launchpad.net/heroesofwesnoth"
|
||||
]
|
||||
}
|
@@ -69,6 +69,7 @@ http://www.cafu.de/
|
||||
http://www.celephais.net/fitzquake/
|
||||
http://www.codeskulptor.org/
|
||||
http://www.computerchess.org.uk/ccrl/4040/rating_list_all.html
|
||||
http://www.dianneandpaul.net/CSBwin/
|
||||
http://www.divgo.net/
|
||||
http://www.dosbox.com/download.php?main=1
|
||||
http://www.drpetter.se/project_sfxr.html
|
||||
@@ -243,6 +244,7 @@ https://github.com/gan74/Yave
|
||||
https://github.com/GlPortal/RadixEngine
|
||||
https://github.com/gnFur/Monofoxe
|
||||
https://github.com/GNOME/quadrapassel
|
||||
https://github.com/godot-extended-libraries/godot-next
|
||||
https://github.com/godot-mega-man/Mega-Man-Engine
|
||||
https://github.com/godotengine/godot-design
|
||||
https://github.com/grantjenks/free-python-games (check all)
|
||||
@@ -325,6 +327,7 @@ https://github.com/SPC-Some-Polish-Coders/PopHead
|
||||
https://github.com/SPC-Some-Polish-Coders/PopHead/
|
||||
https://github.com/stackos/Viry3D
|
||||
https://github.com/stolencatkarma/CataclysmLD
|
||||
https://github.com/Sygmei/ObEngine
|
||||
https://github.com/tainicom/Aether.Physics2D
|
||||
https://github.com/tangziwen/Cube-Engine
|
||||
https://github.com/the-insulines
|
||||
@@ -346,6 +349,7 @@ https://github.com/xrOxygen/xray-oxygen
|
||||
https://github.com/xtreme8000/BetterSpades
|
||||
https://github.com/YuriiSalimov/15-puzzle
|
||||
https://github.com/Zal0/ZGB
|
||||
https://github.com/zurn/zapper (or any other tapper clone)
|
||||
https://gitlab.com/LibreGames
|
||||
https://gitlab.com/nyov/nyovs-nexuiz
|
||||
https://gitlab.com/vgstation/vgstation-old (and vgstation in general)
|
||||
@@ -402,7 +406,6 @@ https://sites.google.com/site/syllablesoftware/games (List of games (with screen
|
||||
https://sourceforge.net/directory/games/games/os:windows/
|
||||
https://sourceforge.net/projects/dices/
|
||||
https://sourceforge.net/projects/dsa-hl.berlios/
|
||||
https://sourceforge.net/projects/elysium/
|
||||
https://sourceforge.net/projects/lgames/files/barrage/
|
||||
https://sourceforge.net/projects/moeng/
|
||||
https://sourceforge.net/projects/openzelda/
|
||||
|
@@ -782,6 +782,7 @@ def sort_text_file(file, name):
|
||||
text = '\n'.join(text)
|
||||
utils.write_text(file, text)
|
||||
|
||||
|
||||
def clean_backlog(stripped_game_urls):
|
||||
|
||||
# read backlog and split
|
||||
@@ -824,6 +825,76 @@ def check_validity_backlog():
|
||||
print('{} redirected to {}, {}'.format(url, r.url, r.history))
|
||||
|
||||
|
||||
def update_inspirations(infos):
|
||||
"""
|
||||
|
||||
"""
|
||||
|
||||
print('update inspirations')
|
||||
|
||||
inspirations_file = os.path.join(c.root_path, 'inspirations.md')
|
||||
inspirations = '[comment]: # (partly autogenerated content, edit with care, read the manual before)\n# Inspirations\n\n'
|
||||
|
||||
# collect information
|
||||
originals = {}
|
||||
for info in infos:
|
||||
name = info['name']
|
||||
keywords = info['keywords']
|
||||
ins = [x[12:] for x in keywords if x.startswith('inspired by ')]
|
||||
if ins:
|
||||
ins = ins[0].split(' + ')
|
||||
for original in ins:
|
||||
if original in originals:
|
||||
originals[original].append(name)
|
||||
else:
|
||||
originals[original] = [name]
|
||||
|
||||
# number of inspirations
|
||||
inspirations += '{} games listed as inspirations.\n\n'.format(len(originals))
|
||||
|
||||
# iterate through originals alphabetically sorted
|
||||
for original, names in sorted(originals.items(), key=lambda x: str.casefold(x[0])):
|
||||
inspirations += '## {}\n\n'.format(original)
|
||||
inspirations += '- Inspired entries: {}\n\n'.format(', '.join(sorted(names, key=str.casefold)))
|
||||
|
||||
# write to statistics file
|
||||
utils.write_text(inspirations_file, inspirations)
|
||||
|
||||
|
||||
def update_developer(infos):
|
||||
"""
|
||||
|
||||
"""
|
||||
|
||||
print('update developer')
|
||||
|
||||
developer_file = os.path.join(c.root_path, 'developer.md')
|
||||
content = '[comment]: # (partly autogenerated content, edit with care, read the manual before)\n# Developer\n\n'
|
||||
|
||||
# collect information
|
||||
developer = {}
|
||||
for info in infos:
|
||||
if 'developer' in info:
|
||||
name = info['name']
|
||||
devs = info['developer']
|
||||
for dev in devs:
|
||||
if dev in developer:
|
||||
developer[dev].append(name)
|
||||
else:
|
||||
developer[dev] = [name]
|
||||
|
||||
# number of developers
|
||||
content += '{} listed developer(s).\n\n'.format(len(developer))
|
||||
|
||||
# iterate through developers alphabetically sorted
|
||||
for dev, names in sorted(developer.items(), key=lambda x: str.casefold(x[0])):
|
||||
content += '## {}\n\n'.format(dev)
|
||||
content += '- Games: {}\n\n'.format(', '.join(sorted(names, key=str.casefold)))
|
||||
|
||||
# write to statistics file
|
||||
utils.write_text(developer_file, content)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
# check_validity_backlog()
|
||||
@@ -864,6 +935,12 @@ if __name__ == "__main__":
|
||||
# generate report
|
||||
update_statistics(infos)
|
||||
|
||||
# update inspirations
|
||||
update_inspirations(infos)
|
||||
|
||||
# update developers
|
||||
update_developer(infos)
|
||||
|
||||
# update database for html table
|
||||
export_json(infos)
|
||||
|
||||
|
@@ -71,6 +71,7 @@ Howitzer Skirmish (http://howski.sourceforge.net/): No source code
|
||||
Ikariam (https://github.com/advocaite/ikariam, https://github.com/TheOnly92/Ikariem): No license information found, no assets license information found
|
||||
imperialism-remake (http://remake.twelvepm.de/, https://github.com/Trilarion/imperialism-Remake): Too minimal (I must know)
|
||||
Imperium: Sticks (http://rtciv.sourceforge.net/, http://sourceforge.net/projects/rtciv): No source code available
|
||||
ImperiumAO (https://sourceforge.net/projects/impao, https://www.imperiumao.com.ar/): Only engine is open source, engine is ORE
|
||||
Inline-Engine (https://github.com/petiaccja/Inline-Engine): Commercial license
|
||||
Interstate Outlaws (http://www.interstateoutlaws.com/): Very early development, No clear indication of license with source code, Abandoned since long time
|
||||
Ironclad (https://github.com/mikera/ironclad): No license information, asked but did not get a reply
|
||||
|
@@ -9,11 +9,11 @@ from utils import utils, constants as c
|
||||
|
||||
essential_fields = ('Home', 'State', 'Keywords', 'Code repository', 'Code language', 'Code license')
|
||||
valid_fields = ('Home', 'Media', 'State', 'Play', 'Download', 'Platform', 'Keywords', 'Code repository', 'Code language',
|
||||
'Code license', 'Code dependencies', 'Assets license', 'Build system', 'Build instructions')
|
||||
'Code license', 'Code dependencies', 'Assets license', 'Developer', 'Build system', 'Build instructions')
|
||||
valid_platforms = ('Windows', 'Linux', 'macOS', 'Android', 'iOS', 'Web')
|
||||
recommended_keywords = ('action', 'arcade', 'adventure', 'visual novel', 'sports', 'platform', 'puzzle', 'role playing', 'simulation', 'strategy', 'card game', 'board game', 'music', 'educational', 'tool', 'game engine', 'framework', 'library', 'remake')
|
||||
known_languages = ('AGS Script', 'ActionScript', 'Ada', 'AngelScript', 'Assembly', 'Basic', 'Blender Script', 'BlitzMax', 'C', 'C#', 'C++', 'Clojure', 'CoffeeScript', 'ColdFusion', 'D', 'DM', 'Dart', 'Dia', 'Elm', 'Emacs Lisp', 'F#', 'GDScript', 'Game Maker Script', 'Go', 'Groovy', 'Haskell', 'Haxe', 'Io', 'Java', 'JavaScript', 'Kotlin', 'Lisp', 'Lua', 'MegaGlest Script', 'MoonScript', 'None', 'OCaml', 'Objective-C', 'PHP', 'Pascal', 'Perl', 'Python', 'QuakeC', 'R', "Ren'py", 'Ruby', 'Rust', 'Scala', 'Scheme', 'Script', 'Shell', 'Swift', 'TorqueScript', 'TypeScript', 'Vala', 'Visual Basic', 'XUL', 'ZenScript', 'ooc')
|
||||
known_licenses = ('2-clause BSD', '3-clause BSD', 'AFL-3.0', 'AGPL-3.0', 'Apache-2.0', 'Artistic License-1.0', 'Artistic License-2.0', 'Boost-1.0', 'CC-BY-NC-3.0', 'CC-BY-NC-SA-2.0', 'CC-BY-SA-3.0', 'CC-BY-SA-4.0', 'CC0', 'Custom', 'EPL-2.0', 'GPL-2.0', 'GPL-3.0', 'IJG', 'ISC', 'Java Research License', 'LGPL-2.0', 'LGPL-2.1', 'LGPL-3.0', 'MAME', 'MIT', 'MPL-1.1', 'MPL-2.0', 'MS-PL', 'MS-RL', 'NetHack General Public License', 'None', 'Proprietary', 'Public domain', 'SWIG license', 'Unlicense', 'WTFPL', 'wxWindows license', 'zlib')
|
||||
known_licenses = ('2-clause BSD', '3-clause BSD', 'AFL-3.0', 'AGPL-3.0', 'Apache-2.0', 'Artistic License-1.0', 'Artistic License-2.0', 'Boost-1.0', 'CC-BY-NC-3.0', 'CC-BY-NC-SA-2.0', 'CC-BY-NC-SA-3.0', 'CC-BY-SA-3.0', 'CC-BY-NC-SA-4.0', 'CC-BY-SA-4.0', 'CC0', 'Custom', 'EPL-2.0', 'GPL-2.0', 'GPL-3.0', 'IJG', 'ISC', 'Java Research License', 'LGPL-2.0', 'LGPL-2.1', 'LGPL-3.0', 'MAME', 'MIT', 'MPL-1.1', 'MPL-2.0', 'MS-PL', 'MS-RL', 'NetHack General Public License', 'None', 'Proprietary', 'Public domain', 'SWIG license', 'Unlicense', 'WTFPL', 'wxWindows license', 'zlib')
|
||||
known_multiplayer_modes = ('competitive', 'co-op', 'hotseat', 'LAN', 'local', 'massive', 'matchmaking', 'online', 'split-screen')
|
||||
|
||||
regex_sanitize_name = re.compile(r"[^A-Za-z 0-9-+]+")
|
||||
@@ -250,7 +250,7 @@ def assemble_infos():
|
||||
canonical_file_name = canonical_entry_name(info['name']) + '.md'
|
||||
# we also allow -X with X =2..9 as possible extension (because of duplicate canonical file names)
|
||||
if canonical_file_name != entry and canonical_file_name != entry[:-5] + '.md':
|
||||
print('file {} should be {}'.format(entry, canonical_file_name))
|
||||
print('Warning: file {} should be {}'.format(entry, canonical_file_name))
|
||||
source_file = os.path.join(c.entries_path, entry)
|
||||
target_file = os.path.join(c.entries_path, canonical_file_name)
|
||||
if not os.path.isfile(target_file):
|
||||
|
Reference in New Issue
Block a user