-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathExpeditionSummaries.py
89 lines (77 loc) · 3.37 KB
/
ExpeditionSummaries.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import pywikibot
from pywikibot import Category
import re, Expedition
import datetime
from UserListGenerator import *
class ExpeditionSummaries:
'''
This contains all important information about a given expedition
'''
def __init__(self, site, date, db):
self.site = site
self.date = date
self.pageList = self._getAllCategoryPages()
self.expedList = []
self._putExpeditionSummaries(db)
def _putExpeditionSummaries(self, db):
allSummaries = []
for page in self.pageList:
if(re.match("\d{4}-\d{2}-\d{2} ([-0-9]{1,4} [-0-9]{1,4}|global)$", page.title())):
pywikibot.output("Parsing page " + str(self.pageList.index(page)) + " of " + str(len(self.pageList)) + " : " + page.title())
exped = Expedition.Expedition(page.site, page.title(), db)
self.expedList.append(exped)
# pywikibot.output(str(exped.subFormat()))
allSummaries.append(exped.getExpeditionSummary())
page = pywikibot.Page(self.site, "Template:Expedition_summaries/" + self.date)
self._pageWrite(page, u'<noinclude>This page is automatically generated. Any edits to this page will be overwritten by a bot.\n{| style="width: 100%; border: 1px solid grey; border-collapse:collapse;" cellpadding="5" cellspacing="0" border="1"</noinclude>\n|-\n|' + "\n|-\n|".join(allSummaries) + '\n<noinclude>\n|-\n|}\n</noinclude>')
# if(datetime.date.today().isoformat() <= self.date):
self._datePageWrite()
def _pageWrite(self, page, text):
if(self._checkBanana() == 0):
# pywikibot.output("Would put page with " + text)
try:
old_text = page.get()
except:
page.put(text, u"Ook.")
else:
if (text == old_text):
pywikibot.output("Page " + page.title() + " has not changed, skipping")
else:
page.put(text, u"Ook.")
def _datePageWrite(self):
pageText = u"<noinclude>{{date navigation}}</noinclude>\n"
pageText += u"{{auto coordinates|" + self.date + "}}\n"
pageText += u"{{auto gallery2|" + self.date + "}}\n"
pageText += u"<noinclude>{{expedition summaries|" + self.date + "}}</noinclude>\n"
page = pywikibot.Page(self.site, self.date)
if(not page.exists()):
page = pywikibot.Page(self.site, self.date)
self._pageWrite(page, pageText)
def _checkBanana(self):
checkPage = pywikibot.Page(self.site, "User:AperfectBot")
checkText = checkPage.get(True)
checkRegex = getSectionRegex(checkText, "distraction banana", False).strip()
if(len(checkRegex) == 0):
return 0
else:
return 1
def getSubFormats(self, format = None, user = None, oldText = None, grat = None):
formats = {}
if (oldText == None):
oldText = {}
for exped in self.expedList:
resultText = None
if exped.getPagename() in oldText:
resultText = exped.subFormat(format, user, oldText[exped.getPagename()], grat = grat)
else:
resultText = exped.subFormat(format, user, grat = grat)
if (resultText != None):
formats[exped.getPagename()] = resultText
return formats
def _getAllCategoryPages(self):
page = pywikibot.Page(self.site, "Category:Meetup on " + self.date)
pageText = u"[[Category:Meetup in " + re.sub("-\d{2}$","",self.date) + u"]]"
self._pageWrite(page, pageText)
cat = Category(self.site, "Meetup on " + self.date)
articleList = list(cat.articles())
return articleList