update Github information (devs and project stars)

This commit is contained in:
Trilarion
2021-09-27 14:51:43 +02:00
parent 4f151766bb
commit 6b6ca69a88
989 changed files with 10736 additions and 2086 deletions

View File

@ -5,7 +5,6 @@ repositories to be checked out. Works on bare repositories.
import json
import re
import urllib.parse
from utils.utils import *
from utils.archive import *

View File

@ -1,11 +1,9 @@
{
"git": [
"git://git.blender.org/blender.git",
"git://git.colm.net/ragel.git",
"git://opensimulator.org/git/opensim",
"http://git.pond.sub.org/empserver",
"http://hgm.nubati.net/cgi-bin/gitweb.cgi?p=fairymax.git",
"https://anongit.freedesktop.org/git/pkg-config.git",
"https://anongit.kde.org/ksudoku.git",
"https://bitbucket.org/Knitter/puzzlemoppet.git",
"https://bitbucket.org/SteveSmith16384/teamtactics.git",
@ -126,13 +124,11 @@
"https://git.savannah.nongnu.org/git/stellarengine.git",
"https://git.savannah.nongnu.org/git/tangomon.git",
"https://git.tartarus.org/simon/puzzles.git",
"https://git.tukaani.org/xz.git",
"https://git.tuxfamily.org/baller/baller.git",
"https://git.tuxfamily.org/boohu/boohu.git",
"https://git.tuxfamily.org/fanwor/fanwor.git",
"https://git.tuxfamily.org/harmonist/harmonist.git",
"https://git.tuxfamily.org/rba/rogueboxadventures.git",
"https://git.xiph.org/vorbis.git",
"https://git.xonotic.org/xonotic/xonotic.git",
"https://gitea.it/rixty/OpenValley.git",
"https://github.com/00-Evan/shattered-pixel-dungeon.git",
@ -176,6 +172,7 @@
"https://github.com/Blecki/dwarfcorp.git",
"https://github.com/BlindMindStudios/StarRuler2-Source.git",
"https://github.com/Blzut3/CatacombSDL.git",
"https://github.com/Bollos00/LibreMines.git",
"https://github.com/BrooklynKing/Grimsonland.git",
"https://github.com/BrunoAOR/Space-Harrier-Clone.git",
"https://github.com/Bubu/android-dice-game.git",
@ -248,7 +245,6 @@
"https://github.com/GarageGames/Torque2D.git",
"https://github.com/GarageGames/Torque3D.git",
"https://github.com/GentenStudios/QuartzEngine.git",
"https://github.com/GerHobbelt/pthread-win32.git",
"https://github.com/GlPortal/RadixEngine.git",
"https://github.com/GlPortal/glPortal.git",
"https://github.com/Gnomescroll/Gnomescroll.git",
@ -550,6 +546,7 @@
"https://github.com/aroldanju/raptor-call-of-the-shadows.git",
"https://github.com/arturkot/the-house-game.git",
"https://github.com/arx/ArxLibertatis.git",
"https://github.com/asc-community/MxEngine.git",
"https://github.com/asiekierka/reconstruction-of-super-zzt.git",
"https://github.com/asiekierka/reconstruction-of-zzt.git",
"https://github.com/asiekierka/zeta.git",
@ -578,7 +575,6 @@
"https://github.com/bni/orbium.git",
"https://github.com/boardgameio/boardgame.io.git",
"https://github.com/bobthekingofegypt/BobBall.git",
"https://github.com/boostorg/boost.git",
"https://github.com/bote-team/bote.git",
"https://github.com/bradhannah/Ultima5Redux.git",
"https://github.com/bradharding/doomretro.git",
@ -675,7 +671,6 @@
"https://github.com/dorkster/freeblocks.git",
"https://github.com/dougmencken/HeadOverHeels.git",
"https://github.com/doukutsu-rs/doukutsu-rs.git",
"https://github.com/doxygen/doxygen.git",
"https://github.com/dozingcat/Vector-Pinball.git",
"https://github.com/dreamchess/dreamchess.git",
"https://github.com/drodin/TuxRider.git",
@ -755,7 +750,6 @@
"https://github.com/ghewgill/puzzles.git",
"https://github.com/gideros/gideros.git",
"https://github.com/ginkgo/pink-pony.git",
"https://github.com/glennrp/libpng.git",
"https://github.com/gliptic/liero.git",
"https://github.com/goblinhack/goblinhack.git",
"https://github.com/godotengine/godot.git",
@ -778,7 +772,6 @@
"https://github.com/haleymt/CrystalQuest.git",
"https://github.com/hankmorgan/UnderworldExporter.git",
"https://github.com/haqu/tiny-wings.git",
"https://github.com/harfbuzz/harfbuzz.git",
"https://github.com/haroldo-ok/datastorm.git",
"https://github.com/hedgewars/hw.git",
"https://github.com/henkboom/pax-britannica.git",
@ -821,7 +814,6 @@
"https://github.com/jazztickets/emptyclip.git",
"https://github.com/jazztickets/irrlamb.git",
"https://github.com/jazzyjester/Mario-Game.git",
"https://github.com/jbeder/yaml-cpp.git",
"https://github.com/jcarolus/android-chess.git",
"https://github.com/jdah/minecraft-weekend.git",
"https://github.com/jdmclark/gorc.git",
@ -852,6 +844,7 @@
"https://github.com/jwvhewitt/dmeternal.git",
"https://github.com/jwvhewitt/gearhead-1.git",
"https://github.com/jwvhewitt/gearhead-2.git",
"https://github.com/kacperks/Fractal_Engine.git",
"https://github.com/kantoks/skrupel.git",
"https://github.com/karlb/castle-combat.git",
"https://github.com/kazzmir/paintown.git",
@ -886,12 +879,10 @@
"https://github.com/llopisdon/monsters_and_mushrooms.git",
"https://github.com/lo-th/3d.city.git",
"https://github.com/love2d/love.git",
"https://github.com/lua/lua.git",
"https://github.com/luciusDXL/TheForceEngine.git",
"https://github.com/lufte/lona.git",
"https://github.com/lvella/xevil.git",
"https://github.com/mackers/xultris.git",
"https://github.com/madler/zlib.git",
"https://github.com/magarena/magarena.git",
"https://github.com/magefree/mage.git",
"https://github.com/maikmerten/c64-nuclearreaction.git",
@ -944,14 +935,12 @@
"https://github.com/nicolasbrailo/PianOli.git",
"https://github.com/nicolasgramlich/AndEngine.git",
"https://github.com/nicupavel/openpanzer.git",
"https://github.com/nigels-com/glew.git",
"https://github.com/nikki-and-the-robots/nikki.git",
"https://github.com/nlarn/nlarn.git",
"https://github.com/nodef0/gorillas-rs.git",
"https://github.com/nornagon/openc2e.git",
"https://github.com/notapixelstudio/superstarfighter.git",
"https://github.com/nukeykt/NBlood.git",
"https://github.com/numpy/numpy.git",
"https://github.com/nuvie/nuvie.git",
"https://github.com/nxengine/nxengine-evo.git",
"https://github.com/obfusk/sokobang.git",
@ -973,7 +962,6 @@
"https://github.com/openitg/openitg.git",
"https://github.com/openlegend/core-rules.git",
"https://github.com/opensludge/opensludge.git",
"https://github.com/openssl/openssl.git",
"https://github.com/opentibia/server.git",
"https://github.com/opentibia/yatc.git",
"https://github.com/opentomb/OpenTomb.git",
@ -1016,14 +1004,11 @@
"https://github.com/prophile/xsera.git",
"https://github.com/protoman/rockbot.git",
"https://github.com/ptitSeb/friking-shark.git",
"https://github.com/ptitSeb/gl4es.git",
"https://github.com/pushover/pushover.github.io.git",
"https://github.com/pwiecz/command_series.git",
"https://github.com/pwmarcz/netacka.git",
"https://github.com/pychess/pychess.git",
"https://github.com/pygame/pygame.git",
"https://github.com/pyglet/pyglet.git",
"https://github.com/python-pillow/Pillow.git",
"https://github.com/python-sge/sge.git",
"https://github.com/q-gears/q-gears.git",
"https://github.com/q4a/scourge.git",
@ -1151,7 +1136,6 @@
"https://github.com/svkaiser/TurokEX.git",
"https://github.com/svkaiser/strife-ve.git",
"https://github.com/svn2github/numptyphysics.git",
"https://github.com/swig/swig.git",
"https://github.com/synkarius/micemen.git",
"https://github.com/taisei-project/taisei.git",
"https://github.com/tales/sourceoftales.git",
@ -1164,6 +1148,7 @@
"https://github.com/teruk/movbizz.git",
"https://github.com/textadventures/squiffy.git",
"https://github.com/textbrowser/maxit.git",
"https://github.com/tgstation/tgstation.git",
"https://github.com/the-butterfly-effect/tbe.git",
"https://github.com/the3dfxdude/7kaa.git",
"https://github.com/theZiz/hase.git",
@ -1186,7 +1171,6 @@
"https://github.com/tube42/candymem.git",
"https://github.com/tukkek/javelin.git",
"https://github.com/turulomio/glparchis.git",
"https://github.com/twisted/twisted.git",
"https://github.com/ufo2000/ufo2000.git",
"https://github.com/ufoai/ufoai.git",
"https://github.com/undefined-darkness/open-horizon.git",
@ -1220,7 +1204,6 @@
"https://github.com/w84death/Tanks-of-Freedom.git",
"https://github.com/watabou/PD-classes.git",
"https://github.com/watabou/pixel-dungeon.git",
"https://github.com/weidai11/cryptopp.git",
"https://github.com/wesleywerner/nova-pinball-engine.git",
"https://github.com/wesleywerner/nova-pinball.git",
"https://github.com/wesnoth/wesnoth.git",
@ -1231,8 +1214,6 @@
"https://github.com/worldforge/cyphesis.git",
"https://github.com/worldforge/ember.git",
"https://github.com/wsdfhjxc/taponium.git",
"https://github.com/wxWidgets/Phoenix.git",
"https://github.com/wxWidgets/wxWidgets.git",
"https://github.com/xLAva/JediAcademyLinux.git",
"https://github.com/xLAva/JediOutcastLinux.git",
"https://github.com/xenris/liquid-wars-android.git",
@ -1517,8 +1498,6 @@
"https://gitlab.com/xonotic/xonotic.git",
"https://gitlab.gnome.org/GNOME/gnome-chess.git",
"https://gitlab.gnome.org/GNOME/gnome-mines.git",
"https://gitlab.gnome.org/GNOME/gtk.git",
"https://gitlab.gnome.org/GNOME/libxml2.git",
"https://gitlab.gnome.org/GNOME/quadrapassel.git",
"https://invent.kde.org/education/gcompris.git",
"https://invent.kde.org/games/granatier.git",
@ -1528,7 +1507,6 @@
"https://invent.kde.org/games/ksnakeduel.git",
"https://invent.kde.org/games/palapeli.git",
"https://repo.or.cz/intricacy.git",
"https://repo.or.cz/openal-soft.git",
"https://repo.or.cz/pachi.git",
"https://repo.or.cz/tennix.git",
"https://salsa.debian.org/games-team/bloboats.git",

View File

@ -1,21 +1,8 @@
http://svn.assembla.com/svn/gdpl/
http://www.dianneandpaul.net/CSBwin/
http://www.happypenguin.org/show?XKobo (offline)
http://www.ifwiki.org/index.php/Main_Page
http://www.layabox.com/en/
http://www.lesfleursdunormal.fr/static/informatique/old/index_en.html
http://www.linuxdevcenter.com/pub/a/linux/2003/04/24/exult.html
http://www.myandroidonline.com/category/games/
http://www.netgore.com/
http://www.oletus.fi/games/
http://www.paulscode.com/games/
http://www.ph2.net/zugspiel/
http://www.plasmapong.com/plasma-pong/plasma-pong/
http://www.rpgtoolkit.net/
http://www.rtsoft.com/novashell/
http://www.sandboxgamemaker.com/
http://www.scirra.com/construct-classic
http://www.siedler25.org/index.php?com=dynamic&mod=1&lang=en&PHPSESSID=0hmj4aug1fqa80jbk15kcafh71
http://www.silversecond.com/WolfRPGEditor/
http://www.spheredev.org/
http://www.surfline.ne.jp/hachi/xsoldier.html
@ -50,17 +37,12 @@ https://futurepinball.com/
https://gdevelop-app.com/
https://github.blog/2014-01-06-github-game-off-ii-winners/
https://github.blog/2021-05-19-ludum-dare-48-staff-picks/
https://github.com/asc-community/MxEngine
https://github.com/tgstation/tgstation
https://gitorious.org/index-list.html (are there other interesting games)
https://jcrpg.blogspot.de/
https://libregamewiki.org/Alexei:_Part_IX
https://libregamewiki.org/CameliaGirls
https://libregamewiki.org/Childish_Cannoneer
https://libregamewiki.org/index.php?title=Libregamewiki_talk:Community_Portal&oldid=25410#Some_long_term_ideas
https://libregamewiki.org/Libregamewiki:Suggested_games#Likely_sources_for_more_free_games
https://lichess.org/api
https://moaiwebsite.github.io/
https://odr.chalmers.se/handle/20.500.12380/219006
https://osdn.net/softwaremap/trove_list.php?form_cat=80
https://pipoypipagames.itch.io/cows-revenge (https://github.com/Dariasteam/Cows-Revenge)

View File

@ -7,6 +7,8 @@ https://empiredirectory.net/index.php/downloads/viewdownload/6-server-software/1
http://www.divgo.net/ (in spanish difficult to detect sources)
https://github.com/neuromancer/re-private-eye.git (moved to scummvm) and is part of scummvm
http://www.hard-light.net/ (Free Space Open, Knossos, Mods, https://github.com/scp-fs2open/fs2open.github.com, https://wiki.hard-light.net/index.php/Getting_started)
http://svn.assembla.com/svn/gdpl/ (not sure what links there and what kind of game it is, license?)
https://web.archive.org/web/20161230103538/http://www.linuxdevcenter.com/pub/a/linux/2003/04/24/exult.html
roguelike
@ -90,6 +92,11 @@ https://blends.debian.org/games/tasks/
https://blends.debian.org/games/tasks/racing
http://www.goldenstudios.or.id/products/games/index.php
http://www.goldenstudios.or.id/products/GTGE/
https://gitorious.org/index-list.html (are there other interesting games)
http://www.dianneandpaul.net/CSBwin/
http://www.lesfleursdunormal.fr/static/informatique/old/index_en.html
http://www.oletus.fi/games/
http://www.paulscode.com/games/
github collections
@ -116,6 +123,10 @@ https://en.wikipedia.org/wiki/MUD_client (all there)
special
https://alternativeto.net/ (query with only open source as option)
http://www.happypenguin.org (linux game tomb)
https://web.archive.org/web/20121010121342/http://www.happypenguin.org/list?sort=title
https://www.ifwiki.org/index.php/Main_Page (is there software contained or contents with CC license maybe that could be converted...)
https://web.archive.org/web/20161215063433/http://www.linuxdevcenter.com/topics/linux/games
github topics

3
code/github_entries.txt Normal file
View File

@ -0,0 +1,3 @@
[
"zztgo.md"
]

View File

@ -1,26 +1,39 @@
"""
Uses the Github API to learn more about the Github projects.
Updates for example, the starring information.
"""
# TODO remove Boost C++ developers and others libraries that aren't that interesting
# TODO remove developers again?
# TODo try to identify main developers (number of commits or change of lines...)
import os
import json
from utils import constants as c, utils, osg, osg_parse, osg_github
gh_entries_file = os.path.join(c.code_path, 'github_entries.txt')
prefix = 'https://github.com/'
MINIMAL_CONTRIBUTIONS = 5
blog_alias = {'http://k776.tumblr.com/': 'https://k776.tumblr.com/', 'http://timpetricola.com': 'https://timpetricola.com',
'http:/code.schwitzer.ca': 'https://code.schwitzer.ca/', 'http:\\www.vampier.net': 'https://www.vampier.net/'}
blog_alias = {'http://k776.tumblr.com/': 'https://k776.tumblr.com/',
'http://timpetricola.com': 'https://timpetricola.com',
'http:/code.schwitzer.ca': 'https://code.schwitzer.ca/',
'http:\\www.vampier.net': 'https://www.vampier.net/'}
ignored_blogs = ('https://uto.io',)
ignored_languages = ('CSS', 'HTML', 'CMake', 'XSLT', 'ShaderLab')
language_aliases = {'VBA': 'Visual Basic', 'Common Lisp': 'Lisp', 'Game Maker Language': 'Game Maker Script', 'NewLisp': 'Lisp'}
language_aliases = {'VBA': 'Visual Basic', 'Common Lisp': 'Lisp', 'Game Maker Language': 'Game Maker Script',
'NewLisp': 'Lisp', 'Awk': 'AWK', 'Visual Basic': 'Basic', 'FreeBasic': 'Basic'}
ignored_repos = ('https://github.com/jtc0de/Blitwizard.git','https://github.com/IceReaper/KKnD.git',
'https://github.com/KaidemonLP/Open-Fortress-Source.git', 'https://github.com/danielcrenna/TrueCraft.git')
# these gave some errors (but you may try them again or remove them from this list)
ignored_repos = ('https://github.com/jtc0de/Blitwizard.git',
'https://github.com/KaidemonLP/Open-Fortress-Source.git',
'https://github.com/danielcrenna/TrueCraft.git')
name_aliases = {'Andreas Rosdal': 'Andreas Røsdal', 'davefancella': 'Dave Fancella', 'himiloshpetrov': 'Milosh Petrov',
'Jeremy Monin': 'Jeremy D. Monin', 'lennertclaeys': 'Lennert Claeys', 'malignantmanor': 'Malignant Manor',
'Jeremy Monin': 'Jeremy D. Monin', 'lennertclaeys': 'Lennert Claeys',
'malignantmanor': 'Malignant Manor',
'turulomio': 'Turulomio', '_Shaman': 'Shaman', 'alexandreSalconiDenis': 'Alexandre Salconi-Denis',
'buginator': 'Buginator', 'CiprianKhlud': 'Ciprian Khlud', 'dericpage': 'Deric Page',
'DI Murat Sari': 'Murat Sari', 'DolceTriade': 'Dolce Triade', 'DreamingPsion': 'Dreaming Psion',
@ -30,7 +43,8 @@ name_aliases = {'Andreas Rosdal': 'Andreas Røsdal', 'davefancella': 'Dave Fance
def collect_github_entries():
"""
Reads the entries of the database and collects all entries with github as repository
Reads the entries of the database and collects all entries with a Github repository. Just for convenience to limit
the number of entries to iterate on later.
"""
# read entries
@ -51,8 +65,7 @@ def collect_github_entries():
def github_import():
"""
:return:
Import various information from Github repositories (like contributors) or stars for Github repos
"""
private_properties = json.loads(utils.read_text(c.private_properties_file))
@ -65,7 +78,7 @@ def github_import():
try:
# loop over each entry
for index, file in enumerate(files):
print(' process {}'.format(file))
print(' process {} ({})'.format(file, index))
# read entry
entry = osg.read_entry(file)
@ -84,9 +97,10 @@ def github_import():
# is archived
if info['archived']:
if not osg.is_inactive(entry):
print('warning: repo is archived but not inactive state??')
print('warning: repo is archived but not inactive state, check state')
# add archive to repo comment
new_comments.append('@archived')
# TODO check for repos that aren't archived anymore but are marked as such
# add created comment
new_comments.append('@created {}'.format(info['created'].year))
@ -105,7 +119,7 @@ def github_import():
if comments:
comments = comments.split(',')
comments = [c.strip() for c in comments]
comments = [c for c in comments if not c.startswith('@')] # delete old ones
comments = [c for c in comments if not c.startswith('@')] # delete old ones
comments += new_comments
else:
comments = new_comments
@ -122,13 +136,14 @@ def github_import():
for contributor in info['contributors']:
if contributor.type != 'User':
continue
if contributor.contributions < 4:
if contributor.contributions < MINIMAL_CONTRIBUTIONS:
continue
# contributor.login/name/blog
name = contributor.name
if not name:
name = contributor.login
name = name_aliases.get(name, name)
name = name.strip() # sometimes they have trailing spaces (for whatever reason)
nickname = '{}@GH'.format(contributor.login)
blog = contributor.blog
if blog:
@ -154,14 +169,14 @@ def github_import():
dev['Contact'] = dev.get('Contact', []) + [nickname]
if blog and blog not in dev.get('Home', []):
dev['Home'] = dev.get('Home', []) + [blog]
# TODO add to games entries!
if entry['Title'] not in dev['Games']:
dev['Games'].append(entry['Title'])
else:
print(' dev "{}" ({}) added to developer database'.format(name, nickname))
all_developers[name] = {'Name': name, 'Contact': [nickname], 'Games': [entry['Title']]}
if blog:
all_developers[name]['Home'] = [blog]
entry['Code repository'] = code_repositories
osg.write_entry(entry)
except:
@ -176,8 +191,7 @@ def github_import():
def github_starring_synchronization():
"""
:return:
Which Github repositories haven't I starred yet.
"""
private_properties = json.loads(utils.read_text(c.private_properties_file))
@ -186,7 +200,6 @@ def github_starring_synchronization():
# loop over each entry and collect list of repos
all_repos = []
for index, file in enumerate(files):
# read entry
entry = osg.read_entry(file)
@ -216,14 +229,12 @@ def github_starring_synchronization():
print(', '.join(unstarred))
if __name__ == "__main__":
# collect entries
# collect entries (run this only once)
# collect_github_entries()
# import information from gh
# github_import()
github_import()
# which github repos haven't I starred
github_starring_synchronization()
# github_starring_synchronization()

View File

@ -13,9 +13,17 @@
<body>
{#- navigation bar -#}
<nav class="navbar container is-light" aria-label="main navigation">
<div class="navbar-menu">
<div class="navbar-brand">
<a class="navbar-item{% if 'index' in base['active_nav'] %} is-active{% endif %}" href="{{ base['url_to'](['index.html']) }}">{{ macros.render_icon({'class':'home'}) }}<span>OSGL</span></a>
<a class="navbar-item" href="https://github.com/Trilarion/opensourcegames">{{ macros.render_icon({'class':'github'}) }}<span>On GitHub</span></a>
<a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false" data-target="navbarMenu">
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
</div>
<div class="navbar-menu is-active">
<div class="navbar-start">
<a class="navbar-item{% if 'index' in base['active_nav'] %} is-active{% endif %}" href="{{ base['url_to'](['index.html']) }}">{{ macros.render_icon({'class':'home'}) }}<span>Home</span></a>
<a class="navbar-item{% if 'games' in base['active_nav'] %} is-active{% endif %}" href="{{ base['url_to'](['games', 'index.html']) }}">{{ macros.render_icon({'class':'dice'}) }}<span>Games</span></a>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link{% if 'filter' in base['active_nav'] %} is-active{% endif %}">{{ macros.render_icon({'class':'filter'}) }}<span>Filter</span></a>
@ -31,7 +39,6 @@
<a class="navbar-item{% if 'inspirations' in base['active_nav'] %} is-active{% endif %}" href="{{ base['url_to'](['inspirations', 'index.html']) }}">{{ macros.render_icon({'class':'bulb'}) }}<span>Inspirations</span></a>
<a class="navbar-item{% if 'statistics' in base['active_nav'] %} is-active{% endif %}" href="{{ base['url_to'](['statistics.html']) }}">{{ macros.render_icon({'class':'stats-dots'}) }}<span>Statistics</span></a>
<a class="navbar-item{% if 'contribute' in base['active_nav'] %} is-active{% endif %}" href="{{ base['url_to'](['contribute.html']) }}">{{ macros.render_icon({'class':'pencil'}) }}<span>Contribute</span></a>
<a class="navbar-item" href="https://github.com/Trilarion/opensourcegames">{{ macros.render_icon({'class':'github'}) }}<span>On GitHub</span></a>
</div>
</div>
</nav>

View File

@ -17,6 +17,10 @@ Listing:
"""
# TODO game engines should be sorted with frameworks/tools, not with games (they aren't games or are they?)
# TODO if the only change is a change in last updated, do not change it (we can probably check with git diff for it) or checksums
# TODO minimize tag usage: jinja template optimization for line breaks and indention and minimal amount of spaces (and size of files) and minimal amount of repetition of tags
# TODO contribute.html add content
@ -743,8 +747,10 @@ def generate(entries, inspirations, developers):
# copy css
utils.copy_tree(os.path.join(c.web_template_path, 'css'), c.web_css_path)
# collage_image
# collage_image and google search console token
shutil.copyfile(os.path.join(c.web_template_path, 'collage_games.jpg'), os.path.join(c.web_path, 'collage_games.jpg'))
shutil.copyfile(os.path.join(c.web_template_path, 'google1f8a3863114cbcb3.html'), os.path.join(c.web_path, 'google1f8a3863114cbcb3.html'))
# create Jinja Environment
environment = Environment(loader=FileSystemLoader(c.web_template_path), autoescape=True)

View File

@ -0,0 +1 @@
google-site-verification: google1f8a3863114cbcb3.html

View File

@ -184,9 +184,9 @@ if __name__ == "__main__":
# paths
root_path = os.path.realpath(os.path.join(os.path.dirname(__file__), os.path.pardir))
download_path = os.path.join(root_path, 'code', 'html', 'images-download')
download_path = os.path.join(root_path, 'code', '', 'images-download')
downsized_path = os.path.join(download_path, 'downsized')
output_file = os.path.join(root_path, 'code', 'html', 'collage_games.jpg')
output_file = os.path.join(root_path, 'code', '', 'collage_games.jpg')
if not os.path.exists(download_path):
os.mkdir(download_path)
if not os.path.exists(downsized_path):

View File

@ -3,6 +3,7 @@ Checks the entries and tries to detect additional developer content, by retrievi
stored Git repositories.
"""
# TODO bag of words (split, strip, lowercase) on dev names and try to detect sex and nationality
# TODO name is not unique (not even on GH) so maybe add name to profile name
# TODO for duplicate names, create ignore list
# TODO split devs with multiple gh or sf accounts (unlikely), start with most (like name Adam) - naming convention @01 etc.
# TODO check for devs without contact after gitlab/bitbucket/..
@ -43,6 +44,9 @@ class DevelopersMaintainer:
print('duplicates checked (took {:.1f}s)'.format(time.process_time()-start_time))
def check_for_orphans(self):
"""
List developers without games.
"""
if not self.developers:
print('developers not yet loaded')
return
@ -50,6 +54,16 @@ class DevelopersMaintainer:
if not dev['Games']:
print(' {} has no games'.format(dev['Name']))
print('orphans checked')
def remove_orphans(self):
"""
Remove developers without games.
"""
if not self.developers:
print('developers not yet loaded')
return
self.developers = {k: v for k,v in self.developers.items() if v['Games']}
print('orphans removed ({} devs left)'.format(len(self.developers)))
def check_for_missing_developers_in_entries(self):
if not self.developers:
@ -125,6 +139,7 @@ if __name__ == "__main__":
'Write developers': m.write_developer,
'Check for duplicates': m.check_for_duplicates,
'Check for orphans': m.check_for_orphans,
'Remove orphans': m.remove_orphans,
'Check for games in developers not listed': m.check_for_missing_developers_in_entries,
'Update developers from entries': m.update_developers_from_entries,
'Special': m.special_ops,

View File

@ -95,6 +95,7 @@ KZap (http://kzap.sourceforge.net/): Very early development
L5R-RPU:L5R Role-Playing Utilitites (https://sourceforge.net/projects/l5r-rpgu/): Early development, no license information with source, long abandoned (since 2007)
Last Hope A medieval Web Game (https://sourceforge.net/projects/lasthope/, https://web.archive.org/web/20051030000341/http://www.ano-lasthope.org:80/): Very early development
LastNinja (http://lastninja.sourceforge.net/, https://sourceforge.net/projects/lastninja/): Early development, Abandoned, Needs original material that is probably not obtainable legally
Layabox (http://www.layabox.com/en/): Closed source
LegacyClone (http://sourceforge.net/projects/legacyclone/): Very early development
legion (https://github.com/mahho/legion.git): No compatible license found
Lemmix (http://www.ericenzwaan.nl/eric/lemmings/lemmix.htm, http://www.ericenzwaan.nl/eric/lemmings/LemOpenSource.zip): Custom license, requires original content that is probably not obtainable legally
@ -112,10 +113,12 @@ Militia Defense (https://love2d.org/forums/viewtopic.php?f=5&t=380): Does not ex
Mindlence RPG Game Library (https://sourceforge.net/projects/mindlence-game/): Very early development
Mining Haze (http://sourceforge.net/projects/mininghaze/): Very early development
Mining Haze (https://sourceforge.net/projects/mininghaze/): Early development
Moai (https://moaiwebsite.github.io/, https://github.com/moai/moai-dev): All rights reserved
MonoStrategy (https://monostrategy.codeplex.com/, https://codeplexarchive.blob.core.windows.net/archive/projects/monostrategy/monostrategy.zip): Early development (alpha), Not playable, requires original content, abandoned
Moopy (https://code.google.com/archive/p/moopy/, https://code.google.com/archive/p/moopy/source/default/source): Early development stage
Mugen (https://en.wikipedia.org/wiki/Mugen_(engine), https://github.com/fanyer/mugen, http://www.elecbyte.com/mugendocs/mugen.html): Freeware but not open source (https://www.reddit.com/r/mugen/comments/ernvwb/is_mugen_open_source/)
MultiGame (https://github.com/whendricso/MultiGame): Commercial
NetGore (http://www.netgore.com/, https://github.com/Spodii/netgore): No license information found.
Neverputt (): Part of Neverball or never really offered separately
New RAW (http://sourceforge.net/projects/newraw/, http://svn.code.sf.net/p/newraw/code/): Early development, requires original content, abandoned
Ninjapix (http://pyedpypers.org/pyday/?p=27): Sources lost, Homepage offline, Internet archive hasn't stored sources

View File

@ -25,7 +25,7 @@ def download_lgw_content():
# parameters
base_url = 'https://libregamewiki.org'
destination_path = os.path.join(constants.root_path, 'code', 'lgw-import')
destination_path = os.path.join(constants.root_path, 'code', '../lgw-import')
utils.recreate_directory(destination_path)
# read and process the base url (get all games and categories)
@ -64,7 +64,7 @@ def download_lgw_content():
def parse_lgw_content():
# paths
import_path = os.path.join(constants.root_path, 'code', 'lgw-import')
import_path = os.path.join(constants.root_path, 'code', '../lgw-import')
entries_file = os.path.join(import_path, '_lgw.json')
# iterate over all imported files
@ -250,7 +250,7 @@ def ignore_nonnumbers(entries, fields):
def clean_lgw_content():
# paths
import_path = os.path.join(constants.root_path, 'code', 'lgw-import')
import_path = os.path.join(constants.root_path, 'code', '../lgw-import')
entries_file = os.path.join(import_path, '_lgw.json')
cleaned_entries_file = os.path.join(import_path, '_lgw.cleaned.json')

View File

@ -88,7 +88,7 @@ if __name__ == "__main__":
maximal_newly_created_entries = 40
# paths
lgw_import_path = os.path.join(constants.root_path, 'code', 'lgw-import')
lgw_import_path = os.path.join(constants.root_path, 'code', '../lgw-import')
lgw_entries_file = os.path.join(lgw_import_path, '_lgw.cleaned.json')
# import lgw import

View File

@ -158,7 +158,7 @@ def sourceforge_import():
if __name__ == "__main__":
# collect entries
# collect_sourceforge_entries()
collect_sourceforge_entries()
# import information from sf
sourceforge_import()
# sourceforge_import()

View File

@ -201,7 +201,8 @@ general_code_dependencies_without_entry = {'OpenGL': 'https://www.opengl.org/',
'jQuery': 'https://jquery.com/',
'node.js': 'https://nodejs.org/en/',
'GNU Guile': 'https://www.gnu.org/software/guile/',
'tkinter': 'https://docs.python.org/3/library/tk.html'}
'tkinter': 'https://docs.python.org/3/library/tk.html',
'Boost': 'https://www.boost.org/'}
# build system urls
build_system_urls = {

View File

@ -124,8 +124,12 @@ def write_developers(developers):
value = dev[field]
# lists get special treatment
if isinstance(value, list):
# remove duplicates
value = list(set(value))
# sort
value.sort(key=str.casefold)
value = [x if not ',' in x else '"{}"'.format(x) for x in value] # surround those with a comma with quotation marks
# surround those with a comma with quotation marks
value = [x if not ',' in x else '"{}"'.format(x) for x in value]
value = ', '.join(value)
content += '- {}: {}\n'.format(field, value)
content += '\n'