« Utilisateur:Arbinger bot/code.py » : différence entre les versions
Apparence
Contenu supprimé Contenu ajouté
Aucun résumé des modifications |
proposition de modif |
||
Ligne 104 : | Ligne 104 : | ||
#print(categ.articles(recurse=1, namespaces=0)) |
#print(categ.articles(recurse=1, namespaces=0)) |
||
for article in categ.articles(recurse=1, namespaces=0): |
for article in categ.articles(recurse=1, namespaces=0): |
||
ancien_texte = str(article.text) |
|||
nouveau_texte = modifier_title(title, ligne) |
|||
if ancien_texte != nouveau_texte: |
|||
print(article.title()) |
|||
pywikibot.showDiff(ancien_texte, nouveau_texte) |
|||
[('yes', 'y'), ('No', 'n')], |
choice = pywikibot.input_choice( 'Do you want to accept these changes?', [('yes', 'y'), ('No', 'n')], default='N') |
||
if choice == 'y': |
|||
print('Envoi de la modif de {}...'.format(article.title())) |
|||
article.put( |
article.put(nouveau_texte, "ajout du portail {}, test en cours ".format(ligne)) |
||
main() |
main() |
Version du 14 janvier 2024 à 13:57
import pywikibot
import re
good=0
add=0
def extraire_elements(chaine_debut, chaine_fin, chaine_complete):
"""
Extrait une liste d'éléments délimités par une chaîne de début et une chaîne de fin.
Retourne la liste d'éléments extraits.
Si les chaînes de début et de fin ne sont pas trouvées, retourne une liste vide.
"""
# Recherche de l'index de début
index_debut = chaine_complete.find(chaine_debut)
# Vérification si l'index de début est trouvé
if index_debut != -1:
# Recherche de l'index de fin à partir de l'index de début
index_fin = chaine_complete.find(chaine_fin, index_debut + len(chaine_debut))
# Vérification si l'index de fin est trouvé
if index_fin != -1:
# Extraction de la sous-chaîne
sous_chaine = chaine_complete[index_debut + len(chaine_debut):index_fin]
# Division de la sous-chaîne en éléments séparés par "|"
elements = sous_chaine.split('|')
return elements
# Retourne une liste vide si les chaînes de début ou de fin ne sont pas trouvées
return []
# Supposons que vous avez déjà défini la fonction extraire_elements comme mentionné précédemment
def modifier_title(title, ligne):
add = 0
"""
Modifie la chaîne title en fonction des conditions spécifiées.
"""
portail_template = "{{portail|"
# Convertir le titre en minuscules pour les comparaisons
title_lower = title.lower()
if portail_template in title_lower:
liste_portail = extraire_elements(portail_template, "}}", title)
if len(liste_portail) > 0:
if ligne in liste_portail:
add += 1
return title
else:
# Utilisation de la méthode join pour créer une chaîne avec les éléments de la liste
new_portail = portail_template + "{}".format("|".join(liste_portail + [ligne])) + "}}"
title = re.sub(fr"{portail_template}", new_portail, title, flags=re.IGNORECASE)
return title
else:
title += portail_template + "{}".format(ligne) + "}}"
return title
else:
title += portail_template + "{}".format(ligne) + "}}"
return title
# Exemple d'utilisation
article_text = "Le contenu de votre article ici."
title = str(article_text)
ligne = "NouveauPortail"
# Appel de la fonction pour modifier le titre
title = modifier_title(title, ligne)
# Affichage du titre modifié
print("Title modifié :", title)
# Exemple d'utilisation
article_text = "Le contenu de votre article ici."
title = str(article_text)
ligne = "NouveauPortail"
# Appel de la fonction pour modifier le titre
title = modifier_title(title, ligne)
# Affichage du titre modifié
print("Title modifié :", title)
# Exemple d'utilisation
site = pywikibot.Site('fr', 'wikipedia')
liste=pywikibot.Page(site,"Utilisateur:Arbinger_bot/portail")
print(liste.text)
# Chaîne de caractères avec des sauts de ligne
chaine = "Première ligne\nDeuxième ligne\nTroisième ligne"
# Utilisation de splitlines() pour obtenir une liste de lignes
lignes = liste.text.splitlines()
def main():
# Affichage des lignes
for ligne in lignes:
#print(ligne)
categ = pywikibot.Category(site, ligne)
#print(categ.articles(recurse=1, namespaces=0))
for article in categ.articles(recurse=1, namespaces=0):
ancien_texte = str(article.text)
nouveau_texte = modifier_title(title, ligne)
if ancien_texte != nouveau_texte:
print(article.title())
pywikibot.showDiff(ancien_texte, nouveau_texte)
choice = pywikibot.input_choice( 'Do you want to accept these changes?', [('yes', 'y'), ('No', 'n')], default='N')
if choice == 'y':
print('Envoi de la modif de {}...'.format(article.title()))
article.put(nouveau_texte, "ajout du portail {}, test en cours ".format(ligne))
main()