summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar klea2026-03-13 23:18:11 +0000
committerGravatar klea2026-03-13 23:18:11 +0000
commitcd1c3815d6a84a3142f1b4363d412031e9bcee11 (patch)
tree6b469bee666e5cc202a420f8e64f1047766b8c34
parentflake.lock: Update (diff)
signature
wikibot(currentwarriorproject): Update to support multiple projects
-rw-r--r--wikibot/currentwarriorproject.py42
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)