def supprimer(self, page): """ Supprime la page et nettoie les pages liées """ t = page.title().encode('ascii', 'ignore') titres = [ t ] titres.append(t.replace('Discussion:', 'Discuter:')) for b in page.backlinks(filterRedirects=True): # On trouve les différents noms de la page t = b.title().encode('ascii', 'ignore') titres.append(t) titres.append(t.replace('Discussion:', 'Discuter:')) # PdDis disc = pywikibot.Page(self.site, page.title().replace('/Traduction', '')) if disc.exists(): # Nettoyage de PdDis self.suppr_mod(disc, titres) for b in page.embeddedin(): # nettoyage des inclusions self.suppr_mod(b, titres) for b in page.backlinks(followRedirects=True): # Nettoyage des redirections if b.isRedirectPage(): BeBot.delete(b, self.resume+" : Redirection d'une traduction abandonnée", debug=self.debug) self.stats['suppr'] += 1 #taille = BeBot.taille_page(page, 1) # < 2800 #taille = 7777 taille = 0 m = self.re_discus.search(page.text) if m: taille = len(m.group(1)) if taille < 260: BeBot.delete(page, self.resume+' : Traduction abandonnée', debug=self.debug) self.stats['suppr'] += 1 else: pywikibot.output("><> Discussion détectée sur : http://fr.wikipedia.org/wiki/%s -- taille:%d" % (page.title(), taille)) self.gros_suivi.append(page.title())
#!/usr/bin/python # -*- coding: utf-8 -*- import re, sys import BeBot import pywikibot """ Supprime un modèle et ses appels d'inclusion """ site = pywikibot.getSite() nom = u"Demande de traduction" # renom = re.compile('{{'+nom+'}}', re.IGNORECASE|re.MULTILINE) renom = re.compile("{{" + nom + "\|?[^}/]*?}}", re.IGNORECASE | re.MULTILINE) modele = pywikibot.Page(site, u"Modèle:" + nom) if not modele.exists(): pywikibot.error(u"Le modèle {nom} n'existe pas".format(nom=nom)) sys.exit(2) debug = True # Retrait des transclusions for b in modele.getReferences(follow_redirects=False, onlyTemplateInclusion=True, content=True, total=9): a = renom.sub(r"", b.text) BeBot.diff(b.text, a) b.text = a BeBot.save(b, commentaire=u'Retrait du modèle "{nom}"'.format(nom=nom), debug=debug) BeBot.delete(modele, u'Retrait du modèle "{nom}"'.format(nom=nom), debug=debug)
def suppr_cat(cat): for b in cat.subcategories(): suppr_cat(b) BeBot.delete(cat, comment.format(nom=cat.title()), debug=debug)
site = pywikibot.getSite() nom = "Utilisateur Traduction" renom = re.compile("{{" + nom + "}}", re.IGNORECASE) nom2 = "Traduction" # renom2 = re.compile(u'(\{\{Bo(î|i)te\s*(utilisateur|babel)[^\}]*?)\|\s*'+nom2+u'(\s*|/\w{2})([^\}]*\}\})', re.IGNORECASE|re.UNICODE|re.MULTILINE) renom2 = re.compile( u"(\{\{Bo(î|i)te\s*(utilisateur|babel)[^\}]*?)\|\s*" + nom2 + u"\s*([^\}/]?[^\}]*?\}\})", re.IGNORECASE | re.UNICODE | re.MULTILINE, ) modele = pywikibot.Page(site, u"Modèle:" + nom) if not modele.exists(): pywikibot.error(u"La BU {nom} n'existe pas".format(nom=nom)) sys.exit(2) # Retrait des transclusions for b in modele.getReferences(follow_redirects=False, onlyTemplateInclusion=True, content=True): # remp = r'' remp = r"{{Utilisateur Projet/Traduction}}" a = renom.sub(remp, b.text) a = renom2.sub(r"\1|Projet/Traduction\4", a) b.text = a BeBot.save( b, commentaire=u'Retrait du modèle "{nom}" suite à la restructuration du [[Projet:Traduction]]'.format(nom=nom), debug=False, ) BeBot.delete( modele, u'Retrait du modèle "{nom}" suite à la restructuration du [[Projet:Traduction]]'.format(nom=nom), debug=True )
#!/usr/bin/python # -*- coding: utf-8 -*- import BeBot import pywikibot """ Supprime les sous-pages d'une page """ prefix="Traduction/*/Projet" espace = 102 # Projet #espace = 10 # Modèle site = pywikibot.getSite() ppg = site.allpages(prefix=prefix, namespace=espace, content=False) for p in ppg: BeBot.delete(p, u'Restructuration du [[Projet:Traduction]]', debug=False)