jenkins-bot has submitted this change and it was merged.
Change subject: [PEP8] pep8 changes ......................................................................
[PEP8] pep8 changes
Change-Id: Id945b1167d8b9a1f0c76a8cfb3e359d23d8af44b --- M botlist.py 1 file changed, 79 insertions(+), 66 deletions(-)
Approvals: Xqt: Looks good to me, approved jenkins-bot: Verified
diff --git a/botlist.py b/botlist.py index a712526..c49b394 100644 --- a/botlist.py +++ b/botlist.py @@ -9,16 +9,18 @@
# (C) Daniel Herding, 2005 # (C) Dr. Trigon, 2009-2010 -# (C) Pywikipedia bot team, 2010-2012 +# (C) Pywikipedia bot team, 2010-2013 # # DrTrigonBot: http://de.wikipedia.org/wiki/Benutzer:DrTrigonBot # # Distributed under the terms of the MIT license. # -__version__='$Id$' +__version__ = '$Id$' #
-import re, sys, pickle +import re +import sys +import pickle import os.path import time import urllib @@ -26,21 +28,23 @@
cache = {}
-def get(site = None): + +def get(site=None): if site is None: site = pywikibot.getSite() if site in cache: # Use cached copy if it exists. botlist = cache[site] else: - fn = pywikibot.config.datafilepath('botlists', - 'botlist-%s-%s.dat' % (site.family.name, site.lang)) + fn = pywikibot.config.datafilepath('botlists', 'botlist-%s-%s.dat' + % (site.family.name, site.lang)) try: # find out how old our saved dump is (in seconds) file_age = time.time() - os.path.getmtime(fn) # if it's older than 1 day, reload it if file_age > 1 * 24 * 60 * 60: - pywikibot.output(u'Copy of bot user list is one day old, reloading') + pywikibot.output( + u'Copy of bot user list is one day old, reloading') refresh(site) except OSError: # no saved botlist exists yet, retrieve one @@ -52,9 +56,11 @@ cache[site] = botlist return botlist
+ def isBot(user, site=None): botlist = get(site) return user in botlist +
def refresh(site, sysop=False, witheditsonly=True): #if not site.has_api() or site.versionnumber() < 10: @@ -89,7 +95,7 @@ pywikibot.output(u'Retrieving global bot user list for %s.' % repr(site)) m1 = True offset = '' - if site.live_version()[1] >= 18: + if site.live_version()[1] >= 18: PATTERN = u'<li><a.*?>(.*?)</.*?> *((.*?),\s(.*?))(?:.*?)</li>' elif site.live_version()[1] == 17: PATTERN = u'<li>(.*?) *((.*?),\s(.*?))(?:.*?)</li>' @@ -97,17 +103,18 @@ PATTERN = u'<li>(.*?) *((.*?),\s(.*?))</li>' while m1: pywikibot.get_throttle() - text = site.getUrl(site.globalusers_address(offset=urllib.quote(offset), group='Global_bot')) + text = site.getUrl(site.globalusers_address(offset=urllib.quote(offset), + group='Global_bot'))
m1 = re.findall(u'<li>.*?</li>', text) for item in m1: m2 = re.search(PATTERN, item) (bot, flag_local, flag_global) = m2.groups() - flag_local = (flag_local[:2] == u'<a') - flag_global = True # since group='Global_bot' + flag_local = (flag_local[:2] == u'<a') + flag_global = True # since group='Global_bot'
if bot not in botlist: - botlist.append( bot ) + botlist.append(bot)
#print len(botlist) offset = bot.encode(site.encoding()) @@ -116,63 +123,69 @@ # The file is stored in the botlists subdir. Create if necessary. if sysop: f = open(pywikibot.config.datafilepath('botlists', - 'botlist-%s-%s-sysop.dat' % (site.family.name, site.lang)), 'w') + 'botlist-%s-%s-sysop.dat' + % (site.family.name, site.lang)), + 'w') else: f = open(pywikibot.config.datafilepath('botlists', - 'botlist-%s-%s.dat' % (site.family.name, site.lang)), 'w') + 'botlist-%s-%s.dat' + % (site.family.name, site.lang)), + 'w') pickle.dump(botlist, f) f.close()
-#def refresh_all(new = False, sysop=False): -# if new: -# import config -# pywikibot.output('Downloading All bot user lists for your accounts in user-config.py'); -# for family in config.usernames: -# for lang in config.usernames[ family ]: -# refresh(pywikibot.getSite( code = lang, fam = family ), sysop=sysop ) -# for family in config.sysopnames: -# for lang in config.sysopnames[ family ]: -# refresh(pywikibot.getSite( code = lang, fam = family ), sysop=sysop ) -# -# else: -# import dircache, time -# filenames = dircache.listdir(pywikibot.config.datafilepath('botlists')) -# botlist_filenameR = re.compile('botlist-([a-z-:]+).dat') -# for filename in filenames: -# match = botlist_filenameR.match(filename) -# if match: -# arr = match.group(1).split('-') -# family = arr[0] -# lang = '-'.join(arr[1:]) -# refresh(pywikibot.getSite(code = lang, fam = family)) -# -#def main(): -# all = False -# new = False -# sysop = False -# for arg in pywikibot.handleArgs(): -# if arg == '-all' or arg == '-update': -# all = True -# elif arg == '-new': -# new = True -# elif arg == '-sysop': -# sysop = True -# if all: -# refresh_all(sysop=sysop) -# elif new: -# refresh_all(new, sysop=sysop) -# else: -# refresh(pywikibot.getSite(), sysop=sysop) -# -# botlist = get(pywikibot.getSite()) -# pywikibot.output(u'%i pages in the bot user list.' % len(botlist)) -# for pageName in botlist: -# pywikibot.output( pageName, toStdout = True ) -# -#if __name__ == "__main__": -# try: -# main() -# finally: -# pywikibot.stopme()
- +##def refresh_all(new=False, sysop=False): +## if new: +## import config +## pywikibot.output('Downloading All bot user lists for your accounts ' +## 'in user-config.py') +## for family in config.usernames: +## for lang in config.usernames[family]: +## refresh(pywikibot.getSite(code=lang, fam=family), sysop=sysop) +## for family in config.sysopnames: +## for lang in config.sysopnames[family]: +## refresh(pywikibot.getSite(code=lang, fam=family), sysop=sysop) +## +## else: +## import dircache +## import time +## filenames = dircache.listdir(pywikibot.config.datafilepath('botlists')) +## botlist_filenameR = re.compile('botlist-([a-z-:]+).dat') +## for filename in filenames: +## match = botlist_filenameR.match(filename) +## if match: +## arr = match.group(1).split('-') +## family = arr[0] +## lang = '-'.join(arr[1:]) +## refresh(pywikibot.getSite(code=lang, fam=family)) +## +## +##def main(): +## all = False +## new = False +## sysop = False +## for arg in pywikibot.handleArgs(): +## if arg == '-all' or arg == '-update': +## all = True +## elif arg == '-new': +## new = True +## elif arg == '-sysop': +## sysop = True +## if all: +## refresh_all(sysop=sysop) +## elif new: +## refresh_all(new, sysop=sysop) +## else: +## refresh(pywikibot.getSite(), sysop=sysop) +## +## botlist = get(pywikibot.getSite()) +## pywikibot.output(u'%i pages in the bot user list.' % len(botlist)) +## for pageName in botlist: +## pywikibot.output(pageName, toStdout=True) +## +##if __name__ == "__main__": +## try: +## main() +## finally: +## pywikibot.stopme()
pywikibot-commits@lists.wikimedia.org