diff options
| author | 2026-03-13 23:18:11 +0000 | |
|---|---|---|
| committer | 2026-03-13 23:18:11 +0000 | |
| commit | cd1c3815d6a84a3142f1b4363d412031e9bcee11 (patch) | |
| tree | 6b469bee666e5cc202a420f8e64f1047766b8c34 | |
| parent | flake.lock: Update (diff) | |
| signature | ||
wikibot(currentwarriorproject): Update to support multiple projects
| -rw-r--r-- | wikibot/currentwarriorproject.py | 42 |
1 files changed, 30 insertions, 12 deletions
diff --git a/wikibot/currentwarriorproject.py b/wikibot/currentwarriorproject.py index 816e2be..42dfe8e 100644 --- a/wikibot/currentwarriorproject.py +++ b/wikibot/currentwarriorproject.py @@ -1,30 +1,48 @@ import pywikibot import requests +warriorProjects = requests.get('https://warriorhq.archiveteam.org/projects.json').json() + # Retrieve current project -def get_current_default_project(): - response = requests.get('https://warriorhq.archiveteam.org/projects.json') - projects = response.json() - defaultName = projects['auto_project'] - for p in projects['projects']: - if p['name'] == defaultName: +def get_project(projectName): + for p in warriorProjects['projects']: + if p['name'] == projectName: return p return None -def default_project_to_wiki_text(project): - return '{{CurrentWarrior|' + project['name'] + '|' + project['title'] + '}}' +def projectToWikitext(project, weight=None): + if weight is not None: + weightSection = '|%s' % (weight) + else: + weightSection = '' + + return '{{CurrentWarrior|' + project['name'] + '|' + project['title'] + weightSection + '}}' # Update the wiki page if necessary def maybe_edit_wiki(pageText, reason="Obtained data from WarriorHQ file"): site = pywikibot.Site('en', 'ArchiveTeam') - page = pywikibot.Page(site, 'Main_Page/Current_Warrior_Project') + page = pywikibot.Page(site, 'User:KleaBot/Testing/Main_Page/Current_Warrior_Project') if page.text != pageText: site.login() # Only log in when necessary page.text = pageText page.save(reason) -defaultProject = get_current_default_project() -defaultProjectAsWikiText = default_project_to_wiki_text(defaultProject) +defaultProjects = [] +defaultProject = [{'project': get_project(warriorProjects['auto_project']), 'weight': None}] + +for autoProject in warriorProjects['auto_projects_config']: + defaultProjects += [{'project': get_project(autoProject['project']), 'weight': autoProject['weight']}] + +defaultProjectsWikitext = "\n".join([projectToWikitext(entry['project'], entry['weight']) for entry in defaultProjects+defaultProject]) + +wikiUpdateMessage = 'Default projects are now ' + ', '.join([ + '%(name)s "%(desc)s"%(weight)s' % { + 'name': entry['project']['name'], + 'desc': entry['project']['description'], + 'weight': ' (weight %s)' % entry['weight'] if entry['weight'] is not None else '' + } + for entry in defaultProjects +]) -maybe_edit_wiki(defaultProjectAsWikiText, reason=f"Default project is now {defaultProject['name']} \"{defaultProject['description']}\" (fetched from WarriorHQ json)") +maybe_edit_wiki(defaultProjectsWikitext, reason=wikiUpdateMessage) |
