Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- # -*- coding: utf-8 -*-
- # Wikipedia:Bots/Requests_for_approval/Mobius_Bot_3
- # Fixing reflist errors
- import wikipedia
- import re
- import pagegenerators
- import catlib
- from optparse import OptionParser
- parser = OptionParser()
- parser.add_option("-d", action="store_true", dest="debugmode", default = False)
- parser.add_option("-s", dest="singlepage", default = "")
- parser.add_option("-p", dest="fromlinks", default = "")
- parser.add_option("-c", action="store_true", dest="fromcat", default = False)
- parser.add_option("-t", dest="fromtemplate", default = "")
- (options, args) = parser.parse_args()
- site = wikipedia.getSite()
- starsList = [
- u'bueno',
- u'cyswllt[ _]erthygl[ _]ddethol', u'dolen[ _]ed',
- u'destacado', u'destaca[tu]',
- u'enllaç[ _]ad',
- u'enllaz[ _]ad',
- u'leam[ _]vdc',
- u'legătură[ _]a[bcf]',
- u'liamm[ _]pub',
- u'lien[ _]adq',
- u'lien[ _]ba',
- u'liên[ _]kết[ _]bài[ _]chất[ _]lượng[ _]tốt',
- u'liên[ _]kết[ _]chọn[ _]lọc',
- u'ligam[ _]adq',
- u'ligoelstara',
- u'ligoleginda',
- u'link[ _][afgu]a', u'link[ _]adq', u'link[ _]f[lm]', u'link[ _]km',
- u'link[ _]sm', u'linkfa',
- u'na[ _]lotura',
- u'nasc[ _]ar',
- u'tengill[ _][úg]g',
- u'ua',
- u'yüm yg',
- u'רא',
- u'وصلة مقالة جيدة',
- u'وصلة مقالة مختارة',
- ]
- def main():
- Rparam = re.compile(ur'\|Gemeindeschlüssel[\s]*=([\s]*[0-9]+[\s]*)+\|', re.I)
- Rreflist = re.compile(ur'(\{\{reflist[|}]|<references\/>)', re.I)
- Rrefcomment = re.compile(ur'<!--(.*?)<ref[^>]*>.+?</ref>', re.I)
- Rrefs = re.compile(ur'<ref[^>]*>.+?</ref>', re.I)
- if options.debugmode:
- wikipedia.output('\03{purple}Debug mode activated: no changes will be made\03{default}')
- for page in generator():
- if ((not page.isRedirectPage()) and not Rreflist.search(page.get()) and (Rrefs.search(page.get()) or Rparam.search(page.get())) and (len(re.findall(ur'<!--(.*?)<ref>.+?</ref>', page.get())) != len(re.findall('<ref>.+?</ref>', page.get())) or len(re.findall(ur'<!--(.*?)<ref>.+?</ref>', page.get())) == 0)):
- newtext = page.get()
- categoriesInside = wikipedia.getCategoryLinks(newtext, site)
- newtext = wikipedia.removeCategoryLinks(newtext, site)
- interwikiInside = wikipedia.getLanguageLinks(newtext, site)
- newtext = wikipedia.removeLanguageLinks(newtext, site)
- if (site.language()==u'nn'):
- newtext = newtext.replace(nn_iw_msg, '')
- newtext += u"\n%s" % '\n==References==\n{{reflist}}'
- newtext = wikipedia.replaceCategoryLinks(newtext, categoriesInside, site, True)
- if (site.language()==u'nn'):
- newtext = newtext + u'\n' + nn_iw_msg
- allstars = []
- starstext = wikipedia.removeDisabledParts(page.get())
- for star in starsList:
- regex = re.compile('(\{\{(?:template:|)%s\|.*?\}\}[\s]*)' % star,
- re.I)
- found = regex.findall(starstext)
- if found != []:
- newtext = regex.sub('', newtext)
- allstars += found
- if allstars != []:
- newtext = newtext.strip()+'\r\n\r\n'
- allstars.sort()
- for element in allstars:
- newtext += '%s\r\n' % element.strip()
- newtext = wikipedia.replaceLanguageLinks(newtext, interwikiInside, site)
- while (re.search(ur'({{[^}]*}})[\s]*(==References==\n\{\{reflist\}\})', newtext) and not re.search(ur'(\][ ]*|[*:]+[ ]*)({{[^}]*}})[\s]*(==References==\n\{\{reflist\}\})', newtext)):
- newtext = re.sub(ur'({{[^}]*}})[\s]*(==References==\n\{\{reflist\}\})',ur'\2\n\1', newtext)
- if not options.debugmode:
- page.put(newtext, 'Bot: Adding {{reflist}}, article has references but no corresponding display tag/template')
- else:
- wikipedia.output('\03{lightgreen}' + page.title() + '\03{default} \n')
- wikipedia.showDiff(page.get(), newtext)
- else:
- wikipedia.output('\03{lightblue}' + page.title() + ': Page already has reflist, or has no references\03{default}')
- def generator():
- if options.singlepage: return [wikipedia.Page(site, options.singlepage),]
- elif options.fromlinks: return pagegenerators.LinkedPageGenerator(wikipedia.Page(site, options.fromlinks))
- elif options.fromcat: return pagegenerators.CategorizedPageGenerator(catlib.Category(site, 'Category:Pages_with_missing_references_list'))
- elif options.fromtemplate: return wikipedia.Page(site, options.fromtemplate).getReferences(True, True, True)
- if __name__ == '__main__':
- try:
- main()
- finally:
- wikipedia.stopme()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement