Manuel:Créer un robot
Cet article est basé sur la Création d'un bot de la Wikipedia anglaise et a été synchronisé pour la dernière fois en octobre 2022. |
Les robots MediaWiki ou simplement bots sont des processus automatiques qui interagissent avec Wikipedia (et d'autres projets Wikimedia) comme s'ils étaient des éditeurs humains. Cette page explique comment mener à bien le développement d'un bot pour une utilisation sur les projets Wikimedia et une grande partie est transférable à d'autres wikis basés sur MediaWiki. L'explication s'adresse principalement à ceux et celles qui ont déjà une certaine expérience de la programmation, mais qui ne savent pas comment appliquer ces connaissances à la création d'un robot MediaWiki.
Pourquoi créer un robot ?
Les bots peuvent automatiser des tâches et les exécuter beaucoup plus rapidement que les humains. Si vous avez une tâche simple que vous devez exécuter plusieurs fois (par exemple, ajouter un même modèle à toutes les pages d'une catégorie qui en comporte 1 000), alors c'est une tâche plutôt pour un robot qu'un humain.
Considérations avant de créer un robot
Réutiliser les robots existants
Il est souvent beaucoup plus simple de demander une tâche à un bot existant. Si vous n'avez que des demandes périodiques ou si vous n'êtes pas à l'aise avec la programmation, c'est généralement la meilleure solution. Certains wikis ont une page dédiée où l'on peut faire de telles demandes. Il existe aussi un certain nombre d'outils à la disposition de tous et toutes. La plupart d'entre eux prennent la forme de navigateurs web améliorés avec des fonctionnalités spécifiques à MediaWiki. Le plus populaire d'entre-eux est Project:AutoWikiBrowser (AWB), un navigateur conçu spécialement pour aider à l'édition de Wikipedia et les autres projets Wikimedia. Une liste complète des outils se trouve à w:Wikipedia:Tools/Editing tools sur la Wikipédia anglaise. Les outils, tels que AWB, peuvent souvent être utilisés avec peu ou pas de connaissances en programmation.
Réutiliser la base de code
Si vous décidez de créer votre propre bot en raison de la fréquence ou de la nouveauté de vos besoins, vous n'avez pas besoin d'en écrire un en partant de zéro. De nombreux bots publient leur code source, qui peut parfois être réutilisé avec un peu de temps de développement supplémentaire. Il existe également un certain nombre de modèles de bots standard disponibles au téléchargement. Ces modèles comprennent la grande majorité du code d'un bot. Comme ces modèles de bots sont couramment utilisés, que le codage complexe a déjà été effectué par d'autres personnes et qu'il a été largement testé, il est beaucoup plus facile de faire approuver l'utilisation de ses robots en se basant sur ces exemples. Le plus populaire et commun de ces environnements est Pywikibot (PWB), un environnement pour robots écrit en Python. Il est bien documenté et testé, et de nombreux scripts Pywikibot standardisés (instructions de robot) sont déjà disponibles. D'autres exemples d'environnements de robots se trouvent ci-après. Pour certains de ces environnements de robots, comme PWB, une connaissance générale des scripts est tout ce qui est nécessaire pour exécuter le robot avec succès (il est important de mettre à jour ces environnements régulièrement).
Questions importantes
Écrire un nouveau robot nécessite une capacité de programmation importante. Un robot entièrement nouveau doit subir des tests substantiels avant d'être approuvé pour une utilisation régulière. La planification est essentielle pour obtenir un programme sans erreur, efficace et bien construit. Les considérations initiales suivantes sont importantes :
- Le robot sera-t-il assisté manuellement ou entièrement automatisé ?
- Vous allez créer le robot seul ou avec l'aide d'autres programmeurs ?
- Quel langage sera utilisé pour mettre en œuvre le robot ?
- Est-ce que les requêtes faites par le robot, les modifications ou les autres actions qu'il a faites seront enregistrées ? Si oui, les journaux seront-ils stockés sur des médias locaux ou sur des pages du wiki ?
- Le robot fonctionnera-t-il dans un navigateur web (par exemple, écrit en JavaScript), ou sera-t-il un programme indépendant ?
- Si le robot est un programme indépendant, va-t-il s'exécuter sur votre ordinateur local ou sur un serveur distant tel que Toolforge ?
- Si le robot fonctionne sur un serveur distant, est-ce que d'autres éditeurs pourront l'exploiter ou le démarrer ?
Comment fonctionne un robot MediaWiki ?
Aperçu des opérations
Tout comme un humain un robot MediaWiki qui fait une modification lit les pages du wiki et modifie là où il pense que c'est nécessaire. La différence est que, bien que les robots soient plus rapides et moins enclins à la fatigue que les humains, ils ne sont pas aussi brillants que nous. Les robots sont bons pour des tâches répétitives qui ont des modèles facilement définis, où peu de décisions doivent être prises.
Dans le cas le plus typique, un robot se connecte à son propre compte et demande des pages du wiki de la même manière qu'un navigateur le fait – bien qu'il n'affiche pas la page à l'écran, mais travaille sur elle en mémoire – puis examine programmatiquement le code de la page pour voir si des modifications doivent être apportées. Ensuite il fait et soumet les modifications pour lesquelles il a été conçu, à nouveau de la même manière qu'un navigateur le fait.
Parce que les robots accèdent aux pages de la même manière que nous, les robots peuvent rencontrer le même genre de difficultés que des utilisateurs humains. Ils peuvent être pris dans des conflits d'édition, voir expirer le temps d'attente sur une page ou rencontrer d'autres complications inattendues durant la demande de page ou la réalisation des modifications. Parce que le volume de travail effectué par un bot est plus grand que celui effectué par une personne vivante, le robot est plus susceptible de rencontrer ces problèmes. Ainsi il est important de prendre en compte ces situations lorsque vous concevez un robot.
APIs pour les robots
Pour apporter des modifications aux pages wiki, un robot doit nécessairement récupérer les pages du wiki et renvoyer les modifications. Il existe plusieurs interfaces de programmation d'application (API) disponibles à cet effet.
- API Action de MediaWiki (api.php). Ce service web a été spécifiquement écrit pour permettre aux processus automatisés tels que les robots de faire des requêtes et de poster des modifications. Les données reviennent au format JSON (voir les formats de sortie pour plus de détails).
- Etat : Fonction intégrée de MediaWiki, disponible sur tous les serveurs Wikimedia. D'autres wikis non Wikimedia peuvent désactiver ou restreindre l'accès en écriture.
- Il existe aussi un bac à sable de l'API pour vous exercer à tester les fonctionnalités de api.php.
- Special:Export peut être utilisé pour obtenir un export en masse des pages de contenu au format XML. Voir Manual:Parameters to Special:Export pour les arguments;
- Etat : Fonction intégrée de MediaWiki, disponible sur tous les serveurs Wikimedia.
- Traitement de la page à plat (wikicode) : l'envoi d'une requête
action=raw
ou GETaction=raw&templates=expand
à index.php fournira le code source du wikicode non traité de la page. Par exemple :https://en.wikipedia.org/w/index.php?title=Help:Creating_a_bot&action=raw
.
Une requête API avec :ou :api.php?est approximativement équivalente et permet de récupérer des informations supplémentaires.action=query& titles=Help:Creating_a_bot& prop=revisions& rvprop=content& rvexpandtemplates=1 [Essayez !] - Etat : Fonction intégrée de MediaWiki, disponible sur tous les serveurs Wikimedia.
Certains serveurs web sont configurés pour répondre aux requêtes de contenus compressés (gzip). Cela peut être fait en incluant une ligne "Accept-Encoding: gzip" dans l'entête de la requête HTTP; si l'entête de réponse HTTP contient "Content-Encodation: gzip", le document reçu est au format gzip, sinon, il est au format standard non compressé. Notez que cela est spécifique au serveur web et non pas au logiciel MediaWiki. Il est possible que d'autres sites qui utilisent MediwWiki ne disposent pas de cette fonctionnalité. Si vous utilisez un environnement de robots existant, il doit gérer les opérations de bas niveau comme celle-ci.
Connexion
Les robots approuvés doivent être connectés pour effectuer des modifications. Bien qu'un robot puisse faire des demandes de lecture sans se connecter, les robots qui ont déjà été testés doivent se connecter pour toutes les activités. Les robots connectés à partir d'un compte qui a la marque bot (voir la section Balise 'bot' ci-dessous) peuvent obtenir plus de résultats par requêtede l'API Mediawiki (api.php). La plupart des environnements de robots doivent gérer automatiquement les cookies et les connexions, mais si vous n'utilisez pas d'environnement existant, vous devrez suivre ces étapes.
Pour des raisons de sécurité, les données de connexion doivent être passées en utilisant la méthode POST HTTP. Parce que les paramètres des requêtes HTTP GET sont facilement visible dans l'URL, les connexion via GET sont désactivées.
Pour connecter un robot à l'aide de l'API MediaWiki, il faut faire 2 requêtes :
Requête 1 – c'est une requête GET pour obtenir un jeton de connexion
Ceci rendra un paramètre logintoken au format JSON, tel que documenté à API:Authentification . D'autres formats de sortie sont disponibles. Il renverra également les cookies HTTP comme décrit ci-dessous.
Requête 2 – c'est un POST qui finalisera la connexion
- URL:
https://en.wikipedia.org/w/api.php?action=login&format=json
- Paramètres du POST :
lgname=BOTUSERNAME
lgpassword=BOTPASSWORD
lgtoken=TOKEN
où TOKEN est le jeton du résultat précédent. Les cookies HTTP de la requête précédente doivent également être transmis avec la deuxième demande.
Une tentative de connexion qui a réussie fera que le serveur Wikimedia va déclarer plusieurs cookies HTTP. Le robot doit enregistrer ces cookies et les renvoyer à chaque fois qu'il fait une demande (c'est particulièrement important pour modifier). Sur la Wikipedia anglaise par exemple, les cookies suivants doivent être utilisés : enwikiUserID, enwikiToken, et enwikiUserName. Le cookie enwikisession est actuellement nécessaire pour envoyer une modification ou pour valider une modification particulière, faute de quoi vous recevrez le message d'erreur MediaWiki:Session fail preview .
L'accès au compte principal via action=login
est obsolète et peut cesser de fonctionner sans préavis.
Pour continuer à utiliser le code du robot pour se connecter avec action=login
, voir Special:BotPasswords.
Modifications et jetons d'édition
MediaWiki utilise un système de jetons d'édition pour modifier les pages MediaWiki, et pour les autres opérations qui modifient le contenu existant comme les rollback. Le jeton est composé d'une chaîne hexadécimale suivie de +\, par exemple :
- d41d8cd98f00b204e9800998ecf8427e+\
Le rôle des jetons de modification est d'empêcher de détourner le processus d'édition, lorsque les utilisateurs sont trompés quand ils font en cliquant sur un lien unique.
Le processus de modification comporte deux requêtes HTTP. Une première requête demande un jeton de modification. Puis la seconde requête HTTP envoie le nouveau contenu de la page avec le jeton de modification qui a été reçu par la première. Il n'est pas possible de faire une modification dans une même requête HTTP. Le jeton de modification reste le même pendant toute la durée d'une session connectée, de sorte que le jeton de modification doit être récupéré une seule fois et peut être utilisé pour toutes les modifications ultérieures.
Pour obtenir un jeton de modification, suivez ces étapes :
- API MediaWiki (api.php). Créer une requête avec les paramètres suivants (voir Special:MyLanguage/API:Edit - Create&Edit pages).
action=query
meta=tokens
Le jeton sera renvoyé dans l'attribut
edittoken
de la réponse.
Si le jeton d'édition reçu par le robot ne comporte pas de chaîne hexadécimale (par exemple il vaut '+\') alors le robot n'est généralement pas connecté. Cela peut être dû à plusieurs facteurs : une défaillance de l'authentification avec le serveur, une connexion abandonnée, un temps de pause excessif ou une erreur dans le stockage ou le renvoi des cookies corrects. Si ce n'est pas à cause d'une erreur de programmation, il suffit de vous reconnecter pour rafraîchir les cookies de connexion. Les robots doivent utiliser les assertions pour être sûrs d'être connectés.
Conflits d'édition
Les conflits de modification se produisent lorsque plusieurs tentatives de modification concurrentes sont faites sur la même page. Presque chaque robot sera probablement impliqué dans un conflit d'édition d'un type donné ou d'un autre; c'est pourquoi il doit implémenter un mécanisme pour détecter cette situation et corriger le problème.
Les robots qui utilisent l'API Mediawiki (api.php) doivent récupérer le jeton d'édition avec le starttimestamp
et l'horodatage de base de la dernière révision, avant de charger le texte de la page à préparer pour la modification; prop=info|revisions
peut être utilisé pour récupérer à la fois le jeton ainsi que le contenu de la page en une seule requête. Exemple :
Lors de la soumission de la modification, définissez les attributs starttimestamp
et basetimestamp
et vérifiez les réponses du serveur sur les erreurs signalées.
Pour plus de détails, voir API:Edit - Create&Edit pages .
En général, si une modification échoue avant de se terminer, le robot doit vérifier la page à nouveau avant de tenter une nouvelle modification, afin de s'assurer que la modification est toujours d'actualité. Ultérieurement si un robot vérifie à nouveau une même page pour refaire une modification, il doit faire attention pour éviter toute action pouvant conduire à une boucle infinie ou un comportement similaire (Querelle d'édition).
Aperçu du processus de développement d'un robot
Actuellement le codage ou l'écriture d'un robot n'est qu'une partie de son développement.
Le cycle de développement ci-dessous est une recommandation de la Wikipédia anglaise.
Sur les wikis Wikimedia, assurez-vous que votre robot suit les politiques potentielles du wiki.
L'idée
- La première tâche dans la création d'un robot MediaWiki est de lister ses exigences ou d'arriver avec une idée.
- Assurez-vous qu'un robot existant ne fait pas déjà ce que vous pensez que le votre devrait faire.
Spécifications
- La spécification est la tâche qui décrit précisément le logiciel à écrire, éventuellement de manière formelle. Vous devez faire une proposition détaillée de ce que vous voulez qu'il fasse. Essayez de discuter de cette proposition avec certains rédacteurs et de l'affiner en fonction des commentaires rerçus. Même une bonne idée peut être améliorée en incorporant les idées des autres rédacteurs.
- Dans la forme la plus élémentaire, votre robot spécifié doit répondre aux critères suivants :
- Le robot est inoffensif (il ne doit pas faire de modifications qui pourraient être considérées comme perturbantes pour le bon fonctionnement du wiki)
- Le robot est utile (il fournit un service utile plus efficacement qu'un éditeur humain ne le pourrait)
- Le robot de gaspille pas les ressources du serveur.
Architecture du logiciel
- Penser à la manière dont vous pourrier le créer et quel(s) langage(s) de programmation et outils vous pourriez utiliser. L'architecture est concernée en s'assurant que le système logiciel satisfera les exigences du produit tout en laissant la possibilité de prise en compte les besoins à venir. Certains langages de programmation conviennent mieux à certaines tâche qu'à d'autres, pour plus de détails voir la section sur les langages de programmation ci-après.
Implémentation
L'implémentation (ou codage) signifie que l'architecture choisie et les différentes phases sont traduites en code. C'est peut-être la partie la plus évidente du travail d'ingénieur logiciel, mais ce n'est pas nécessairement la plus importante. Pour l'étape d'implémentation vous devez :
- Créer un compte pour votre robot. Aller à la page de connexion lorsque vous serez connecté afin de créer le compte et le lier au votre. (Si vous ne créez pas le compte du robot pendant votre connexion, il peut être bloqué sur certains wikis en fonction de leurs politiques)
- créer une page utilisateur pour votre robot. Les modifications de votre robot ne doivent pas être faites sous votre propre compte. Votre robot aura besoin de son propre compte avec son propre nom d'utilisateur et mot de passe.
- Ajoutez les mêmes informations à la page utilisateur du robot. Il serait bien d'ajouter un lien à la page d'approbation (approuvé ou pas) pour chaque fonction.
- Coder votre robot dans le langage de programmation de votre choix.
Tests
Une bonne façon de tester votre robot en cours de développement est qu'il montre les modifications (le cas échéant) qu'il aurait apportées à une page, plutôt que de la modifier directement sur le wiki. Certain environnements de robot (comme Pywikibot) disposent de méthodes précodées permettant d'afficher les diff.
Documentation
Une tâche importante (et souvent sous-estimée) est de documenter l'architecture interne de votre robot pour la maintenance et les développements à venir. Ceci est particulièrement important si vous allez permettre que votre robot soit cloné. Dans l'idéal, vous devriez fournir le code source de votre robot sur sa page utilisateur ou dans un système de contrôle de version (voir la section Robots à source ouvert) si vous permettez que d'autres utilisateurs en fassent des clones. Ce code doit être bien documenté (généralement par des commentaires) pour en faciliter l'utilisation.
Requêtes et remarques
Vous devez être prêt à répondre aux questions ou aux objections à propos de votre robot sur votre page de discussion utilisateur, surtout s'il fonctionne dans un domaine potentiellement sensible.
Maintenance
Maintenir et étendre votre robot pour corriger les nouveaux bogues trouvés ou implémenter les nouvelles demandes peut nécessiter beaucoup plus de temps que celui consacré initialement au développement du logiciel. Non seulement il peut être nécessaire d'ajouter du code qui diverge de la conception originale, mais déterminer comment le logiciel fonctionne à un moment donné après qu'il soit terminé peut nécessiter un effort important (et c'est une autre raison de documenter le code au fur et à mesure que vous progressez).
Règles générales pour exécuter un robot
En plus des politiques officielles concernant les robots couvrant les points principaux à considérer lorsque vous développez votre robot, il y a un certain nombre de conseils plus généraux à prendre en compte lors du développement.
Meilleures pratiques avec les robots
- Définissez un entête d'agent utilisateur pour votre robot (conformément aux règles sur les agents utilisateur de Wikimedia, si votre robot va travailler sur les wikis Wikimedia). Si vous ne le faites pas, votre robot pourra rencontrer des erreurs et finir par être bloqué au niveau du serveur.
- Utiliser le paramètre maxlag avec une latence maximale de 5 secondes. Ceci permet au robot de s'exécuter rapidement lorsque la charge du serveur est faible et d'être limité quand celle-ci devient trop forte.
- Si vous exécutez un robot dans un environnement qui ne supporte pas maxlag, limitez le nombre total de requêtes (lectures + écritures) à un maximum de 10 par minnute.
- Utiliser l'API MediaWiki partout où c'est possible et alignez les limites des requêtes sur les valeurs maximales permises par le serveur afin de minimiser le nombre total de requêtes à exécuter.
- Les requêtes de modification (écritures) sont plus coûteuses en temps d'exécution du serveur que les demandes de lecture. Réduisez les modifications et écrivez votre code de sorte à ce que les modifications soient minimales.
- Essayez de consolider les modifications. Une grosse modification est préférable en taille à 10 modifications plus petites.
- Autorisez les connexions HTTP permanentes ainsi que la compression dans la bibliothèque de votre client HTTP si c'est possible.
- Ne générez pas des requêtes qui utilisent plusieurs threads. Attendez de recevoir la réponse du serveur avant d'envoyer une autre requête
- Revenez en arrière après avoir reçu des erreurs du serveur. Les erreurs telles que le débordement de la temporisation d'attente indiquent souvent une surcharge du serveur. Utiliser une séquence progressive de temps d'attente croissants entre chaque requête répétée.
- Utiliser les assertions pour vérifier que votre robot est connecté.
- Testez votre code soigneusement avant de faire de grandes opérations automatiquement. Passez en revue individuellement chaque modification lors des essais pour vérifier qu'elle est parfaite.
Fonctionnalités communes des robots que vous devriez implémenter
Assistance manuelle
Si votre robot fait quelque chose qui nécessite un jugement ou une évaluation du contexte (par exemple, la correction de l'orthographe), alors vous devez envisager de faire un robot manuellement assisté, ce qui signifie qu'un humain vérifie toutes les modifications avant qu'elles soient enregistrées. Ceci réduit de manière significative la vitesse du robot mais également le nombre d'erreurs.
Désactivation du robot
Il est bon que la politique des robots ait une fonctionnalité permettant de désactiver le fonctionnement du robot à la demande.
Rappelez-vous que si votre robot se comporte mal, il vous appartient de corriger les dégradations.
Vous pouvez demander au robot de refuser de s'exécuter si un message a été déposé sur sa page de discussion, en supposant que le message soit une plainte contre ses activités; cela peut être vérifié à l'aide de la requête d'API meta=userinfo
. Exemple sur la Wikipedia anglophone :
Ou vous pourriez avoir une page qui désactivera le robot si le texte de la page est modifié (par exemple, exiger que la page soit vide, ou qu'elle ne contienne que le mot Vrai, ou quelque chose de similaire); cela peut être vérifié en chargeant le contenu de la page avant chaque modification.
Signature
Tout comme nous, si votre robot modifie une page de discussion dans MediaWiki, il doit signer son article avec quatre tildes (~~~~). Les signatures n'ont de signification habituellement uniquement dans les espaces de noms de discussion.
Marque 'bot'
Les modifications des robots sont visibles sur Special:RecentChanges, sauf si elles sont balisées pour indiquer un bot.
Une fois que le robot a été approuvé et qu'il a reçu son drapeau avec les droits de robot, vous pouvez ajouter bot=True
dans l'appel à l'API - voir API:Edit pour masquer les modifications du robot dans Special:RecentChanges.
En Python, si vous utilisez mwclient ou wikitools et ajoutez Bot=True à la commande de modification ou d'enregistrement, la modification sera définie comme une modification de robot - par exemple
PageObject.edit(text=pagetext, bot=True, summary=pagesummary)
Gérer l'état 'bot'
Si le robot est entièrement automatisé et effectue des modifications régulières, vous devez vérifier périodiquement qu'il fonctionne toujours comme spécifié, et que son comportement n'a pas été changé suite à d'éventuelles modifications logicielles.
Robots à source ouvert
Beaucoup de dresseurs de robots choisissent de rendre leur code source ouvert, et cela peut éventuellement être demandé avant l'approbation des robots particulièrement complexes. Rendre votre code source ouvert présente plusieurs avantages :
- Il permet aux autres utilisateurs de vérifier votre code pour les bogues potentiels. Comme pour la prose, il est souvent difficile à l'auteur du code de se relire de manière objective.
- Les autres développeurs peuvent utiliser votre code pour créer leurs propres robots. Un programmeur, nouveau dans le domaine des robots, peut utiliser votre code comme exemple ou comme modèle pour écrire ses propres robots.
- Cela encourage les bonnes pratiques de sécurité plutôt que la sécurité grâce à l'obscurité du sujet.
- Si vous quittez le projet, cela permet aux autres utilisateurs d'exécuter les tâches de votre robot sans avoir à écrire de nouveau code.
Le code à source ouvert, bien que rarement requis, est généralement encouragé en fonction de la nature ouverte et transparente des wikis, bien qu'il y ait certains cas où le code ne devrait pas être rendu public. Par exemple le code ouvert de la recherche de proxy ProcseeBot pourrait être utilisé à des fins malhonnêtes sur d'autres sites.
Rendre le code à source ouvert peut demander un travail supplémentaire au codage. Il faut s'assurer que les informations sensibles telles que les mots de passe sont séparées dans un fichier distinct qui n'est pas rendu public.
Il existe plusieurs options disponibles pour les utilisateurs qui souhaitent ouvrir leur code. Certains utilisateurs choisissent de mettre le code dans une sous-page de l'espace utilisateur du robot, bien que cela puisse être un problème pour la maintenance si ce n'est pas automatisé et entraîne le fait que le code soit sous plusieurs licences (sous les termes de licence du wiki en plus de tous les autres termes que vous pourriez spécifier). Une autre solution est d'utiliser un système de contrôle des révisions tel que SVN, Git ou Mercurial. Wikipedia contient des articles qui comparent les différentes options logicielles et les sites web pour l'hébergement du code; la plupart sont gratuits. Wikimedia offre également l'hébergement d'un dépot Git pour le code de ses utilisateurs ainsi que l'exécution des outils logiciels liés à Wikimedia via les Services du cloud Wikimedia.
Langages de programmation et bibliothèques
- Voir aussi : API:code client
Les robots peuvent être écrits dans presque tous les langages de programmation. Le choix d'un langage de programmation dépend souvent de l'expérience du programmeur de robot (quels langages lui sont familiers) ou de la disponibilité des bibliothèques prédéveloppées qu'il va utiliser pour effectuer la tâche souhaitée. La liste suivante comprend certains langages qui ont des bibliothèques prévues pour aider aux tâches avec des robots.
Awk
- Environnement et bibliothèques : BotWikiAwk
- Exemple de robots dans le compte GitHub de User:GreenC sur GitHub
Perl
S'il se trouve sur un serveur web, vous pouvez exécuter votre programme et agir sur lui pendant son exécution via l'Interface commun de passerelle (CGI) à partir de votre navigateur web. Si votre fournisseur de services internet vous fournit un espace Web, il y a de fortes chances que vous ayez accès à une version Perl construite sur le serveur web à partir de laquelle vous pouvez exécuter vos programmes Perl.
Bibliothèques :
- MediaWiki::API – Interface de base de l'API, permettant aux scripts d'automatiser l'édition et l'extraction de données à partir de sites basés sur MediaWiki.
- MediaWiki::Bot – Un environnement de robot MediaWiki assez complet écrit en Perl. Il offre un niveau d'abstraction plus élevé que MediaWiki::API. Les greffons fournissent des fonctionnalités d'administrateur et de steward. Non pris en charge actuellement.
PHP
PHP peut aussi être utilisé pour programmer les robots. Les développeurs MediaWiki connaissent déjà PHP, car c'est le langage dans lequel MediaWiki et ses extensions sont écrites. PHP est particulièrement un bon choix si vous souhaitez fournir une interface basée sur des formulaires web à votre robot. Par exemple, supposons que vous souhaitiez créer un robot pour renommer les catégories. Vous pouvez créer un formulaire HTML dans lequel vous tapez les noms actuels et ceux souhaités d'une catégorie. Quand le formulaire est soumis, votre robot peut lire ces entrées, puis modifier tous les articles de la catégorie actuelle et leur affecter la catégorie souhaitée. (Évidemment, tout robot avec une interface de formulaire doit être sécurisé d'une manière ou d'une autre pour se prémunir des navigateurs web aléatoires).
Le tableau des fonctions PHP de robot de la Wikipedia anglaise peut fournir certaines indications sur les capacités des principaux environnements de robots.
Audience[php 1] | Nom | Version PHP | Dernière maj | Utilise l'API[php 2] | Exclusion possible | Fonctions admin | Greffons | Dépôt | Notes |
---|---|---|---|---|---|---|---|---|---|
Cyberpower678, Addshore, and Jarry1250 | Peachy | 5.2.1 | 2015 | oui | oui | oui | oui | GitHub | Environnement de grande taille, actuellement en cours de réécriture. La documentation n'existe pas actuellement, donc contactez w:User:Cyberpower678 pour toute aide. |
Addshore | mediawiki-api-base | 7.4+ | 2021 | oui | N/A | N/A | extra libs | GitHub | Bibliothèque de base pour l'interaction avec l'API de Mediawiki, fournit les moyens de gérer la connexion, la déconnexion et la gestion des jetons ainsi que l'obtention et la publication de requêtes facilement. |
Addshore | mediawiki-api | 7.4+ | 2021 | oui | non | some | extra libs | GitHub | Construit par dessus mediawiki-api-base, ajoute des services plus avancés pour l'API tels que RevisionGetter, UserGetter, PageDeleter, RevisionPatroller, RevisionSaver etc. |
Kaspo | Phpwikibot | Inconnu | 2009 | Partiel | non | non | non | Google Code | Utilise une classe unique. |
Jarry1250 | Wikibot | 5 | 2009 | oui | oui | non | non | enwiki | Utilisé uniquement par LivingBot. C'est un fork de Phpwikibot. Utilise une classe unique. |
Foxy Loxy | PHPediaWiki | 5 | 2009 | oui | non | oui | non | SourceForge | C'est un fork de SxWiki |
Nzhamstar, Xymph, Waldyrious | Wikimate | 5.3-5.6, 7.x, 8.x |
2023 | oui | non | non | non | GitHub | Supporte le contenu de l'article principal et les fichiers. Authentification, vérification de l'existence des pages, lecture et modification des pages ou des sections. Fournir les informations sur les fichiers, téléchargement et téléversement de fichiers. Vise à être utilisé facilement. |
Kaleb Heitzman | MediaWIkiBot | 5 | 2012 | oui | non | non | non | GitHub | Supporte l'API complète y compris le téléversement et l'importation. Prend en charge également Semantic MediaWiki. Classe unique qui crée des méthodes dynamiques pour travailler avec tous les appels à l'API. |
Edward Z. Yang | Wikipedia Bot in PHP | Inconnu | 2005 | non | non | non | non | enwiki | Code source probablement désuet |
Cobi | wikibot.classes | 5 | 2010 | oui | oui | non | non | enwiki | Utilisé par plusieurs gros robots (par exemple ClueBot et SoxBot). Utilise plusieurs classes. |
Valerio Bozzolan | boz-mw | 5.6 | 2019 | oui | N/A | oui | extra libs | GitHub | Orienté objet. Plus de 80 classes pour gérer Wikidata. Documentation en ligne. Gère le téléversement. |
Python
Python est un langage interprété populaire avec des fonctionnalités orientées objet.
- Bibliothèques
- Aidez-nous à mettre à jour ce tableau svp.
Audience[py 1] | Nom | Version Python | Dernière maj | Utilise l'API[py 2] | Exclusion possible | Fonctions admin | Greffons | Dépôt | Notes |
---|---|---|---|---|---|---|---|---|---|
xqt | Pywikibot | Python 3.7 ou supérieur or PyPy | 2023 | oui | oui | oui | oui |
L'environnement de robot Python le plus utilisé. Il inclut les scripts prêts à l'emploi. | |
Myst | WikibaseIntegrator | Python 3.7 or higher | 2022 | oui | Not applicable | oui | non | GitHub | Uniquement pour interagir avec des instances de Wikibase comme Wikidata |
Mr.Z-man | wikitools | 2 | 2016 | GitHub | Incompatible avec Python 3. (téléversements) | ||||
Bryan | mwclient | 2021 | GitHub | Un environnement basé sur l'API | |||||
The Earwig | mwparserfromhell | 2021 | GitHub | Un analyseur syntaxique Python pour le texte MediaWiki |
Microsoft .NET
Microsoft .NET est un ensemble de langages comprenant C#, C++/CLI, Visual Basic .NET, J#, JScript .NET, IronPython et Windows PowerShell. L'environnement de développement intégré Microsoft Visual Studio est souvent utilisé, ainsi que les versions gratuites de Microsoft Visual Studio Express. En utilisant Mono Project, les programmes .NET peuvent aussi s'exécuter sous Linux, Unix, BSD, Solaris et Mac OS X tout comme sous Windows.
Bibliothèques :
- DotNetWikiBot Framework – une API cliente de fonctions complètes sous .NET, qui permet de construire facilement des programmes et des robots web pour gérer l'information sur les sites propulsés par MediaWiki. Traduit maintenant en plusieurs langues. Une documentation compilée détaillée est également disponible en anglais.
- WikiFunctions .NET library – Fourni avec AWB, c'est une bibliothèque qui contient du matériel utile pour les robots, comme la génération de listes, le chargement et la modification d'articles, la connexion au canal IRC des modifications récentes et plus.
Java
Les programmes Java sont généralement développés à l'aide d'un IDE tel que Eclipse ou NetBeans; le développement à l'aide de la console en mode ligne de commande est également possible (voir javac et les programmes java).
Bibliothèques :
- Java Wiki Bot Framework – Un environnement Java pour les robots de wiki
- wiki-java – Un environnement Java en un seul fichier pour les robots de wiki
- WPCleaner – Bibliothèque utilisée par l'outil WPCleaner
- jwiki – Un environnement Java simple et facile à utiliser pour les robots de wiki
JavaScript (Node.js)
JavaScript est un langage de script utilisé principalement sur les pages web, et les scripts utilisateur ajoutés à vos pages vector.js ou monobook.js. En utilisant Node.js il est possible d'utiliser JavaScript côté serveur, tout comme pour le développement de robots.
- Aidez-nous à mettre à jour ce tableau svp.
Audience[js 1] | Nom | Version Nodejs | Dernière maj | Utilise l'API[js 2] | Exclusion possible | Fonctions admin | Package | Dépôt | Notes |
---|---|---|---|---|---|---|---|---|---|
SD0001 | mwn | 10+ | 2021 | oui | oui | oui | npm | GitHub | Grande bibliothèque avec des classes pour travailler avec les titres de page et le wikicode. Fonctionne également avec TypeScript. API basée sur les promesses (async –await ). Possibilités limitée d'analyse syntaxique du wikicode.
|
kanashimi | wikiapi | 0.10–15.x | 2021 | oui | oui | Partiel | npm | GitHub | API JavaScript MediaWiki pour node.js avec l'ECMAScript 2016 moderne async –await et un analyseur syntaxique de wikicode.
|
MediaWiki module | 2014 | GitHub | Fournit un environnement de requêtes standard (comme la connexion, la déconnexion, etc.) ainsi qu'une méthode conteneur générale pour l'API de MediaWiki API avec des limitations. Le module peut également être ajouté à votre page .js de Wikimedia et utilisé comme bibliothèque pour les appels JS sur le wiki. |
Ruby
Ruby est un langage de programmation populaire, dynamique, orienté objet.
Bibliothèques :
- MediaWiki::Butt - Environnement Ruby pour l'API en développement actif. Testé avec des versions aussi actuelles que CurseGamepedia l'est.
- mediawiki/ruby/api, Bibliothèque Ruby du client de l'API. Dernière mise à jour en décembre 2017, n'est plus maintenu mais fonctionne encore.
- MediaWiki::Gateway – Environnement Ruby pour l'API. Dernière mise en janvier 2016. Il n'est plus en développement actif, testé jusqu'à MediaWiki 1.22, compatible avec les wikis Wikimedia. Fonctionnement actuel non confirmé.
- wikipedia-client - Environnement Ruby utilisant l'API. Dernière mise à jour en mars 2018. Fonctionnement actuel non confirmé.
Common Lisp
- CL-MediaWiki implemente l'API MediaWiki en tant que package Common Lisp. Il est envisagé d'utiliser JSON comme format de demande des données. Prend en charge maxlag et les assertions.
Haskell
VBScript
VBScript est un langage de script basé sur le langage de programmation Visual Basic. Il n'existe pas d'environnements de robot publiés pour VBScript, mais certains exemples de robots qui l'utilisent peuvent être vus ci-dessous :
Exemples :
- w:User:Smallman12q/Scripts/cleanuplistingtowiki (2013) - Se connecter et fournir un aperçu de la modification
- w:User:Smallman12q/VBS/Savewatchlist (2012) - Connexion, fournit la liste de suivi brute, enregistre les fichiers, déconnexion, ferme Internet Expolorer
- w:Commons:User:Smallbot#Sources - Plusieurs scripts montrant l'utilisation de VBScript (JavaScript, XMLHTTP, MSHTML, XMLDOM, COM) pour le téléversement par lots.
Bash
Bash est un shell Unix.
- Voir API:Client_code/Bash . Nécessite le package cURL.