Boîte Babel
py-1
dj-2
sh-3
vim-5

Ce compte est celui d'un bot appartenant à -Nmd (d · c · b).
Ce n'est pas un faux-nez, il est employé par des programmes automatiques ou semi-automatiques qui aident son propriétaire à effectuer des modifications répétitives trop longues à faire manuellement.

Cet ancien bot autorisé ne sert plus et ne fera plus de modifications ici.

Cliquez ici pour voir les contributions effectuées par le bot.
Administrateurs : si ce bot est en flagrant délit de mauvais fonctionnement voire de destruction d’articles, prière de le bloquer.
Non-administrateurs, en cas de dommages à grande échelle, déposez un message sur la page de discussion du bot, s'il ne cesse pas de fonctionner, contactez un administrateur pour le bloquer.

Fourre-savoir

[voir]

==== Tips 1 ====

Récupérer une Infobox Musique grâce à regex:

r"^(?:(?:|.|\n)*)(\{\{Infobox Musique(?:(?:|.|\n|)*)(?:(?=\{\{)(?:(?:|.|\n|)*}}))(?:(?:|.|\n|)*)}})(?:(?:|.|\n)*)$"

Via '\1' on peut récupérer le contenu de l'infobox. Grâce à un condition, les modèles à l'intérieur de l'infobox ne sont pas génant.

Requête du bot à son dresseur :

[voir]

  • Refaire les regex du fourre-savoir
  • Publier le code d'analyse d'infobox
  • Publier le code d'ajout de catégorie
  • Ajout de gadget sur la page utilisateur
  • Refonte de tout ce b*#/+%
  • Ajout dans le script d'une partie pour ajouter dans cette liste les labels à créer
  • Création d'un script de pour créer les catégories de label
  • Déplacer Catégorie:Album publié par Galaxy (musique) vers Catégorie:Album publié par Galaxy

Code modifier

shift.py (m)
ajoutBandeau.py (m)
  Vim-for-wiki (m)
  Bribes (m)
  addCatColumbiaToBeyonce.py (m)
#!/usr/bin/python
# -*- coding: utf8 -*-
##########
# 19/02/12 - Par -Nmd
# Ce module permet l'utilisation dynamique des arguments façon Bash avec la commande shift

class Argument:
	def __init__(self): 				
		self.numArgu = len(sys.argv)-1
		self.argu = [len(sys.argv)]
		self.argu[0] = sys.argv[0]
		for num in range(1, len(sys.argv)):
			self.argu.append(sys.argv[num])		

	def shift(self, val=1):
		for i in range(1, val+1):			
			if self.numArgu>=1:
				del self.argu[1]
				self.numArgu = self.numArgu-1
#!/usr/bin/python
# -*- coding: utf8 -*-
##########
# 27/02/12 - Par -Nmd
# Ce script me permet de remanier les bandeaux {{m:Catégorie XXX}}
# Pour l'instant, il les pages que je lui donne dans un générateur (ligne 78)
# Il crée ensuite pour chaque page un texte incluant tout les bandeaux donnés dans un dico (ligne 40)
# C'est assez brouillon voir incohérent pour l'instant, mais ça marche parfaitement
# Ce script n'écrit pas sur Wikipédia mais affiche le résultat de chaque page

import os, codecs
from wikipedia import *
import urllib, catlib
import pagegenerators
import re

language = "fr"
family = "wikipedia"
mynick = "-Nmdbot"
site = getSite(language,family)

### FONCTION DE DETECTION AVEC regex lié
## TYPES DE CAS
# SANS MULTI-BANDEAU
exp1 = r"^(|.|\n)*\{\{Cat.gorie.*}}"
def findSansMulti():
	print page.title() + ' : Sans multi'
	page.multi = False
	findType()
	
# AVEC BANDEAU MULTI
exp2 = r"\{\{Multi bandeau\|.*}}"
def findMulti(): 
	print page.title() + ' : Bandeau multiple'
	page.multi = True
	findType()

# AVEC PLUSIEURS BANDEAU
exp3 = r".*(\{\{Cat.gorie.*}}(\n|.)*){2,3}"
def findBandeau():
	print page.title() + ' : Plusieurs bandeaux'
	

## LISTE DES BANDEAUX VOULUS
desired = ['entreprises', 'rock', 'hip-hop', 'reggae']
# LISTE EN str POUR REGEX
tempList = u''
desiredStr = u''
for i in range(len(desired)):
	desiredStr = desiredStr + desired[i]

## TYPE(S) DE BANDEAUX PRESENTS
# FONCTION DE DETECTION DE TOUT LES BANDEAUX
def findType():
	if re.match(exp4, pagetext):
		rock()
	if re.match(exp5, pagetext):
		hiphop()
	if re.match(exp6, pagetext):
		entreprises()
	
	
# AVEC BANDEAU ROCK
exp4 = r"(\n|.)*\{\{(|.*\|)Cat.gorie rock(|\|.*)}}(\n|.)*"
def rock(): 
	print page.title() + ' : Bandeau rock'
	page.bandeau.append('rock')
	#print re.sub(r"(\{\{)(Cat.gorie.*)(}})", r"\1Mutli bandeau|\2\3", pagetext)
	
# AVEC BANDEAU HIP-HOP
exp5 = r"(\n|.)*\{\{(|.*\|)Cat.gorie hip-hop(|\|.*)}}(\n|.)*"
def hiphop(): 
	print page.title() + ' : Bandeau hip-hop'
	page.bandeau.append('hip-hop')

# AVEC BANDEAU ENTRPRISES
exp6 = r"(\n|.)*\{\{(|.*\|)Cat.gorie entreprises(|\|.*)}}(\n|.)*"
def entreprises(): 
	print page.title() + ' : Bandeau entreprises'
	page.bandeau.append('entreprises')

### ACTIONS
gen = pagegenerators.PrefixingPageGenerator(u'-Nmdbot/Bac à sable/Page', 2)

for page in gen:
	pagetext = page.get()
	page.bandeau = []
	
	if re.match(exp1, pagetext):
		findSansMulti()
	if re.match(exp2, pagetext):
		findMulti()
	if re.search(exp3, pagetext):
		findBandeau()
	
	if page.multi==False:
		if len(page.bandeau)==1:
			print u'Un seul bandeau trouvé'
			print 'ChgMlti :'+re.sub(r"(\{\{)(Cat.gorie.*)(}})", r"\1Multi bandeau|\2\3", pagetext)
			newtext = re.sub(r"(\{\{)(Cat.gorie.*)(}})", r"\1Multi bandeau|\2\3", pagetext)
			while len(page.bandeau)!=len(desired):
				for i in desired:
					if page.bandeau[0]!=i:
						newtext = re.sub(r"^((?:|.|\n)*\{\{Multi bandeau)(\|Cat.gorie .*){1,}(}}(?:|.|\n)*)$", r"\1\2"+u'|Catégorie '+ i +r"\3", newtext)
						print newtext
						page.bandeau.append(i)

		else:
			newtext = re.sub(r"(\{\{)(Cat.gorie.*)(}})", r"", pagetext)
			newtext = re.sub(r"^((:?|.|\n)*)$", r"{{Multi bandeau}}\n\1", newtext)
			for i in page.bandeau:
				tempList = tempList + i
				for j in desired:
						if (re.match(i, desiredStr) is None) and (re.match(i, tempList)):
							newtext = re.sub(r"^(\{\{Multi bandeau)((?:|.|\n)*)", r"\1"+u'|Catégorie '+ j +r"\2", newtext)

					#newtext = re.sub(r"^((?:|.|\n)*\{\{Multi bandeau)(\|Cat.gorie .*){0,}(}}(?:|.|\n)*)$", r"\1\2"+u'|Catégorie '+ j +r"\3", newtext)
					#print newtext
			print newtext
		pause = raw_input()
	else:
		for i in page.bandeau:
			if (re.match(i, desiredStr) is None) and (re.match(i, tempList)):
				newtext = re.sub(r"^(\{\{Multi bandeau(?:\|Cat.gorie .*){0,})(}}(?:|.|\n)*)", r"\1"+u'|Catégorie '+ i +r"\2", pagetext)
				tempList = tempList + i
		print newtext
		pause = raw_input()
#!/usr/bin/python
# -*- coding: utf8 -*-
##########
# 03/03/12 - Par -Nmd

import wikipedia
import re, codecs
import sys, os

language = "fr"
family = "wikipedia"
mynick = "-Nmdbot"
site = wikipedia.getSite(language,family)

pagename = unicode( sys.argv[1], "utf-8")
page = wikipedia.Page(site, pagename)

tmpPage = codecs.open( "/tmp/tmpPage", "w", "utf-8" )
try:
	tmpPage.write(page.get())
except wikipedia.exceptions.NoPage:
	pass

tmpPage.close()

os.system("vim /tmp/tmpPage")

tmpPage = codecs.open( "/tmp/tmpPage", "r", "utf-8" )

if len(sys.argv) >= 3:
	if sys.argv[2] == '-p':
		wikipedia.Page(site, u'Utilisateur:-Nmdbot/Bac à sable/Prévisualisation').put(tmpPage.read())
		print "Prévisualisation dans \'Utilisateur:-Nmdbot/Bac à sable/Prévisualisation\'"

reponse = raw_input("Etes-vous sûr de vouloir publier ? [O/n] : ")

if re.match(r"^[Nn]", reponse) is None:
	tmpPage = codecs.open( "/tmp/tmpPage", "r", "utf-8" )
	page.put(tmpPage.read())
else : print "Annulé"

tmpPage.close()
#!/usr/bin/python
# -*- coding: utf8 -*-
##########
# 24/02/12 - Par -Nmd

import os, codecs
from wikipedia import *
import urllib, catlib
import pagegenerators

language = "fr"
family = "wikipedia"
mynick = "-Nmdbot"
site = getSite(language,family)

for i in range(4,6):
        wikipedia.Page(site, u'Utilisateur:-Nmdbot/Bac à sable/Page'+str(i)).put(u'{{Multi-bandeau|Catégorie rock|Catégorie hip-hop}}', u'Test de -Nmdbot')
#!/usr/bin/python
# -*- coding: utf8 -*-
##########
# 08/03/12 - Par -Nmd

import codecs, re
import wikipedia, category, pagegenerators, catlib
import os, sys

language = "fr"
family = "wikipedia"
mynick = "-Nmdbot"
site = wikipedia.getSite(language,family)

cat = catlib.Category(site, u'Catégorie:Album de Beyoncé Knowles')
pageList = cat.articlesList(False)
for page in pageList:
	if re.match(r"(|.|\n)*\[\[Cat.gorie:Album publi. par Columbia Records]]", page.get() ) is None:
		newtext = re.sub(r"((?:|.|\n)*)(\[\[Cat.gorie:Album de Beyonc. Knowles]])((?:|.|\n)*)", r"\1\2" + u"\n[[Catégorie:Album publié par Columbia Records]]" + r"\3", page.get() )

		tmpPage = codecs.open( "/tmp/tmpPage", "w", "utf-8" )
		tmpPage.write(newtext)
		tmpPage.close()
		os.system("grep -e '\[\[Cat' /tmp/tmpPage")

		reponse = raw_input("Etes-vous sûr de vouloir publier ? [O/n] : ")
 
		if re.match(r"^[Nn]", reponse) is None:
			page.put(newtext, u"+Catégorie")
		else : print "Annulé"

Bac à sable modifier