Un article de Wikipédia, l'encyclopédie libre.
But de cette page ? Recenser les solutions mises en oeuvres par mon choubidou DumZiBoT (d · c · b) pour répondre aux requêtes Bot, pour que je puisse les reprendre facilement, mais pas seulement. A terme cela pourrait bien servir d'exemples pour servir de support à d'autres que moë, ou de FAR... (Frequently Asked Requests)
Remplacer toutes les catégories présentes dans film américain par genre par les catégories Film américain puis Film du genre concerné. Par exemple, remplacer Film d'horreur américain par Film américain + Film d'horreur.
De plus, si le bot pouvait respecter l'ordre suivant, ça ne serait pas plus mal :
- Film américain
- Film sorti en XXXX (année)
- Film de tel ou tel genre
- Réfléchir à toutes les dispositions possibles, et tenter de trouver un regex pour chacune
Problèmes rencontrés :
- Longueur des regex en sortie : imbuvable
- Il y avait toujours une disposition farfelue auquelle je n'avais pas pensé
Code correspondant
(contient un certain nombre de fautes/maladresses) |
'Films': {
'regex': True,
'msg': { 'fr':u'Robot:Conversion cat "Film de tel genre américain" En cats "Film américain" + "Film de tel genre"',},
'replacements': [
#Trucs;sorti en;Trucs;genre;Trucs
(u'(?P<catsAvantAnnee>(?:\[\[[Cc]atégorie:.*\]\]\s*)*)
(?P<annee>\[\[[Cc]atégorie:[Ff]ilm sorti en \d{4,4}.*\]\]\s*)
(?P<catsApresAnnee>(?:\[\[[Cc]atégorie:.*\]\]\s*)*)
(?P<type>\[\[[Cc]atégorie:(?![Ff]ilm)|[Ff]ilm .+)) américain(?P<titre>\|.*)?\]\]\s*
(?P<catsFin>(?:\[\[[Cc]atégorie:.*\]\]\s*)*)',
u'[[Catégorie:Film américain\g<titre>]]\r\n\g<annee>\g<type>\g<titre>]]\r\n\g<catsAvantAnnee>\g<catsApresAnnee>\g<catsFin>'),
#Trucs;genre;Trucs;sorti en;Trucs
(u'(?P<catsdeb>(?:\[\[[Cc]atégorie:.*\]\]\s*)*)
(?P<type>\[\[[cC]atégorie:((?![Ff]ilm)|[Ff]ilm .+)) américain(?P<titre>\|.*)?\]\]\s*
(?P<catsAvantAnnee>(?:\[\[[Cc]atégorie:.*\]\]\s*)*)
(?P<annee>\[\[[Cc]atégorie:[Ff]ilm sorti en \d{4,4}.*\]\]\s*)
(?P<catsApresAnnee>(?:\[\[[Cc]atégorie:.*\]\]\s*)*)',
u'[[Catégorie:Film américain\g<titre>]]\r\n\g<annee>\g<type>\g<titre>]]\r\n\g<catsdeb>\g<catsAvantAnnee>\g<catsApresAnnee>'),
#Trucs;genre:Trucs (pas de cat "sorti en")
(u'(?P<CatsAvant>(?:\[\[[Cc]atégorie:.*\]\]\s*)*)
(?P<type>\[\[[cC]atégorie:((?![Ff]ilm)|[Ff]ilm .+)) américain(?P<titre>\|.*)?\]\]\s*
(?P<CatsApres>(?:\[\[[Cc]atégorie:.*\]\]\s*)*)',
u'[[Catégorie:Film américain\g<titre>]]\r\n\g<type>\g<titre>]]\r\n\g<CatsAvant>\g<CatsApres>'),
]
},
|
[modifier] Seconde solution
- Plutôt que de décomposer les cas et pour chaque cas de tout faire en même temps, essai en décomposant selon les actions à faire et non plus selon les dispositions existantes
Code utilisé |
'Films': {
# IMPORTANT : activer -nocase (ou remplaçer partout ici C → [Cc] et f →[Ff] )
'regex': True,
'exceptions': [u'\[\[[Cc]atégorie:[Ff]ilm américain(\|.*|)\]\]'],
'msg': { 'fr':u'Robot:Conversion cat "Film de tel genre américain" → "Film américain" + "Film de tel genre"',},
'replacements': [
(u'[ ]*(\[\[Catégorie:)', u'\\1'),
(u'(\[\[Catégorie:.*\]\])(\[\[Catégorie:.*\]\])', u'\\1\r\n\\2'),
#Au cas où il y aurait quelques sauts de lignes en trop
(u'(?P<CatsAvant>\[\[Catégorie:.*\]\]\r\n)(\r\n)+(?P<CatsApres>\[\[Catégorie:.*\]\])',
u'\g<CatsAvant>\g<CatsApres>'),
#Mise en tête des catégories "Film US" + "genre"
(u'(?P<CatsAvant>(\[\[Catégorie:.*\]\]\r\n)*)(?P<type>\[\[Catégorie:.*) américain(e|) *(?P<titre>(\|.*|))\]\](\r\n| )*(?P<CatsApres>(\[\[Catégorie:.*\]\]\r\n)*)',
u'[[Catégorie:Film américain\g<titre>]]\r\n\g<type>\g<titre>]]\r\n\g<CatsAvant>\g<CatsApres>'),
#Récupération de la catégorie "Film sorti en xxxx" et déplacement entre "Film US" et "genre"
(u'(?P<US>\[\[Catégorie:Film américain[^\]]*\]\])(?P<genre>\r\n\[\[Catégorie:.*\]\])(?P<CatsAvant>(\r\n\[\[Catégorie:.*)*)(?P<annee>\r\n\[\[Catégorie:Film sorti en \d{4,4}.*\]\])(?P<CatsApres>(\r\n\[\[Catégorie:[^\]]*\]\])*)',
u'\g<US>\g<annee>\g<genre>\g<CatsAvant>\g<CatsApres>'),
]
},
|
python replace.py -namespace:0 -nocase -fix:Films -cat:"Western américain" |
[modifier] Ménage des catégories
Code utilisé |
'double': {
'regex': True,
'msg': {'fr':u'Robot:Suppression des catégories en double - Espaces manquants/en trop',},
'replacements': [
(u'(?P<cat>\[\[Catégorie:.*\]\])(?P<i>(.|\n)*)(?P=cat)', u'\g<cat>\g<i>'),
#Au cas où il y aurait quelques sauts de lignes en trop
(u'(?P<CatsAvant>\[\[Catégorie:.*\]\]\r\n)(\r\n)+(?P<CatsApres>\[\[Catégorie:.*\]\])',
u'\g<CatsAvant>\g<CatsApres>'),
(u'(?P<cat>\[\[Catégorie:.*\]\])(?P<inter>\[\[(?!Catégorie).*:)', u'\g<cat>\r\n\g<inter>'),
],
},
|