maintenance of inspirations
This commit is contained in:
@ -1,9 +1,70 @@
|
||||
from utils import constants as c, utils, osg
|
||||
"""
|
||||
Maintenance of inspirations.md and synchronization with the inspirations in the entries.
|
||||
"""
|
||||
|
||||
from utils import constants as c, utils, osg, osg_ui
|
||||
|
||||
|
||||
def duplicate_check():
|
||||
"""
|
||||
|
||||
:param inspirations:
|
||||
:return:
|
||||
"""
|
||||
print('\nduplicate check')
|
||||
inspiration_names = [x['name'] for x in inspirations]
|
||||
for index, name in enumerate(inspiration_names):
|
||||
for other_name in inspiration_names[index+1:]:
|
||||
if osg.name_similarity(name, other_name) > similarity_threshold:
|
||||
print(' {} - {} is similar'.format(name, other_name))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
similarity_threshold = 0.8
|
||||
|
||||
# load inspirations
|
||||
inspirations = osg.read_inspirations_info()
|
||||
print('{} inspirations in the inspirations database'.format(len(inspirations)))
|
||||
osg.write_inspirations_info(inspirations) # write again just to check integrity
|
||||
|
||||
osg_ui.run_simple_button_app('Maintenance inspirations', (('Duplicate check', duplicate_check),))
|
||||
|
||||
|
||||
|
||||
# assemble info
|
||||
# entries = osg.assemble_infos()
|
||||
entries = osg.assemble_infos()
|
||||
|
||||
# assemble inspirations info from entries
|
||||
entries_inspirations = {}
|
||||
for entry in entries:
|
||||
entry_name = entry['name']
|
||||
keywords = entry['keywords']
|
||||
entry_inspirations = [x for x in keywords if x.startswith('inspired by')]
|
||||
if entry_inspirations:
|
||||
entry_inspirations = entry_inspirations[0][len('inspired by'):]
|
||||
entry_inspirations = entry_inspirations.split('+')
|
||||
entry_inspirations = [x.strip() for x in entry_inspirations]
|
||||
for entry_inspiration in entry_inspirations:
|
||||
if entry_inspiration in entries_inspirations:
|
||||
entries_inspirations[entry_inspiration].append(entry_name)
|
||||
else:
|
||||
entries_inspirations[entry_inspiration] = [ entry_name ]
|
||||
print('{} inspirations in the entries'.format(len(entries_inspirations)))
|
||||
|
||||
# first check if all inspiration in entries are also in inspirations
|
||||
inspiration_names = [x['name'] for x in inspirations]
|
||||
for inspiration, entries in entries_inspirations.items():
|
||||
if inspiration not in inspiration_names:
|
||||
print('new inspiration {} for games {}'.format(inspiration, ', '.join(entries)))
|
||||
similar_names = [x for x in inspiration_names if osg.name_similarity(inspiration, x) > 0.8]
|
||||
if similar_names:
|
||||
print(' similar names {}'.format(', '.join(similar_names)))
|
||||
|
||||
# now the other way around
|
||||
for index, name in enumerate(inspiration_names):
|
||||
if name not in entries_inspirations:
|
||||
print('potential removed inspiration {} from games {}'.format(name, inspirations[index]['inspired entries']))
|
||||
similar_names = [x for x in entries_inspirations.keys() if osg.name_similarity(name, x) > 0.8]
|
||||
if similar_names:
|
||||
print(' similar names {}'.format(', '.join(similar_names)))
|
Reference in New Issue
Block a user