Discussion utilisateur:Orlodrim/OrikriBot/Archive

Dernier commentaire : il y a 11 ans par Orikrin1998

Bonjour mirdolrO.

Je pense que tu n'ignores pas l'histoire globale d'OrikriBot : je l'ai créé dans le but de le barder de scripts, avant de me rendre compte que c'était un langage beaucoup plus compliqué que le HTML ou le CSS. Mais grâce à AutoWikiBrowser, RenommageCategorie.js et Wikipédia Cleaner, il est devenu un bot respectable qui va bientôt rentrer dans le classement des 100 bots les plus actifs.

Mais voilà, le temps passant, j'ai plus envie d'en faire un bot véritablement automatique (car malgré le nombre et l'efficacité des programmes que j'utilise, il demeure semi-automatique), ce qui veut dire : écrire des scripts.

J'ai déjà eu l'idée de deux tâches de maintenant sur les PàS :

  1. Suppression d'une section traitée.
  2. Création de la section du jour à minuit.

Bien sûr, je n'en suis pas encore à la rédaction du script. Je sais encore peu de choses sur cette langue (à Noël, mon frère et ma belle-sœur m'ont offert un magnifique livre traitant du HTML, XHTML, CSS et des scripts, qui m'aidera beaucoup dans mon apprentissage, accompagné du tutoriel sur internet), et je pense que quand je m'y mettrai, je devrai me faire aider.

Bref, j'ai introduit pour que tu sois informé de mes intentions, et parce que j'ai bien envie de faire de toi mon collaborateur scriptique pour le développement de la branche automatique d'OrikriBot. Mais surtout parce que, au point où j'en suis, une question bête mais majeure se pose à moi : où met-on le script ? Je ne parle pas le Python, donc ce ne sera pas Pywikipedia. Je ne connais que le Javascript comme langage de programmation, et pas d'autres sites qui pourraient héberger mon programme.

Voilà, un pavé pour pas grand-chose, mais tu peux aussi me dire si tu voudrais bien m'aider à développer mon robot. Émoticône sourire

Amicalement, --Orikrin1998 (+) blablatoir 3 janvier 2013 à 11:50 (CET) Utilisateur:Orikrin1998/SuiviRépondre

Bonjour,
Si tu écris des programmes en javascript, tu ne pourras les exécuter que sur ton ordinateur en ouvrant ton navigateur. Et tu ne pourras pas faire marcher un programme en continu, à moins de laisser ta machine en marche 24 heures sur 24. Pour faire ça, je te conseille vraiment de te mettre à Python (par exemple sur le site du zéro).:Un programme en Python pourra tourner sur un serveur dédié. Tu dois pouvoir demander un compte sur Wikimedia Labs. Dereckson avait également fait une proposition en juillet dernier (Wikipédia:Le Bistro/4 juillet 2012#Si vous avez besoin d'un hébergement web ou applicatif).
Amicalement, Orlodrim [discuter] 3 janvier 2013 à 18:13 (CET)Répondre
Oulah, ça m'a l'air compliqué. J'ai encore trop peu de connaissances en Javascript pour me mettre à autre chose. Et, tu as raison, vu comme ça, le javascript, ce n'est pas pratique.
Est-ce que cela se fait de « commander » un script à quelqu'un ? (Smiley oups) Comme l'a dit chépluki, « un bon développeur, c'est un développeur paresseux ». --Orikrin1998 (+) blablatoir 3 janvier 2013 à 18:54 (CET)Répondre
Si tu préfères continuer le Javascript, c'est déjà suffisant pour écrire des gadgets ou faire des tâches non régulières. Je peux t'aider à créer un script si tu veux. Si tu veux un script "clé en main" pour faire quelque chose de spécifique, je te conseille de le demander sur Discussion Projet:JavaScript/Demande de fonction. Orlodrim [discuter] 3 janvier 2013 à 23:02 (CET)Répondre
Je préférerais faire ça avec toi.
C'est très gentil à toi de vouloir m'aider personnellement, mais je ne sais pas comment faire pour partager les tâches : je ne connais rien en Python, même si ça ressemble au Javascript, donc je ne peux pas commencer. Je ne pense pas que j’aurai besoin des regex pour le script que je veux, si ? Dommage, c'est encore ce que je maîtrise le « mieux ».
Comment faire ? J'ai vraiment envie de créer ce script qui me semble potentiellement si pratique ! C'est dur quand on n’a aucune base… --Orikrin1998 (+) blablatoir 5 janvier 2013 à 18:19 (CET)Répondre

Ah, tu veux bien te lancer en python, finalement. Tant mieux alors ! Il faut d'abord que tu installes pywikipedia en suivant Aide:Pywikipedia. Si tu as besoin d'installer python, prends la version 2.7.3. Pour pywikipedia, la version "mise à jour toutes les nuits" convient. Il y a de nombreux scripts déjà inclus, que tu peux utiliser sans connaître python. Une fois que tu as suivi les instructions d'installation et de configuration, tu peux tester avec le script de renommage de categories :

python category.py move -from:catégorie_source_sans_l'espace_de_nom -to:catégorie_cible_sans_l'espace_de_nom

Dis-moi si ça marche jusque-là. Mais si, tu pourras te servir des regexp en Python ! Orlodrim [discuter] 5 janvier 2013 à 23:19 (CET)Répondre

C'est super, mais…Tu peux me donner 1 lien pour le télécharger ? Y'en a plein, ch’u perdu. Émoticône Je ne voudrais pas faire de bêtise : j’ai déjà eu une alerte de mon antivirus. 13,5 Mo, c'est bien la taille standard ? --Orikrin1998 (+) blablatoir 6 janvier 2013 à 13:54 (CET)Répondre
Utilises-tu Windows ? Orlodrim [discuter] 6 janvier 2013 à 19:29 (CET)Répondre
Oui, Windows 7. --Orikrin1998 (+) blablatoir 6 janvier 2013 à 20:12 (CET)Répondre
Dans ce cas télécharge et installe Python 2.7.3 pour windows (http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi), télécharge le zip de pywikipedia (http://toolserver.org/~pywikipedia/nightly/package/pywikipedia/pywikipedia-nightly.zip) et décompresse-le n'importe où.
Orlodrim [discuter] 6 janvier 2013 à 20:28 (CET)Répondre
Téléchargement Pywikipedia : ✔️.
Téléchargement Python 2.7.3 : ✔️.
Zipage Pywikipedia (PeaZip) : ✔️.
J'ai maintenant tout le bazar sous forme de dossiers dans mon ordinateur. J'aurais deux questions.
  1. Puis-je les déplacer sans risque ? Je pose cette question car j'ai deux comptes sur mon ordinateur, le compte enfant et le compte administrateur. Je suis passé par le compte administrateur pour effectuer les actions que tu m’as proposé de faire, et des fois le déplacement de l’un à l'autre pose problème. Normalement il n’y en aura pas, mais si tu es au courant de quelque chose, dis-le moi (à savoir que j'ai bien spécifié que Python s'installe sur les deux comptes).
  2. Je fais quoi maintenant ? Émoticône --Orikrin1998 (+) blablatoir 7 janvier 2013 à 13:04 (CET)Répondre

Je vais faire la version détaillée (il faudra que je recycle tout ça dans une page d'aide...)

  1. Pour Python, si tu as bien spécifié qu'il s'installe pour tous les utilisateurs, il n'y a rien de plus à faire. Par défaut, il s'installe dans C:\Python27. Au cas où tu as changé cela, tu devras simplement adapter mes instructions lorsque j'utilise ce nom de dossier.
  2. pywikipedia doit être dans un dossier que tu peux modifier lorsque tu es connecté avec ton compte habituel (dans tes documents ou sur ton bureau par exemple). Si ce n'est pas le cas déplace le dossier pywikipedia.
  3. Ensuite, tu dois connecter ton bot. Pour cela, vas dans le dossier pywikipedia et double-clique sur l'icône "login.py" pour lancer le programme de login. (Note 1 : si tu n'as pas configuré Windows pour afficher les extensions de fichier, il est possible que le nom de l'icône soit simplement "login". Note 2 : quand tu lances un programme en Python, Python crée un deuxième fichier du même nom à côté, contenant le code précompilé, afin de pouvoir le lancer plus rapidement par la suite ; sous Windows, le programme en Python a une icône blanche et est de type "Python file", tandis que la version précompilée a une icône noire et est de type "Compiled Python File". Tu peux ignorer ce deuxième fichier. Note 3 : tu peux regarder le code source de chaque programme en l'ouvrant avec ton éditeur favori, ou celui fourni avec Python en cliquant à droite sur l'icône et en choissant "Editer", "Edit" ou quelque chose comme ça)
  4. L'application s'ouvre et te demande les informations de connexion. Réponds aux cinq questions. (Les informations de connection seront enregistrées dans le fichier "user-login.py" et dans le dossier "login-data". Une fois que tu auras entré ces informations, le bot restera connecté indéfiniment. En cas d'erreur, tu peux effacer le fichier "user-login.py" et les fichiers "wikipedia-<quelque chose>.data" dans le dossier "login-data", puis recommencer.)
    1. "Select family of sites we are working on (default: wikipedia):" -> appuie juste sur Entrée pour valider le choix par défaut "wikipedia".
    2. "The language code of the site we're working on (default: 'en')" -> réponds "fr" pour Wikipédia en français.
    3. "Username (fr wikipedia)" -> le nom du bot, donc "OrikriBot" pour toi.
    4. "Which variant of user_config.py" -> réponds "S"
    5. "Password for user OrikriBot on wikipedia:fr" -> entre le mot de passe du bot.
  5. La suite nécessite d'utiliser la ligne de commande. Sur toutes les versions de Windows, tu peux y accéder en tapant Windows, en entrant "cmd" puis en validant. Cela fonctionne probablement aussi si tu cherches "Ligne de commande" dans les applications.
  6. Place-toi dans le dossier de pywikipedia (En entrant "cd <dossier_de_pywikipedia>" et en validant avec Entrée. Par exemple
    cd C:\Users\Orikrin1998\Bureau\pywikipedia
    mais cela dépend de l'emplacement exact du dossier. Remarque : le raccourci Ctrl+V ne marche pas pour coller du texte dans la ligne de commande, mais tu peux toujours faire un clic droit et "coller")
  7. Tu peux tester si ça marche en lançant statistics_in_wikitable.py, un script qui affiche quelques statistiques de base sur le wiki (Si Python te dit "can't open file 'statistics_in_wikitable.py': [Errno 2] No such file or directory", tu n'es pas dans le bon dossier). Pour cela, entre
    C:\Python27\python.exe statistics_in_wikitable.py -screen
    Cette commande lance python et lui dit d'exécuter le programme statistics_in_wikitable.py avec le paramètre "-screen" (chaque programme a des paramètres spécifiques, qui sont expliqués si tu lis les commentaires au début du programme. Ici cela signifie simplement : afficher le résultat à l'écran). Cela doit afficher quelques lignes du type "There are 1338016 articles". Tu peux ensuite essayer d'écrire ça dans une page du wiki plutôt qu'à l'écran avec
    C:\Python27\python.exe statistics_in_wikitable.py -page:Utilisateur:Orikrin1998/Brouillon

C'est bon jusque là ? Orlodrim [discuter] 7 janvier 2013 à 22:42 (CET)Répondre

Quels efforts tu fais pour un simple wikipédien comme moi !
Bon, alors ce que tu m'as dit de faire, je l'ai fait en un quart d'heure, mais j'en ai fait beaucoup.
Je me suis permis de numéroter les points que tu m’as donnés pour qu'on puisse se repérer :
jusqu'au point no 5, tout s'est bien passé. Je me suis étonné tout seul de ma facilité à faire toutes ces opérations si rapidement ; ma vocation serait-elle programmeur ? Émoticône
J'ai eu du mal à franchir le no 6, mais j'y suis finalement arrivé, après avoir déplacé les dossiers pour les mettre au milieu du « chemin ».
Au no 7, je me suis planté : impossible d'accéder au fichier que tu m'as fait ouvrir. J'ai eu un message d'erreur disant que « le chemin spécifié est introuvable ».
  1. Faut-il spécifier « cd » ?
  2. Est-on dans le dossier « Python27 » ou « pywikipedia » ?
En attente (impatiemment) de ta réponse, --Orikrin1998 (+) blablatoir 8 janvier 2013 à 13:15 (CET)Répondre

Est-ce que Python est installé dans "C:\Python27" ? Si ce n'est pas le cas, alors il faut remplacer "C:\Python27" par le dossier où se trouve Python, comme je l'ai dit au début. (Tu peux vérifier cela en entrant "C:\Python27" dans la barre d'adresse, comme expliqué dans [1], section « Pour naviguer en entrant un nouveau chemin d’accès ». Si ça indique que le dossier n'existe pas, c'est que Python a été installé ailleurs.) Si par hasard il y a des espaces dans le nom du dossier, mets des guillemets autour. Par exemple

"C:\Mon dossier\Python27\Python.exe" statistics_in_wikitable.py ...

si le dossier d'installation est "C:\Mon dossier\Python27".

Ensuite, dans la ligne de commande, tu dois être dans le dossier de pywikipedia (celui où il y a login). Tu peux vérifier le contenu du dossier courant en tapant "dir" (pour "directory"). S'il n'y a pas le fichier login, c'est que tu n'es pas dans le bon dossier. Tu tu as login mais pas statistics_in_wikitable, c'est un autre problème...

Orlodrim [discuter] 8 janvier 2013 à 20:09 (CET)Répondre

Un de mes cadeaux de Noël. Émoticône sourire
Voici ce que j'ai entré dans la fenêtre d'accès. Je viens de prendre l'image et comme tu le vois, je n'y suis pas mieux arrivé.
Et là, le chemin d'accès à mon dossier Python.
Peut-être que tu verras le problème… --Orikrin1998 (+) blablatoir 9 janvier 2013 à 11:24 (CET)Répondre
Il semble que :
  • Tu es dans le dossier de Python alors que tu dois être dans le dossier de pywikipedia.
  • Python est installé dans "C:\Users\Compte Enfant\Python27".
Il faut donc :
  • que tu ailles dans le dossier de pywikipedia. Puisque tu as vu comment fonctionne la barre d'adresse, regarde ce qu'affiche la barre d'adresse quand tu vas dans le dossier où se trouve le programme "login" sur lequel tu as cliqué au début. Ça te permettra de trouver le chemin pour aller dans le bon dossier.
  • Au lieu de :
    C:\Mon dossier\Python27\Python.exe statistics_in_wikitable.py ...
    c'est
    "C:\Users\Compte Enfant\Python27\python.exe" statistics_in_wikitable.py ...
    (note qu'il y a les guillemets pour la raison que j'ai expliquée plus haut).
Orlodrim [discuter] 9 janvier 2013 à 19:35 (CET)Répondre

J'y suis finalement arrivé ! Voilà exactement tout ce que j'ai eu après la validation de l'action. Cela a eu pour effet de créer la page Logstats, que j'ai mise en SI. En tant qu'admin, tu dois pouvoir visualiser la version si besoin, j'imagine.

Je dois donc avoir tout fait ce que tu m’avais demandé de faire ? Émoticône sourire Quelle est la suite ? {{avide}} --Orikrin1998 (+) blablatoir 9 janvier 2013 à 20:28 (CET)Répondre

Ha, ça marche Émoticône sourire.
La nom incorrect de la page, c'est peut-être parce que tu as mis directement les "..." de la commande ci-dessus ? J'avais écrit ça pour remplacer soit "-screen", soit "-page:Utilisateur:Orikrin1998/Brouillon" (voir le point n° 7).
Orlodrim [discuter] 9 janvier 2013 à 20:38 (CET)Répondre
Je n'ai pas le temps de te répondre immédiatement pour la suite, ce sera sans doute pour demain. Orlodrim [discuter] 9 janvier 2013 à 20:41 (CET)Répondre
Pas de problème, tu en fais déjà tant pour moi. --Orikrin1998 (+) blablatoir 10 janvier 2013 à 12:01 (CET)Répondre

Bon, maintenant on peut passer au programme (celui qui ajoute la section du jour me semble le plus simple). Je te propose te faire ça en quatre étapes :

  • je te donne un programme python qui remplace une regexp dans une seule ligne, pour tester.
  • je te guide pour la suite : modifier le programme pour qu'il lise un fichier où tu as manuellement inséré le contenu WP:PàS, et qui écrit dans un autre fichier le résultat en ayant ajouté la section du jour.
  • modifier le programme pour qu'il ajoute la section seulement si elle n'existe pas déjà.
  • modifier le programme pour qu'il lise et écrive la page directement sur le wiki.

Tu peux utiliser n'importe quel éditeur de texte pour programmer. Le bloc-notes de Windows fonctionne mais c'est rudimentaire (pas de coloration syntaxique, pas d'indentation). Tu peux installer Notepad++ par exemple. Pour créer un fichier Python, ouvre l'éditeur de texte, écrit le code et enregistre le fichier avec un nom finissant par .py, par exemple « test1.py ». Pour lancer le code sous Windows, tu peux double-cliquer sur le fichier ou utiliser la ligne de commande (en allant dans le dossier où se trouve le programme avec cd, puis en lançant "C:\Users\Compte Enfant\Python27" lenomdufichier.py ..., les ... représentent les éventuels paramètres). Quand il y a des paramètres, tu es obligé d'utiliser la ligne de commande. Là il n'y en aura pas.

Voilà le code pour commencer, dis-moi si ça marche.

# -*- coding: utf-8 -*-
# Les lignes qui commencent par un '#' sont des commentaires.

# Importe le module re (pour "regular expression")
import re

# Lit une ligne dans une variable appelée de façon originale 'ligne', en appelant la fonction raw_input
ligne = raw_input('Entrez une ligne et je remplacerai la regexp: ')

# Remplace n'importe quelle suite de 'a' par un 'a' unique
# (par exemple, 'haaaahaaaahaaaa' devient 'hahaha')
# Stocke le résultat dans la variable 'ligne_modifiee'
# On utilise la fonction 'sub' (substitution) du module 're', qui prend trois paramètres :
# l'expression régulière cherchée, le texte qui remplace l'expression et le texte dans lequel on fait le remplacement
ligne_modifiee = re.sub('a+', 'a', ligne)

# Affiche le résultat
print ligne_modifiee

# Lit encore une ligne pour éviter que la fenêtre se ferme tout de suite sous Windows
raw_input('Appuyez sur n\'importe quelle touche pour quitter')

NB : Python n'aime pas les caractères accentués, même dans les commentaires, si on ne déclare pas l'encodage du fichier au début. Lorsque tu enregistres le fichier pour la première fois, il y a normalement un endroit où tu peux choisir l'encodage. Mets UTF-8 pour que ça corresponde à ce que j'ai mis ici. (Si tu ne vois pas cette option, tu peux dans un premier temps tester en enlevant tous les commentaires contenant des accents). Orlodrim [discuter] 10 janvier 2013 à 21:05 (CET)Répondre

Copie du script dans le bloc-notes : ✔️
Enregistrement sous format py et encodage UTF-8 : ✔️ (nom du fichier choisi : Remplace)
Ouverture du script par double-clic sur le fichier : ❌ Erreur
J'ai donc double-cliqué sur le fichier, et il n’en a résulté que l’ouverture éclair d'une fenêtre « pythonique ». J'ai réussi à l'obtenir grâce à quelques manipulations : ici (dans une vidéo de 30 images par seconde, cette session a duré le temps de 3 images, donc un dixième de seconde).
Qu'était-il censé se produire ? --Orikrin1998 (+) blablatoir 11 janvier 2013 à 13:39 (CET)Répondre
Sur l'image, je vois en fond le dossier où Python est installé (apparemment, tu l'as déplacé dans "C:\Python27" ou alors tu l'as installé deux fois...?). Va dans ce dossier puis dans "Lib" (attention pas "libs"). Est-ce qu'il y a un fichier nommé "abc" ? (c'est visiblement le module qui manque). Orlodrim [discuter] 11 janvier 2013 à 20:58 (CET)Répondre

Je ne sais pas. Tu as installé python dans "C:\Python27" ou dans "C:\Users\Compte Enfant\Python27" ou les deux ? Est-ce qu'il y a un fichier "_abcoll" et s'il y a un fichier "abc" dans le dossier C:\Python27\Lib ? Si tu n'en sais rien, peux-tu enregistrer le script suivant dans un fichier appelé "liste.bat" (avec le bloc-notes), double-cliquer dessus et me dire le résultat pour que je sache quels fichiers existent dans la liste.

@echo off
dir /B C:\Python27\python.exe
dir /B C:\Python27\Remplace.py
dir /B C:\Python27\Lib\_abcoll.py
dir /B C:\Python27\Lib\abc.py
pause

Orlodrim [discuter] 11 janvier 2013 à 20:58 (CET)Répondre

J'ai opté pour la deuxième solution, et voici le résultat : [2]. --Orikrin1998 (+) blablatoir 13 janvier 2013 à 14:36 (CET)Répondre
Il y a un problème d'installation de python. Le fichier "C:\Python27\Lib\abc.py" devrait exister. Soit tu l'as déplacé quelque part, soit l'installation n'a pas fonctionné. Peux-tu réinstaller python à partir de http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi (en laissant le dossier d'installation "C:\Python27"), et refaire la même vérification ? Orlodrim [discuter] 13 janvier 2013 à 14:45 (CET)Répondre
Je réinstalle par dessus ou je supprime Python27 d'abord ? --Orikrin1998 (+) blablatoir 13 janvier 2013 à 15:56 (CET)Répondre
Je ne sais pas, fais comme tu le sens. Je ne suis pas derrière ton écran donc n'hésite pas à prendre des initiatives et à faire des essais, sinon ça risque d'être encore long. Orlodrim [discuter] 13 janvier 2013 à 16:08 (CET)Répondre

Bingo !

J'ai recréé le script Remplace.py comme je l'avais fait la première fois, et voici le résultat : [3].

Je ne suis pas allé plus loin. --Orikrin1998 (+) blablatoir 16 janvier 2013 à 11:27 (CET)Répondre

Félicitations, tu as maintenant une installation de Python fonctionnelle Émoticône. Je repasserai par là ce soir ou demain pour la suite. Orlodrim [discuter] 16 janvier 2013 à 12:46 (CET)Répondre

Bon, reprenons. Le programme que tu as déjà peut faire un remplacement de regexp. Tu rentres une ligne, et la regexp 'a+' et remplacée par 'a'. Par exemple, comme je l'avais indiqué dans les commentaires du code, si tu entres « haaaahaaaahaaaa », le programme te répondra « hahaha ». OK jusque là ?

Pour la suite, tu auras certainement besoin de déboguer tes programmes. Mais si tu ouvres tes fichier en double-cliquant dessus, la fenêtre se ferme instantanément lorsque Python rencontre une erreur. Pour pouvoir lire les messages d'erreur, tu peux créer un script batch qui exécute ton programme puis attend que tu appuies sur une touche.

Par exemple, si ton programme est enregistré dans "C:\Python27\Remplace.py", tu crées un script batch contenant :

cd C:\Python27
C:\Python27\python.exe Remplace.py
pause

Tu l'enregistres avec un nom qui se termine par « .bat » et tu double-cliques dessus pour lancer ton programme.

Peux-tu tester cela en ajoutant volontairement une erreur dans le programme précédent (par exemple, remplace « import re » par « import reeeeeeeeeee ») et voir tu arrives à voir le message d'erreur pendant plus d'un dixième de seconde ?


Maintenant, lorsque tu écris ton programme et que tu veux le tester, entrer au clavier tout le contenu de WP:PàS n'est pas pratique. D'un autre côté il vaut mieux éviter de modifier Wikipédia tant que ce n'est pas au point. Donc le plus simple est de lire un fichier et écrire dans un second fichier dont tu as juste à vérifier le contenu.

Pour lire un fichier « page.txt » qui se trouve dans le même dossier que le programme lui-même, tu peux utiliser ceci :

with open('page.txt', 'r') as f:
    texte = f.read()

Ce qui signifie :

  1. ouvre le fichier « page.txt » en mode read (lecture)
  2. lit l'intégralité du contenu dans une variable « texte ».

Pour écrire le résultat dans un fichier « page2.txt », il faut :

  1. ouvrir le fichier en mode 'w' (comme write) au lieu de 'r'.
  2. écrire le contenu (ici on écrit le contenu de la variable « texte_modifie »)
with open('page2.txt', 'w') as f:
    f.write(texte_modifie)

Peux-tu créer un fichier « page.txt » contenant le code actuel de Wikipédia:Pages à supprimer, puis modifier ton programme pour qu'il crée un fichier « page2.txt » avec le code où le remplacement a été fait ? (Tu peux changer l'expression régulière "a+" par un mot qui apparaît fréquemment dans la page comme « janvier »).

Orlodrim [discuter] 17 janvier 2013 à 19:17 (CET)Répondre

Coucou !
J'ai pris mon courage à deux mains pour essayer de comprendre tout ce que tu viens de me dire :
  1. J'ai créé BugTracker.bat, avec le bout de script que tu m'as donné en premier lieu. Voici ce qui en a résulté : [4].
  2. J'ai enregistré RemplaceBugué.py, qui est le même que Remplace.py à la différence que j'ai ajouté un bug : import reeeeeeeeee au lieu d'import re. Voici la fenêtre de bug que j'ai réussi à récupérer malgré son apparition furtive : [5].
  3. Je n'ai rien fait en rapport avec la deuxième partie de ton message, car sans vouloir te vexer (c'est d'ailleurs plutôt la faute à mon cerveau en panne), je n'ai rien compris. Concrètement, que faut-il que je fasse ? Quand tu dis que je dois recopier le code actuel de PàS, c'est vraiment le contenu momentané ?
Désolé de n'avoir pas suivi jusqu'au bout... --Orikrin1998 (+) blablatoir 19 janvier 2013 à 14:36 (CET)Répondre
  • Quand tu enregistres un script sous le nom .bat, ne prends pas l'encodage UTF-8, laisse l'option par défaut sinon ça fait planter la commande sur la première ligne (en l'occurrence ça ne changeait rien ici, mais bon...)
  • L'idée était que tu utilises tojours un fichier du type BugTracker.bat pour lancer tes programmes, au lieu de double-cliquer directement sur les programmes ou de les démarrer en ligne de commande. Si tu continues à cliquer sur les fichiers Python, la fenêtre se ferme tout de suite et c'est ce qu'il faut éviter.
    Donc pour voir le message d'erreur sur le mauvais programme :
    • soit tu mets une erreur directement dans le Remplace.py original et tu cliques sur ton BugTracker.bat
    • soit tu fais une copie de Remplace.py sous un autre nom (ce que tu as fait), mais dans ce cas tu dois créer un nouveau lanceur .bat pour cette copie.
Est-ce que ça marche jusque là ?
Ensuite, oui, tu peux prendre n'importe quelle version de WP:PàS, c'est juste pour faire des essais.
Si tu es malade ne te prends pas trop la tête avec ça et reposes-toi bien.
Orlodrim [discuter] 19 janvier 2013 à 15:00 (CET)Répondre
Quel sympathique conseil. Émoticône sourire Ça va mieux maintenant, merci ! Émoticône
Bon alors,
  1. J'ai créé page.txt avec cette version des PàS.
    1. Important : j'ai renommé RemplaceBugué.py en RemplaceBug.py car le Bug Tracker ne supportait pas l'accent.
  2. J'ai créé le BugTracker.bat appelant RemplaceBug.py, et voilà le résultat que j'ai obtenu en cliquant sur le premier : [6].
Quelle est la suite (juste pour dire quelque chose) ? --Orikrin1998 (+) blablatoir 23 janvier 2013 à 14:57 (CET)Répondre
Content de te retrouver Émoticône sourire.
Si je reprends le programme ligne par ligne, pour l'instant on a ça :
  1. Importer le module re
  2. Lire une ligne saisie au clavier
  3. Remplacer l'expression régulière "a+" par "a" dans la ligne
  4. Écrire la ligne modifiée à l'écran
  5. Attendre que l'utilisateur appuie sur entrée
Pour comprendre en détail le fonctionnement de chaque ligne, tu peux lire ceci : Les variables en Python, Les fonctions en Python (ce tutoriel concerne Python version 3, ce qui pour l'instant ne change pas grand chose, à ceci près que print en Python 3 prend des parenthèses, par ex. print("abc"), alors qu'en Python 2 on peut écrire print "abc")
Maintenant, l'objectif est de passer à ça :
  1. Importer le module re
  2. Lire le contenu du fichier "page.txt"
  3. Remplacer l'expression régulière "a+" par "a" dans le texte
  4. Écrire le texte modifié dans un fichier "page2.txt"
  5. Attendre que l'utilisateur appuie sur entrée
Il y a tous les éléments au-dessus, à toi de jouer.
Orlodrim [discuter] 23 janvier 2013 à 22:37 (CET)Répondre
J'ai fait une rechute...À cause de ton message ! Je ne m'attendais pas à ce que tu me lâches la main si rapidement. Mais c'est très bien comme ça. Je vais essayer.
J'ai malheureusement peur de ne pas comprendre assez pour y arriver directement :
  1. Dois-je mettre les deux mini-scripts dans le même programme ?
  2. Les actions que je dois faire me mèneront-elles directement à ce que je désire, ou bien cela fait partie du programme « il vaut mieux éviter de modifier Wikipédia tant que ce n'est pas au point » ?
Amicalement, --Orikrin1998 (+) blablatoir 24 janvier 2013 à 12:44 (CET)Répondre
Oui, pour l'instant tout le programme doit être dans un seul fichier (sauf si tu tiens particulièrement à te compliquer la vie). Pour l'instant il n'y aura pas de modification de Wikipédia. Orlodrim [discuter] 24 janvier 2013 à 23:05 (CET)Répondre

Gasp, c'est dur !

  1. J'ai créé le programme.
    1. Il contient les deux petits scripts que tu m'as donnés plus haut.
    2. J'ai pris soin de remplacer page.txt par Page.txt dans ce code, car je sais que c'est sensible aux majuscules.
    3. J'ai enregistré le programme en UTF-8 (puisque ce n'est pas un .bat) et mis le format .py.
  2. J'ai cliqué sur le programme ainsi enregistré.
    1. Il s'est ouvert, il a écrit quelque chose que je n'ai pas eu le temps de lire, puis s'est fermé.
    2. Le fichier page2.txt a été généré...Vide...

J'aurais voulu faire plus, mais malheureusement je crois qu'il me manque des éléments pour bien savoir où j'en suis...Est-ce vraiment ça que je devais faire ? Qu'en est-il de mon BugTracker.bat ? Dois-je en créer un pour les fichiers Page.txt et page2.txt ? --Orikrin1998 (+) blablatoir 25 janvier 2013 à 13:26 (CET)Répondre

OK, si un fichier est généré c'est déjà ça. Pourrais-tu mettre ton code dans une de tes sous-pages pour que je puisse le lire ?
« J'ai cliqué sur le programme ainsi enregistré » → peux-tu relire cette section, ça devrait répondre aussi à ta question sur le BugTracker ? Ensuite dis-moi s'il y avait un message d'erreur ou pas.
Orlodrim [discuter] 26 janvier 2013 à 00:05 (CET)Répondre
  1. « Mon code » : tu parles de Page.txt ?
  2. J'ai créé BugTrackerPage.bat. Je l'ai enregistré en ANSI (par défaut, comme tu me conseillais de ne pas mettre de l'UTF-8 pour les .bat). Voici son contenu :
cd C:\Python27
C:\Python27\python.exe Page.txt
pause

En cliquant dessus, j'ai obtenu ceci : [7]. Syntaxe invalide ? Bizarre...Voici un bête copié-collé de la première ligne de Page.txt :

{| style="background-color:transparent"

C'est ça que tu pressentais ? --Orikrin1998 (+) blablatoir 26 janvier 2013 à 14:27 (CET)Répondre

Non, Page.txt ne doit pas être exécuté car ce n'est pas un programme en Python. Tu as écrit « J'ai cliqué sur le programme ainsi enregistré ». Pourrais-tu créer un bat pour lancer ce programme ainsi enregistré et également en copier le contenu sur Wikipédia ? Orlodrim [discuter] 26 janvier 2013 à 14:55 (CET)Répondre

Au temps pour moi.

J'ai donc créé BugTrackerScript.bat appelant Script1.py, et voici le résultat : [8]. Je vais bien finir par y arriver ! --Orikrin1998 (+) blablatoir 26 janvier 2013 à 15:32 (CET)Répondre


Ah, tu parles donc de Page.txt. Voici : Utilisateur:OrikriBot/Page.txt. --Orikrin1998 (+) blablatoir 26 janvier 2013 à 18:14 (CET)Répondre

Non. Peux-tu copier le contenu de Script1.py sur Wikipédia ? Orlodrim [discuter] 26 janvier 2013 à 18:26 (CET)Répondre
Émoticône D'accord. Vu comme ça, supprime ce que je viens de créer s'il te plait.
Et gnoilààààà :
Cordialement, --Orikrin1998 (+) blablatoir 26 janvier 2013 à 18:47 (CET)Répondre
OK. Il manque des bouts pour que ça marche. Tu dois partir de ça et je te rappelle que l'objectif est . Orlodrim [discuter] 26 janvier 2013 à 18:58 (CET)Répondre
Mais Orlo, je ne connais rien en Python. (Smiley: triste) Je ne sais pas où tu veux en venir et j'ignore quoi faire. Pleure ! --Orikrin1998 (+) blablatoir 26 janvier 2013 à 20:47 (CET)Répondre
Je sais que tu ne connais pas Python, c'est pour ça que j'ai expliqué ligne par ligne ce que le programme initial faisait. Pour poursuivre, tu n'as pas besoin d'inventer du code là, juste d'assembler les éléments que je t'ai donnés.
Le programme initial contient cinq lignes (en dehors des commentaires et les lignes vides qui ne servent qu'à faciliter la compréhension). Lorsque tu lances ton programme, Python lit les lignes et les exécute dans l'ordre. Ce que fait chaque ligne est expliqué . J'ai mis en gras les étapes (= lignes) que tu dois changer, et j'ai aussi indiqué plus bas ce par quoi tu dois les remplacer. Orlodrim [discuter] 26 janvier 2013 à 21:06 (CET)Répondre

C'est ça ? --Orikrin1998 (+) blablatoir 27 janvier 2013 à 13:51 (CET)Répondre

Oui, c'est là que je voulais en venir, sauf que tu pouvais supprimer les anciennes lignes, correspondant aux étapes modifiées. Je sais, ça ne marche pas, mais c'est prévu Sourire diabolique.
Maintenant, peux-tu lire attentivement ceci en suivant les étapes (pour tester, il faut que tu ailles dans le dossier de Python, et que tu démarres Python en double-cliquant dessus) ?
Orlodrim [discuter] 27 janvier 2013 à 14:21 (CET)Répondre
  1. J'ai lu ton petit tutoriel...J'ai tout bien compris : je connaissais déjà le principe des variables du Javascript...
  2. J'ai mis à jour le contenu de Script1.py avec ce code (son ouverture via son BugTracker attitré me dit que ligne n'est pas défini, mais ce doit être normal ?).
Si j'ai bien tout suivi, maintenant pour que tout cela fonctionne, il faut définir Page.txt selon le contenu momentané des PàS et expliquer au programme comment et pourquoi modifier ce texte (page2.txt). Mais là je vais un peu vite en besogne...J'ai l'impression que je touche au but. Lampe
Quand tu dis « il faut que tu démarres Python en double-cliquant dessus », tu parles du fichier python (une application) ? J'ai peur de ne pas saisir le mot « démarrer » dans cette phrase... --Orikrin1998 (+) blablatoir 27 janvier 2013 à 14:42 (CET)Répondre
Quand tu vas dans le dossier C:\Python27, tu dois avoir une icône « Python ». C'est une application, que tu utilises déjà pour faire marcher les programmes que tu écris en Python. Mais tu peux aussi la lancer comme ça, dans ce cas tu peux entrer des commandes ligne par ligne. Ça t'aurait permis de suivre la page sur les variables. Mais si tu connais déjà ça, passons à autre chose.
Dans la version initiale du programme, il y avait
ligne = raw_input('Entrez une ligne et je remplacerai la regexp: ')
Cela lit du texte entré au clavier, et l'enregistre dans une variable nommée « ligne ».
Dans la nouvelle version, j'ai enlevé « ligne = raw_input('Entrez une ligne et je remplacerai la regexp: ') », donc la variable « ligne » n'est plus définie nul part.
La suite du programme est :
ligne_modifiee = re.sub('a+', 'a', ligne)
Ici la variable « ligne » est lue par la fonction re.sub (remplacement d'expression régulière). Mais elle n'est plus définie --> python signale une erreur.
Dans la nouvelle version, tu ne lis plus du texte entré au clavier, mais du texte lu dans le fichier « Page.txt ». Dans quelle variable le texte du fichier se trouve-t-il à ton avis ?
Orlodrim [discuter] 27 janvier 2013 à 14:54 (CET)Répondre
J'ai d'abord pensé à texte_modifie, mais c'est plutôt là qu'est stocké page2.txt (dont je ne sais pas encore précisément l'utilité).
Ensuite, j'ai vu f.read...Je crois bien qu'on appelle ça une fonction anonyme (à cause des parenthèses vides). Donc la ligne qui le précède stocke le texte de Page.txt dans f.read. Pourtant, ça ressemble à une action demandée au programme, vu le point ? Enfin, il me semble bizarre que f.write s'intéresse au texte original. C'est pour ça que je me décide à répondre à ta question par :
texte = f.read()
Une question : comment s'appelle cette manière d'écrire en différenciant les mots par une majuscule au début de chacun d'eux ? DeCetteManièreLà ? J'ai oublié... --Orikrin1998 (+) blablatoir 27 janvier 2013 à 15:39 (CET)Répondre
Oui, pour être précis « texte = f.read() » est une instruction où la variable « texte » est définie. La variable, c'est donc « texte ».
Bon, avant on définissait une variable « ligne » et on modifiait son contenu. Maintenant, le contenu qu'on veut modifier n'est plus stocké dans la variable « ligne » mais dans la variable « texte ». Cela devrait te permettre de corriger le programme (note qu'il faudra faire la même chose pour ligne_modifiee / texte_modifié).
Pour la question annexe : ça s'appelle CamelCase. Mais en python on utilise plutôt des noms de variable en minuscules en séparant les mots par « _ ».
Orlodrim [discuter] 27 janvier 2013 à 23:40 (CET)Répondre
Bon, il fallait bien que je le fasse un jour ou l'autre. Euh ?
J'ai fait une correction rapide, mais je ne suis pas sûr d'avoir compris : je ne pense pas avoir vu juste... --Orikrin1998 (+) blablatoir 2 février 2013 à 20:05 (CET)Répondre
Oulah, j'ai vraiment dû dire n'importe quoi. Euh ? --Orikrin1998 (+) blablatoir 7 février 2013 à 12:01 (CET)Répondre
Désolé mais je n'étais simplement pas là et je n'ai pas pu suivre cette page. Je regarderai dès que j'aurai le temps. Orlodrim [discuter] 12 février 2013 à 21:04 (CET)Répondre
OK. Émoticône --Orikrin1998 (+) blablatoir 13 février 2013 à 11:15 (CET)Répondre

┌─────────────────────────────────────────────────┘
Bonjour à tous les deux. Je tiens à remercier Orlodrim (très pédagogue Émoticône sourire) pour ce très bon début de tuto d'apprentissage. J'avais gardé cette page en suivi à l'époque où elle avait été créée, et je me suis enfin décidé à « essayer » pywikipedia en cette fin d'après-midi (contrairement à Orikrin1998, je n'ai pas de réel « projet » comme lui avec les PàS mais ça me tentait d'essayer…).

J'ai suivi toutes les étapes clairement explicitées, et aucun problème de référencé, mis à part le fait que d'appeler le fichier initial PàS.txt et/ou celui de destination PàS-new.txt posait problème à cause du caractère « à », bien que mon fichier python soit codé en UTF-8 (enfin je crois).

De même, j'ai changé le remplacement « 'a+' → 'a' » en « 'Suppression' → 'Création' » mais dans le fichier .txt final, c'est Création qui en ressort (encore ce soucis d'encodage…).

Je précise enfin que cette aide ne m'est pas adressée, donc je n'attends pas à ce qu'une explication me soit apportée, mais si ça peut aider Orikrin1998, je précise simplement les « problèmes » que j'ai rencontré. Par ailleurs, si suite à ce tutoriel il y a, c'est avec plaisir que je continuerai à le suivre, dans l'ombre (→ Big Brother is watching you).

Amicalement — Hawk-Eye (d) 3 avril 2013 à 19:44 (CEST)Répondre

Puisque Hawk-Eye intervient dans la discussion, je tiens à signaler que depuis aujourd'hui, OrikriBot est apte à ajouter une section chaque jour, grâce aux talents en Python de Linedwell.
C'est le silence d'Orlodrim qui m'a fait m'y attacher de plus près, et les discussions que j'ai eues avec Linedwell ont rapidement abouti aux travaux qu'il a effectués pour moi.
Il ne faut pas que tu t'en veuilles, Orlo, mais je pensais que tu respectais mon travail sur le WCC en ne m'abreuvant plus d'informations au sujet de mon bot. Je tiens à ce que tu saches que j'ai malgré tout bien appris grâce à toi et que j'ai apprécié les rebondissements de la discussion, ta pédagogie (car Hawk a bien raison à ce sujet) et surtout ta patience.
La discussion n'est pas close, il reste encore un programme à réaliser : celui de l'archivage automatique des sections traitées. La rapidité de Liny surpassera-t-elle la stratégie d'Orlodrim ? Ce script reste à étudier ! Émoticône
Cordialement, --Orikrin1998 (+) blablatoir 3 avril 2013 à 20:21 (CEST)Répondre
@Hawk-Eye: Windows n'utilise pas UTF-8 en interne, du coup il peut effectivement y avoir quelques problèmes si tu manipules des noms de fichier avec accents. Il y a sûrement des solutions pour convertir, mais pour les noms de fichiers ce n'est sans doute pas très important (tu peux toujours te débrouiller pour qu'ils n'aient pas d'accents).
Pour le contenu des fichiers, ce que tu décris n'est pas vraiment un bug, il faut juste sélectionner le bon encodage en ouvrant le fichier dans ton éditeur (UTF-8). Avec Notepad++ ou n'importe quoi de plus sophistiqué que le bloc-notes, il y a certainement avoir une option pour choisir ça. Je n'ai pas accès à un ordinateur sous Windows dans l'immédiat pour vérifier.
@Orikrin1998: désolé, je t'avais un peu lâché... Heureux de voir que Linedwell a pu t'aider. Pour la seconde tâche, je peux te guider si tu as besoin (ton code est quelque part ?). Je ne promet pas de pouvoir être très réactif, si Linedwell est plus disponible, profites-en Émoticône.
Orlodrim [discuter] 3 avril 2013 à 21:26 (CEST)Répondre
Non, aucune importance pour le nom de fichier : Merci pour l'explication !
J'ai modifié le fichier avec le standard Bloc-notes (Windows), ça vient peut-être de cela. Je vais retenter avec Notepad++, merci de l'astuce !
Oui, moi aussi, ça m'intéresserait de voir le code néoformé Émoticône sourire (curiosité oblige !) — Hawk-Eye (d) 3 avril 2013 à 21:35 (CEST)Répondre
Le code que j'utilise pour la création journalière de la section des PàS est celui-ci : Utilisateur:OrikriBot/PaS.py.
Je serais très content que tu m'aides, Orlodrim, pour le second script. Linedwell a dit qu'il serait plus compliqué, mais je compte sur toi pour me le faire comprendre. Émoticône
Pas de souci pour ta lâcheté ton lâchage le fait que tu m'aies lâché, tout le monde a des obligations. Sache toutefois que personnellement, je suis disponible puisque le plus gros de mon travail de juré au wikiconcours est passé...Jusqu'au 1er mai ! --Orikrin1998 (+) blablatoir 4 avril 2013 à 13:00 (CEST)Répondre
Retour à la page de l’utilisateur « Orlodrim/OrikriBot/Archive ».