Utilisateur:Titruffe/A propos des bots

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.

Discussion initiale avec Vive La Rosière[modifier le wikicode]

Salut à toi !
Visiblement tu te lances dans les bots et comme un jour j’aurai sûrement envie de m’y mettre aussi (il y a bien longtemps que je n’ai pas programmé, ça me manque un peu) pourrais-tu m’expliquer rapidement comment on crée un bot et comment on le fait tourner, d’abord dans un bac à sable puis sur le wiktionnaire ?
Je me demande aussi, dans le cas où le bot modifie des articles, s’il est possible ensuite de revenir en arrière facilement si le résultat n’est pas conforme ? (malgré les tests en bac à sable car j’imagine qu’on ne peut pas toujours prévoir tous les différents cas qui peuvent se présenter) (les boules s’il faut reprendre des milliers de modifs à la main !) Je n’ai pas réussi à trouver de réponse dans l’aide Pleure --Titruffe (discussion) 23 juillet 2013 à 07:48 (UTC)

Eh bien, à dire vrai, je suis loin d’être une pro. J’avais un peu commencé à bricoler quelque chose de semi-automatique, mais au final c’était JackPotte (d · c) qui avait le plus bidouillé le script que moi-même et avait fait 90% du boulot. J’ai bloqué sur le traitement des caractères spéciaux. Faute de temps et de connaissances, mon projet de bot a été relégué sous le tapis à poussière pour le moment. Euh bah, déjà voici les quelques règles d’utilisation des bots. Ensuite il y a principalement de moyen de faire tourner un bot, soit passer par AutoWikiBrowser soit par le langage Python. Sinon les tests s’effectue sur tes sous-pages de brouillons, exemple : Utilisateur:Titruffe/Test 1 (Respecte bien ça car je me suis déjà faite taper sur les doigt à cause de ça ^^). Pour les aides c’est un peu le bordel mais faut surtout les chercher sur les projets frères comme Wikipédia et MediaWiki (et parfois les pages anglophones sont plus complètes que les françaises). Mais ici notre professionnel des bots c’est assurément JackPotte (d · c) il sera bien plus à même de te guider que moi, je te conseille de le contacter. PS : Généralement ton bot ne fera pas de bourdes car tu l’auras déjà tester sur un petit échantillon d’une centaine de modification. V!v£ l@ Rosière /Murmurer…/ 23 juillet 2013 à 16:00 (UTC)
En discutant sur IRC, j’ai appris qu’il existe des programmes (qui ne sont pas des bots) et qui permettent d’effectuer en série des opérations répétitives. Par exemple AWB; y en a-t-il d’autres ? WPC existe aussi mais est visiblement spécifique à WP (d’où son nom). Je pose cette question car ces programmes ont l’air plus simples à utiliser que les bots et du coup je pense commencer d’abord avec ça. Si j’ai bien compris il y a une différence entre l’utilisation d’un programme comme AWB qui opère au nom de l’utilisateur et un bot (en python par ex) qui opère pour son propre compte. Ai-je bien compris ?--Titruffe (discussion) 24 juillet 2013 à 05:43 (UTC)
Pour ma part je ne connaissais que AWB ; je l’avais essayé mais je n’ai jamais réussi à le faire marcher et je crois qu’il ne pouvait pas faire ce que je souhaitais (ou sinon c’était moi qui m’y prenais très mal).
Sinon AWB peut s’utiliser sous son propre compte, mais généralement on préfère qu’il soit utilisé via un compte bot pour éviter de flooder les « changements récents » (communément appelé RC pour recent change dans le jargon WT/WP). En fait, c’est un bot semi-automatique. C’est-à-dire qu’il va effectuer des changements automatisés mais qui ont besoin d’être validés par le dresseur du bot, en temps réel, pour être appliqués. Tandis qu’un bot automatique (sens classique de « bot » sans précision) lui, un fois lancé, opère seul et "sans contrôle" direct du dresseur (concrètement le dresseur n’a pas besoin d’appuyer sur un bouton pour que le changement soit appliqué, il lui suffit de "donner son feu vert" et le bot se débrouille ensuite, donc le dresseur peut s’occuper d’autre chose de son côté).
Pour les bots automatiques le contrôle se fait à posteriori une le changement effectué, alors qu’avec un bot semi-automatique le contrôle s’effectue avant le changement. Donc généralement les bots semi-automatiques sont considérés comme plus sûres et plus fiables. V!v£ l@ Rosière /Murmurer…/ 24 juillet 2013 à 06:15 (UTC)
Merci pour tes réponses, j’ai à présent toutes les billes pour me débrouiller (au moins pour démarrer) Bisou--Titruffe (discussion) 24 juillet 2013 à 06:24 (UTC)
Hahaha je crains le pire, j’ai plutôt l’impression d’avoir été affreusement inutile et de ne t’avoir refilé que l’équivalent de 3-4 billes au maximum. ^^ Dans tout les cas bonne chance et persévère, si d’autres y arrive ça veut dire qu’on le peut également. De toute façon c’est comme tout sur le Wiktionnaire c’est en bidouillant et en expérimentant qu’on "apprend" le mieux. Mais si tu bloques sur un point technique n’hésite pas à embêter JackPotte (d · c) ou Darkdadaah (d · c) ils sont bien plus apte que moi concernant ce sujet (Bon parfois JackPotte donne des réponses un peu cabalistiques mais dans ce cas il faut juste lui demander d’être un peu plus clair et pédagogue). V!v£ l@ Rosière /Murmurer…/ 24 juillet 2013 à 07:04 (UTC)
M’enfin non voyons, le seul fait de m’avoir indiqué à qui je pouvais m’adresser sur ce sujet me servira de point de départ pour mes investigations. Tu m’as fait découvrir AWB, indiqué la page sur l’utilisation des bots. Ce n’est pas rien ! Ah oui, dernière question, à partir de combien (un ordre d’idée) de modifications en séries on peut considérer que cela floode les contributions récentes ?--Titruffe (discussion) 24 juillet 2013 à 16:56 (UTC)
Bonne question. Je dirais une modification toutes les secondes durant laps de temps assez long. Si c’est un flood ponctuel réduit dans le temps (genre durant 10 min ~ 1/2h), je pense que c’est tolérable. V!v£ l@ Rosière /Murmurer…/ 25 juillet 2013 à 15:33 (UTC)
Ça dépend si tu as le flag ou pas : sans flag, une modification toutes les 30 secondes sur une ou deux heures est déjà beaucoup trop, je me suis déjà fait engueuler pour ça ;-) — Eiku (d)
Ah bah tu vois ! Eiku sait mieux que moi. Mort de rire V!v£ l@ Rosière /Murmurer…/ 25 juillet 2013 à 16:48 (UTC)
C’est quoi le flag ? Le statut d’utilisateur de confiance ? ou un autre groupe ?--Titruffe (discussion) 25 juillet 2013 à 17:20 (UTC)
Oui le bot flag est l’équivalent du statut d’utilisateur de confiance pour un bot. En gros, c’est ce qui fait qu’il est reconnu officiellement comme un bot sûr sur le Wiktionnaire. V!v£ l@ Rosière /Murmurer…/ 25 juillet 2013 à 18:18 (UTC)
Oui, et c’est surtout le fait que ses modifications ne sont pas enregistrées dans les RC. — Unsui Discuter 25 juillet 2013 à 19:13 (UTC)

Robots et créations de pages[modifier le wikicode]

Personnellement, quand je veux créer une page par robot et que la page existe, je ne cherche pas à intégrer automatiquement ce que j'ai fait à la page existante, ça me semble trop risqué. Je préfère stocker le texte généré dans un fichier, fichier que je vais regarder régulièrement pour traiter ces cas manuellement (en faisant des copier / coller quand c'est pertinent). Lmaltier (discussion) 30 juillet 2013 à 05:47 (UTC)

Créer un bot - Discussion avec Eiku[modifier le wikicode]

Si jamais tu fais ton bot en python, j’ai publié le code source du mien : Utilisateur:Eikubot/neti.py (mais ça fait très longtemps que je ne l’ai pas utilisé, alors il se peut qu’il ne marche plus en raison de changement dans la mécanique du dialogue entre le client et le serveur). — Eiku (d) 25 juillet 2013 à 15:49 (UTC)
Une fois le compte créé pour le bot, une fois la sous-page créée et remplie avec le code, comment on lance le bot ? J’ai cru voir un bouton STOP rouge sur la page d’un bot, si on clique dessus il s’arrête je suppose ; alors s’affiche à la place un bouton START qui permet de faire repartir le bot ?--Titruffe (discussion) 25 juillet 2013 à 17:35 (UTC)
Il faut bien garder à l’esprit qu’un bot tel que le mien s’exécute sur l’ordinateur de son propriétaire, donc le code enregistré sur la sous-page n’est jamais exécuté à proprement parler : c’est un fichier .py sur mon disque dur (qui contient un code identique) que je lance. Le fonctionnement du bouton d’arrêt n’est pas très « technologique » : le bouton est un simple lien permettant à un utilisateur d’ajouter un message tel que "arrêt d’urgence" sur une page vide. Le programme lit régulièrement cette page et continue de s’exécuter tant qu’il n’y trouve pas "arrêt d’urgence". Il n’y a donc pas de bouton "redémarrage" : pour redémarrer le bot, je lance de nouveau l’exécutable sur mon ordinateur – en ayant au préalable supprimé le message "arrêt d’urgence", sans quoi il s’arrêterait immédiatement, et en ayant bien entendu résolu le problème qui a conduit un utilisateur à demander son arrêt.
Très Concrètement, si tu voulais utiliser mon bot (à supposer qu’il marche encore), il te faudrait :
  1. copier dans un fichier texte (sous Windows, par exemple, le bloc note) le contenu du code
  2. l’enregistrer et lui donner un nom en ".py"
  3. télécharger et installer python (si ce n’est déjà fait)
  4. ajouter le chemin d’accès à l’exécutable python.exe au path (je ne me souviens plus comment on fait, mais c’est facile à trouver avec Google) : cela permet de taper "python" plutôt que "C:\Endroit\où\est\installé\python\python.exe"
  5. ouvrir une invite de commande (car mon bot n’a pas d’interface graphique) dans le répertoire où est le fichier .py
  6. taper "python monrobot.py" (en fonction du nom choisi évidemment)
Ceci dit, il y a de fortes chances que des modifications du code soient nécessaires. Par exemple, je crois me souvenir que mon bot essaie de se connecter sous son compte "Eikubot" ; chez toi, ce sera un autre compte. — Eiku (d) 27 juillet 2013 à 09:11 (UTC)
Je remarque que mon message est un peu long… mais j’en rajoute une couche : voilà les types de bots :
  1. s’exécutant sur l’ordinateur de l’utilisateur et n’ayant pas le statut de bot (botflag) – pour l’avoir, il faut faire une demande sur Wiktionnaire:Bot/Statut, et sans lui, il faut limiter énormément le nombre, le type et le débit des modifications. Ça peut par exemple servir à tester certaines fonctions du bot (création automatisée de brouillons d’articles dans des sous-pages utilisateur pour vérifier que ça marche, par exemple) ;
  2. s’exécutant sur l’ordinateur de l’utilisateur et ayant le statut de bot (donc obligatoirement connecté sous son propre compte et non sous le compte de son maître), l’avantage étant qu’il a le droit de faire plus de modifications ;
  3. s’exécutant sur toolserver et ayant le statut de bot (je ne connais pas grand chose à ces bots-là, mais ils ont l’avantage de travailler plus rapidement et d’être là en permanence, contrairement à un PC qu’on éteint généralement la nuit)
J’espère que ça clarifie les choses. — Eiku (d) 27 juillet 2013 à 09:23 (UTC)
Oui c’est parfait, merci beaucoup. Ce n’est peut-être pas pour tout de suite mais ça m’aide déjà à me faire une idée de la chose. Quels sont les langages les plus appropriés selon toi pour faire un bot (pour ceux qui s’exécutent sur l’ordi personnel) ? Quel genre d’actions fait-on généralement avec un bot ?
À mon avis, the langage approprié pour ce type de bot est python pour sa relative simplicité d’installation et d’apprentissage. Perl a un rôle et des possibilités similaires. Php et Javascript peuvent aussi faire l’affaire, mais comme leurs utilisations traditionnelles sont complètement autres, ce sera plus dur pour te documenter. En fait, un très grand nombre de langages interprétés sont indiqués. Sous Windows, avec Excel installé, tu peux faire un bot en VBA qui utiliserait directement les données d’un tableur (mais pareil, ça va être dur de trouver la documentation, le principal avantage étant que l’environnement complet de développement est livré clés en main et qu’avec Excel sous le capot, on peut facilement faire un rapport d’activité du bot bien présenté).
Sinon, ce qu’on fait dépend de ce dont on a besoin. Beaucoup de bots en activité s’occupent de remplacer automatiquement des modèles anciens par des nouveaux, de faire appliquer des décisions concernant la structure des articles ou d’ajouter automatiquement des informations déductibles à 100%… C’était le cas d’Eikubot, qui a rajouté les prononciations des mots en coréen grâce à un modèle créé par Shinji et qui permet de déduire la prononciation de l’orthographe (ce qui n’est pas possible pour le français). Un bot peut également être passif : il peut se contenter de visiter les pages pour relever des fautes présumées, ou des informations intéressantes à regrouper, destinées à être relues, filtrées, analysées plus tard par le maître. Je crois que Darkdadah a par exemple un bot qui lit tous les jours tous les grands quotidiens en ligne, relève les mots absents du Wiktionnaire et les consigne dans une sous-page utilisateur (donc pas complètement passif, mais il ne touche pas aux entrées). Un exemple ici. Je trouve ça génial. Il y a aussi des bots archivistes (qui archivent des pages de discussion). Une chose à ne jamais faire : essayer d’introduire des informations automatiques quant au sens des mots (PiedBot, notamment, a fait du dégât en insérant des traductions et des synonymes). Un bot peut aussi automatiquement créer des articles à partir d’une base de donnée ayant une licence compatible avec le Wiktionnaire (par exemple, si tu as des glossaires techniques dont le format peut être adapté à celui du Wiktionnaire). Il faut garder à l’esprit qu’un bot qui touche aux articles est toujours un peu dangereux et qu’il vaut mieux en parler avant à la communauté. Un bot, c’est aussi un moyen cool et ludique d’apprendre certaines techniques de programmation (cool et ludique du moment qu’il ne fout pas le bordel). — Eiku (d) 27 juillet 2013 à 11:15 (UTC)
Perso, je fais quelque import d’article grâce à un bot que je n’ai pas programmé qui est en python et qui s’appelle pywikipedia. Je connais pas le python mais je peux te dire que le faire en PHP (que je connais par contre) c’est assez compliqué car le langage n’est pas fait pour à la base, mais c’est pas infaisable, ce sera juste un peu plus chiant qu’avec python. Ensuite omme l’a dit Eiku tu as aussi Perl, mais je rajouterai aussi Ruby qui est aussi très performant pour peu de ligne de code.--Lyokoï (discussion) 27 juillet 2013 à 11:26 (UTC)
Merci pour ces informations. Pour le moment j’ai pensé à un bot passif qui pourrait repérer les articles où il manque un tableau des flexions (ou plusieurs) (j’en vois souvent) et juste créer une liste sur une sous-page personnelle, à charge pour moi ensuite d’ajouter manuellement ces tableaux. Dans le même genre, repérer dans les tableaux des flexions s’il y en a qui n’existent pas et pareil faire la liste des pages concernées et utiliser le gadget pour ajouter les flexions de GaAs. Autre idée que j’ai eue : à partir d’une base de donnée (qui peut être un simple fichier texte) recensant les comtés par état des USA, créer pour chaque comté une page (ou ajouter une section si une page porte déjà ce nom) utilisant un même patron (avec comme paramètre le nom du comté et celui de l’état auquel il est rattaché). J’adorerais faire ce genre de chose mais il va me falloir trouver du temps pour apprendre et réaliser. Je ne connais pas (encore) python mais il ne me semble pas trop rebutant, j’ai connu pire.--Titruffe (discussion) 27 juillet 2013 à 11:40 (UTC)
Pourrais-tu me conseiller un site web didactique ainsi qu’un forum, à propos de python ?--Titruffe (discussion) 27 juillet 2013 à 16:41 (UTC)

Le cours avec lequel j’ai appris les bases était le tutoriel officiel, si tu es à l’aise avec l’anglais. Le reste vient en expérimentant (c’est très facile d’expérimenter). Sinon, je recommande le cours en français de Gérard Swinen (Python3 est un peu différent de Python2 mais tu devrais t’y retrouver). Cela fait très longtemps que je ne suis pas allé poser de questions sur un forum de programmeurs car la plupart du temps, mes problèmes ont été résolus sur IRC (freenode). Juste pour t’avertir : il y a longtemps, j’ai très mal pris la plaisanterie d’un utilisateur du salon francophone (un lien qui faisait planter l’ordinateur, je passe les détails, alors que d’ordinaire on se concentre sur les problèmes de python), mais sur les questions techniques, on peut leur faire confiance. Le salon anglophone est plus sérieux (pas de risque de blague fine dans ce genre) et tout aussi bon. Si tu préfères les forums, developpez.com est très bon (j’y ai été) et le site du Zéro est bien, d’après un cousin à moi. — Eiku (d) 27 juillet 2013 à 17:32 (UTC)