Wikipédia:Créer un bot

Un article de Wikipédia, l'encyclopédie libre.

Les robots ou bots sont des contributeurs particuliers à Wikipédia puisqu’ils interagissent selon des processus automatiques ou semi-automatiques. Cet article vous expliquera comment dresser votre propre bot pour l’utiliser sur Wikipédia.

Sommaire

[modifier] Pourquoi créer un bot ?

Les bots permettent d’automatiser des tâches répétitives et de les exécuter beaucoup plus rapidement qu’un humain. Si vous avez régulièrement besoin de réaliser des tâches répétitives (ajout d’un modèle, par exemple "bandeau portail" à toutes les pages d’une catégorie), il est plus adapté de les exécuter à l’aide d’un bot.

[modifier] Est-ce que je dois créer un bot moi-même ?

Cette page d'aide est plus particulièrement destinée à ceux qui ont une certaine expérience de la programmation mais ne sont pas sûrs de la façon d'appliquer ces connaissances à la création d'un bot Wikipédia.

Si cette expérience vous manque, mieux vaut faire appel aux bots existants. Des dresseurs expérimentés sauront traiter vos demandes (adaptation de bots, exécution de requêtes particulières) et sauront vous conseiller.

Sachez aussi que vous pouvez aussi utiliser un logiciel semi-automatique comme Auto-Wiki Browser.

Si vous voulez néanmoins essayer de créez votre propre bot, alors cet article est pour vous.

Note : Si vous n'avez aucune expérience préalable de la programmation, sachez que l'apprentissage d'un langage de programmation n'est pas trivial. Néanmoins, ce n'est pas de la magie noire ; vous y arriverez avec suffisamment de temps et de travail.

[modifier] Comment fonctionne un bot sur Wikipédia ?

[modifier] Vue d’ensemble

À l’instar d’un éditeur humain, un bot peut lire le contenu de Wikipédia, prendre des décisions en fonction du contenu et, le cas échéant, calculer les modifications puis modifier le contenu de Wikipédia. Toutefois, les ordinateurs sont plus efficaces que l'homme pour certaines tâches et moins bon pour d'autres. Ils sont plus rapides (les bots modifient plusieurs pages par minute) et exécutent des tâches répétitives mais ne peuvent faire de modifications importantes sur le fond ou émettre des jugements de valeur pertinents sur le contenu de la page.

Comme un éditeur humain, un bot typique va interopérer avec Wikipédia au travers d'une ou plusieurs requêtes à Wikipédia via la méthode GET du protocole HTTP (tout comme un être humain le fait au travers de son navigateur), puis effectuer des calculs sur les données renvoyées par le serveur. Ce processus peut se répéter plusieurs fois à la suite pour réaliser complètement la tâche.

Par exemple, un bot peut demander au serveur la liste des pages contenant un lien vers une page spécifique ([[Special:Whatlinkshere|liste des pages contenant un lien vers une page spécifique]]) par un requête de type « Je veux Special:Whatlinkshere/Nom ». Le bot agira ensuite en fonction du contenu html renvoyées par le serveur.

[modifier] Interfaces de programmation (API) pour les bots

Les API décrivent les fonctions qui permettent d'interagir avec Wikipédia.

L'API la plus commune est la capture de données d'écran (en:screen scraping, non traduit). Cela consiste à appeler la page Wikipédia, à en afficher le code HTML brut (à la manière d'un opérateur humain qui demande l'affichage du "code source" via son navigateur) pour en extraire les données intéressantes. Cette manière de faire n'est pas recommandée du fait que l'interface (et donc la structure de la page) peut changer à tout moment et que cela occasionne une forte charge du serveur. Mais c'est actuellement la seule façon de récupérer une page wiki formatée en HTML. C'est également le seul moyen de réaliser des éditions à partir de la page d'édition et faire une publication HTTP (POST) basée sur les informations du formulaire d'édition.

Vous pouvez passer action=render à la page index.php afin de réduire la quantité de données à transférer et la dépendance à l'interface utilisateur. D'autres paramètres d'index.php peuvent être utiles : Manual:Parameters to index.php est une liste partielle de ces paramètres et des valeurs qu'ils peuvent prendre.

D'autres API peuvent être utilisées :

  • MediaWiki API extension - C'est la nouvelle génération d'API qui devrait un jour être étendue pour inclure la publication de données (data posting) aussi bien que diverses requêtes sur les données. Aujourd'hui un certain nombre de fonctionnalités ont été implémentées telles que la révision de contenu, la journalisation des évènements, les listes de suivi et bien d'autres. Les données peuvent être traitées dans différents formats (JSON,XML,YAML,...). Voir. Les fonctionnalités de l'ancienne interface (Query API) de requêtes sont en cours de portage.
    • Statut : les fonctions du moteur sont partiellement implémentées; disponible sur tous les Wikipédia.
  • Query API -- une API multi-formats pour accéder directement aux données sur les serveurs Wiki. Voir.
    • Statut : Production. Cette extension est activée sur tous les serveurs WikiMedia.
  • Fonctionnalités pour exporter des pages (export de données au format XML). Voir Parameters_to_Special:Export pour la liste de paramètres.
    • Statut: Production. Fonctionnalités des moteurs ; disponible sur tous les serveurs WikiMedia.
  • Pages natives (brutes) : en passant action=raw ou action=raw&templates=expand à index.php, on peut accéder directement au code source des pages.

Les serveurs Wikipédia sont configurés pour traiter les requêtes sur du contenu compressé au format (gzip). Ceci peut être fait en incluant une ligne "Accept-Encoding: gzip" dans l'en-tête de la requête HTTP. Si la réponse contient "Content-Encoding: gzip", le document est un document compressé, sinon, c'est un fichier au format ordinaire non-compressé; Ne pas vérifier l'entête de la réponse peut conduire à des résultats erronés. (Notez que cela est spécifique aux serveurs Wikipédia et non au logiciel MediaWiki. Les autres sites utilisant MediaWiki ne disposent pas forcément de la fonctionnalité).

[modifier] Connexion en tant que bot (fonctions d'écriture sur Wikipédia)

Il est nécessaire pour un bot agréé de se connecter sous son compte utilisateur avant de pouvoir réaliser des éditions. Un bot est libre de faire des requêtes de lecture sans être connecté, mais il devrait idéalement se connecter pour toute activité.

Le bot peut se connecter de plusieurs manières (remplacer BOTUSERNAME et BOTPASSWORD par les valeurs adéquates) :

Une fois connecté, le bot doit sauvegarder les cookies Wikipédia et s'assurer qu'il les renvoie correctement lors des requêtes d'édition.


Partie à modifier par un expert (pour les cookies en français)

Sur Wikipedia anglais, trois cookies doivent être utilisés : enwikiUserID, enwikiToken, et enwikiUserName. enwiki_session est exigé pour réaliser effectivement l'édition (ou soumettre une modification) ; sinon, ce message apparaît.


Voir Hypertext Transfer Protocol et Cookie HTTP pour plus de détails.

[modifier] Jetons de modification (Edit tokens)

Wikipedia utilise un système de jetons de modification ((en)edit tokens) lors de l'édition de pages et pour certaines autres opérations.

La conséquence est que votre bot ne peut envoyer directement de requête POST via HTTP pour éditer une page. A l'image d'un éditeur humain, il doit suivre un certain nombre d'étapes :

  • Appel de la page à l'aide d'une chaîne comme http://en.wikipedia.org/w/index.php?title=Wikipedia:Creating_a_bot&action=edit ou http://en.wikipedia.org/w/api.php?action=query&prop=info&titles=Wikipedia:Creating_a_bot&intoken=edit
  • Le bot reçoit une page d'édition avec un champ de texte. Il reçoit également est également renvoyé (et c'est important), un jeton de modification, en tant que champ caché dans un code de formulaire html. Le jeton ressemble à quelque chose comme : b66655fjr7fd5drr3411ss23456s65eg\. Ce jeton est associé à la session PHP courante (identifiée par le jeton enwiki_session). Le même jeton peut être utilisé pour éditer d'autres pages, aussi longtemps que la session dure (en général quelques heures). Si vous utilisez l'API, il faut récupérer l'attribut edittoken.
  • Le bot doit ensuite réaliser l'opération de modification effective de la page en revoyant une requête adaptée accompagnée du jeton de modification.

[modifier] Pourquoi ai-je reçu un jeton (quasiment) vide ?

Il est possible que votre bot reçoive un jeton vide ou "+\". C'est une indication que le bot n'est pas connecté. Cela peut être dû à une erreur lors de l'authentification par le serveur, ou une erreur d'enregistrement et de restitution des cookies corrects.

[modifier] Conflits d'édition

Il y a une forte probabilité que votre bot soit confronté à des "conflits d'édition": cela a lieu si un utilisateur réalise une édition entre le moment où vous faites une requête de modification (obtention du jeton d'édition) et celui où vous réalisez effectivement la modification. Un autre type de conflit d'édition concerne les éditions/suppressions de page, quand une page est détruite entre le moment où le formulaire d'édition de la page est ouvert et celui où il est publié.

L'erreur en résultant peut provoquer un résultat incorrect si la valeur de la variable wpEdittime figurant dans les données envoyées au serveur est fausse. Il en est de même pour la variable wpStarttime dans le cas de conflits d'édition/suppression.

Malheureusement, pour résoudre de tels conflits, vous aurez à vérifier le document HTML lui-même. De façon générale, si le serveur renvoie "200 OK" dans l'en-tête (header) du fichier HTML, pendant la soumission du formulaire, l'édition n'a pas été réalisée (quelle qu'en soit la raison: conflit, perte de jeton de session, protection, verrouillage de la base de données). En cas de succès, la serveur renvoie "302 Moved Temporarily", avec l'URL dans le champ Location.

[modifier] Vue d'ensemble du processus de développement d'un robot

ou Dressage de votre bot.

En fait, le codage ou l'écriture n'est qu'une partie du processus de développement. En règle générale, on peut suivre le cycle de développement ci-dessous. Des manques dans le respect de ce cycle, et particulièrement des sections concernant les règles de Wikipédia (on peut voir, pour information, la version anglaise en:Wikipedia:Bots policy) peut aboutir à un rejet lors de la demande d'agrément du bot ou au blocage de ses fonctions d'édition.

Vue d'ensemble du cycle de développement (Note : le texte du diagramme reste à traduire. Pour l'instant, les termes en anglais sont signalés dans les paragraphes qui suivent.)
Vue d'ensemble du cycle de développement (Note : le texte du diagramme reste à traduire. Pour l'instant, les termes en anglais sont signalés dans les paragraphes qui suivent.)

[modifier] Déterminer ses objectifs (analyse préliminaire)

Tâches : Initial bot idea ; Discuss the specification with others.

La première question à se poser lorsqu’on veut créer un bot est de savoir à quoi il servira (identifier les exigences ou l'idée de départ). Si vous n'avez pas d'idées claires dans cette phase, il est possible de consulter les requêtes adressées aux bots.

Assurez-vous qu'il n'existe pas déjà de bot réalisant les fonctions que vous avez identifiées. Pour connaître les fonctionnalités déjà existantes, voir la Liste des bots actifs sur la Wikipédia francophone. Si c’est le cas, contactez-le dresseur pour lui demander des conseils et savoir comment son bot fonctionne.

[modifier] Écriture de la spécification

Tâche : Write the specification.

La spécification consiste à décrire précisément le logiciel à écrire, autant que possible de façon stricte (formalisée). Vous devriez aboutir à une proposition détaillée décrivant les actions que votre bot devra effectuer. Discutez de ce projet avec d'autres éditeurs afin de recueillir des commentaires permettent de raffiner la proposition. Même une bonne idée peut être améliorée en intégrant les idées d'autres personnes.

Même dans sa forme la plus élémentaire, votre bot doit impérativement répondre au moins aux critères suivants :

  • le bot est inoffensif : il ne doit pas dégrader le contenu des articles (ce qui serait considéré comme du vandalisme) ;
  • le bot est utile : il fournit un service plus rapide mais tout aussi efficace et précis qu’un éditeur humain aurait pu faire ;
  • le bot ne gaspillera pas les ressources du serveur.

Assurez-vous que votre proposition est conforme à la politique Wikipedia pour les bots.

[modifier] Proposer votre bot

Tâche : Make a bot proposal.

A ce moment, il est nécessaire de faire quelques opérations de mise en place du projet :

  • Créez un compte enregistré spécifique à votre bot, car vous ne devez pas éditer en mode bot sous votre propre compte. Idéalement, le nom de votre bot devrait contenir « Bot », et vous devriez choisir un nom du type « Votrenomd’utilisateurBot ». ;
  • Ajoutez ces informations à votre proposition et la publier dans les propositions de bot ;
  • Indiquez sur la page utilisateur de votre bot quels sont ses objectifs. N’oubliez pas de préciser que votre bot est en phase de test et qu’il n’est pas encore un bot officiel. Vous devriez également ajouter un lien vers la page d'approbation (quel que soit le statut courant).
  • Indiquez dans votre compte principal que vous êtes dresseur du bot.

Votre proposition est alors commentée et acceptée ou rejetée.

[modifier] Architecture

Tâche : Implement the bot (1).

  • Lors de cette tâche, vous devez penser Comment vous pourriez développer le programme et quels langages et outils de programmation vous pourriez utiliser. L'architecture s'attache à s'assurer que le système satisfera aux exigences et que des exigences futures pourront être prises en compte (évolutions et maintenance). Il y a différents types de bots (pour information, vous pouvez voir la page anglaise en:Wikipedia:Types of bots, non traduite).

[modifier] Implémentation (Codage)

Tâche : Implement the bot (2).

L'implémentation (ou codage) consiste à transformer la conception en code informatique. Elle peut apparaître comme la partie la plus visible de l'ingénierie logicielle, mais ce n'est pas forcément la phase la plus longue. Dans cette phase, vous devrez :

  • coder votre bot dans le langage de programmation de votre choix.

[modifier] Tests

Tâches : Test the bot ; Bot approved and deployed

Même accepté, votre bot passe d'abord par une période d'essai pendant laquelle il est utilisé afin de faire des ajustements fins et de détecter et résoudre les problèmes.

Tant que votre bot n’aura pas le statut officiel de bot, vous devriez le tester à vitesse réduite (5 édits/minute) afin de pouvoir vérifier toutes ses modifications et l’arrêter si nécessaire.

[modifier] Documentation

Tâche : Documentation

Une tâche très importante (et souvent négligée) est de documenter la conception interne de votre bot à des fins de de maintenance et d'améliorations futures.

N’hésitez-pas à expliquer en détail le fonctionnement de votre bot sur sa page utilisateur et d’y publier le code source. Ce code devrait être bien auto-documenté pour faciliter la tâche. Ainsi vous permettrez aux contributeurs qui voudraient dresser un bot similaire d’utiliser votre travail. Cette documentation vous servira aussi de pense-bête pour les futurs entretiens et perfectionnements de votre bot. Enfin cette documentation permettra aux contributeurs de savoir précisément les actions que votre bot peut réaliser et de vous suggérer éventuellement de nouvelles fonctions.

Si vous désirez partager vos codes et expérience avec d'autre dresseurs, vous pouvez aussi vous inscrire au Projet:Bot.

[modifier] Soutien et entretien

Tâche : Support and maintenance

Vous devez vous attendre à recevoir des questions, commentaires et objections sur votre page de discussion. Cela fait partie de la vie des bots.

Maintenir et à améliorer votre bot pour corriger les problèmes qui sont découverts régulièrement ou pour implémenter de nouvelles exigences peuvent prendre beaucoup plus de temps que l'élaboration initiale du logiciel : le code à ajouter peut être incompatible avec la conception initiale (il faudra donc la modifier). D'autre part, reprendre un logiciel après un certain temps demande un effort important de compréhension de son fonctionnement.

Si vous introduisez de nouvelles fonctionnalités, vous devrez reprendre une série de tests. De même, si des évolutions majeures sont envisagées, il faudra repasser par le processus d'approbation. Enfin, votre bot devra être entretenu et adapté pour faire face aux évolutions régulières du logiciel MediaWiki.

[modifier] Orientations générales concernant la mise en œuvre d'un bot

En plus de la politique officielle des bots, qui couvre les principaux points à considérer lors de l'élaboration du robot, on peut donner un certain nombre de conseils plus généraux à prendre en compte lors du développement du bot.

[modifier] Bonnes pratiques

Quelques recommandations :

  • Évitez de faire plus de 10 requêtes (lecture et écriture confondues) par minute.
  • Privilégiez les heures creuses du serveurs pour lancer vos requêtes. Tout au moins, diminuez le taux de requêtes aux heures de pointe (la charge des serveurs peut être vérifié avec le paramètre de maxlag ; voir en:Manual:Maxlag parameter - non traduit).
  • Les requêtes d'écriture sont plus coûteuses en temps de traitement coté serveur que les requêtes de lecture. Limitez les éditions!
  • Ne pas effectuer de requêtes en parallèle : effectuer vos requêtes successivement.
  • Arrêter son bot lorsqu’il reçoit des messages d’erreur de la part des serveurs, ce qui est souvent une indication de surcharge des serveurs. Dans ce cas, il est inutile d'assaillir le serveur en multipliant les requêtes: il vaut mieux différer le traitement.
  • Essayer de regrouper les modifications. Il est préférable de faire une grosse modification qu’une dizaine de petites. Écrivez et testez votre code en gardant ceci à l'esprit.
  • Utilisez l'extension Assert Edit qui donne accès au bot quelques flags utiles (actif sur Wikipédia).

[modifier] Quelques considérations de conception

Vous devez vous poser certaines questions au moment de préciser la conception du bot :

  • est-il exécuté sur le serveur (server-side) ou sur le poste de l'utilisateur (client-side) ?
  • est-il entièrement automatisé ou nécessite-t-il des interventions manuelles ?
  • est-ce que les requêtes doivent être enregistrées ?
  • est-ce qu'un rapport de ses actions est à réaliser vers un humain ?

[modifier] Fonctionnalités communes qui devraient être mises en œuvre

[modifier] Limitation de la vitesse d'édition

Votre bot ne devrait pas avoir une vitesse d'édition trop importante. Les timers sont une façon pour les bots de contrôler cette vitesse : ils permettent d’interdire à votre bot d’éditer pendant un certain temps après une action (patienter 10 secondes entre chaque édit par exemple). Dans le langage Perl, cela peut être réalisé avec la fonction sleep(10), où 10 représente le nombre de secondes d’inactivité du bot. En C#, vous pouvez utiliser Thread.Sleep(10000); qui fait le même chose (il faut déclarer using System.Threading préalablement).

[modifier] Interventions manuelles

Dans certains cas, votre bot peut avoir besoin de l'intervention de l'homme. C'est en particulier le cas si des décisions complexes sont à prendre (par exemple, évaluation du contexte avant modification, correction d'orthographe ou de grammaire, etc.). Il faut alors mettre en place des dispositifs permettant l'intervention humaine pendant l'exécution du bot, en particulier la confirmation manuelle des modifications proposées automatiquement par le bot.

[modifier] Désactivation du bot

Il est souhaitable de disposer d'un moyen pour arrêter votre bot en cas de besoin. Vous pouvez par exemple programmer l’arrêt automatique de votre bot s’il a reçu un message sur sa page de discussion, en faisant l'hypothèse que cela pourrait être une plainte contre ses activités (tester la présence d’une bannière « Vous avez de nouveaux messages… » dans le code HTML). Pensez à expliquer sur cette page que tout nouveau message provoquera l’arrêt automatique de votre bot et proposer une autre page pour les suggestions d'amélioration, requêtes à intégrer, etc. (votre page de discussion par exemple). Vous pouvez également avoir une page spécifique qui permettra d'arrêter le bot : insérez une balise True sur la page qui pourra être changée. A l'exécution du bot, il suffira de tester cette information avant chaque édition pour autoriser ou interdire le fonctionnement du bot.

[modifier] Signature

Comme tout contributeur, si un bot édite une page de discussion, il devra signer de la façon classique avec quatre tildes (~~~~). Néanmoins, un bot ne doit pas signer ses contributions dans l’espace encyclopédique.

[modifier] Quelle technique et quel langage employer ?

[modifier] Les outils semi-automatisés

En complément des vrais bots, il existe des bots semi-automatisés qui sont à la disposition de quiconque. La plupart d'entre-eux se présentent comme des ajouts aux navigateurs web, leur donnant des fonctionnalités complémentaires. Ils permettent par exemple de charger un page, d’effectuer automatiquement des modifications puis de les valider manuellement. Le plus populaire est le logiciel Auto-Wiki Browser.

Voir aussi :

[modifier] Les clones

Il y a déjà beaucoup de bots sur Wikipédia dont un certain nombre qui publient leur code source afin de vous permettre de les télécharger et d'en utiliser une copie (un clone) en vue de réaliser des tâches utiles en parcourant Wikipédia.

Pour cela, contactez les dresseurs concernés.

[modifier] Développer un nouveau bot

Les bots sont des petits programmes ou applets qui peuvent être écrits dans divers langages de programmation. On distingue généralement deux types de bots : ceux exécutés sur le poste client (client-side) et ceux exécutés sur le serveur (server-side). Les premiers sont uniquement exécutés par l'utilisateur via son navigateur et à sa demande. Les seconds peuvent être hébergés sur votre propre machine ou sur un serveur externe et démarrent automatiquement en fonction des tâches que vous avez programmées. Vous pouvez aussi autoriser leur lancement par d’autres contributeurs.

Un aperçu des différents langages utilisables pour les bots de Wikipédia figure ci-dessous. Dans chaque cas, des références d'articles fournissant des conseils externes est donnée ainsi que les bibliothèques logicielles utilisables (qui vous éviteront de réinventer la roue pour les fonctions de base).

Note : les références sont en anglais. Merci à ceux (celles) qui pourront trouver les équivalences en français.

[modifier] Perl

Perl est un langage interprété : il n'est pas nécessaire de compiler votre code comme pour la plupart des langages de programmation. Il suffit de créer le programme avec un éditeur adapté (par exemple gvim, mais il en existe bien d'autres) puis de l'exécuter au travers d'un interpréteur qui peut résider sur votre ordinateur ou sur un serveur Web distant. Dans ce dernier cas, vous pouvez lancer le programme depuis votre navigateur et communiquer avec lui au travers de l'interface CGI (Common Gateway Interface). Perl est disponible sur la plupart de systèmes d'exploitation, y compris Microsoft Windows (qui existe sur bien des postes individuels client) et UNIX (que l'on trouve sur de très nombreux serveurs Web). Si votre fournisseur d'accès Internet vous met à disposition un espace pour vos pages personnelles, il y a de grande chance qu'il fournisse également un interpréteur Perl que vous pourrez utiliser pour exécuter vos programmes Perl.

  • Le processus :
  • Exemple de code Perl :
open (INPUT, "< $filepageid") || &file_open_error("$filepageid");
 
while ($page_id=<INPUT>){
    chomp($page_id);
    push @page_ids, $page_id;
 
    $hits_upto_sth->execute($page_id, $start_date);
    $hits{upto}{$page_id} = $hits_upto_sth->fetchrow_array();
 
    $hits_daily_sth->execute($page_id, $today);
    $hits{today}{$page_id} = $hits_daily_sth->fetchrow_array();
 
    $hits_daily_sth->execute($page_id, $yesterday);
    $hits{yesterday}{$page_id} = $hits_daily_sth->fetchrow_array();
 
    $hits_range_sth->execute($page_id, $start_of_30_days,
                                       $end_of_30_days,);
    $hits{monthly}{$page_id} = $hits_range_sth->fetchrow_array();
}
  • Bibliothèques :
    • (en) Anura -- Interface Perl à base de MediaWiki libwww-perl. Note : cette interface n'est pas recommandée car elle ne traite pas les conflits d'édition.
    • (en) WWW::Mediawiki::Client -- Les modules Perl et la ligne de commande côté client
    • (en) WWW::Wikipedia -- Les modules Perl pour interfacer Wikipédia)
    • (en) Perl Wikipedia ToolKit -- Modules Perls, analyse du texte et extraction des données
    • (en) perlwikipedia � Un environnement de développement à peu près complet développé en Perl pour Wikipédia.

[modifier] PHP

PHP peut également être utilisé pour programmer les bots. PHP est particulièrement adapté si vous désirez fournir une interface basée sur les formulaires web à votre bot. Par exemple, supposons que vous vouliez créer un bot pour renommer des catégories. Vous pourriez créer un formulaire HTML dans lequel vous pourriez saisir l'ancien et le nouveau nom de la catégorie. Au moment où le formulaire est envoyé, votre bot lit ces données, puis édite tous les articles contenant la catégorie courante avant de les déplacer dans la catégorie désirée. (Il faut évidemment que ce type de bots soient sécurisés contre les internautes qui pourraient y accéder par hasard).

Pour vous connecter à votre bot, vous devez savoir comment utiliser PHP pour envoyer et recevoir des cookies. Pour éditer avec votre bot, vous devez savoir comment envoyer des variables dans un formulaire. Des bibliothèques comme (en) Snoopy permettent de simplifier ces actions.

Bibliothèques :

  • (en) BasicBot - Un environnement basique avec des exemples de scripts pour les bots basé sur (en) Snoopy.
  • (en) SxWiki - Un environnement de développement extrêmement simple.

[modifier] Python

Juste une introduction...

  • Un exemple de code Python :
def addt5(x):
    return x+5
 
def dotwrite(ast):
    nodename = getNodeName()
    label=symbol.sym_name.get(int(ast[0]),ast[0])
    print ' %s [label="%s' % (nodename, label) ,
    if isinstance(ast[1], str):
        if ast[1].strip():
            print '= %s "];' % ast[1]
        else:
            print '"]'
    else:
        print '"]'
        children = []
        for n, child in enumerate(ast[1:]):
            children.append(dotwrite(child))
        print ' %s -> {' % nodename,
        for name in children:
            print '%s' % name,

[modifier] Microsoft .NET

Cet environnement comprend les languages C#, Managed C++, Visual Basic .NET, J#, JScript .NET, IronPython, et Windows PowerShell.

Il existe une version libre de Microsoft Visual Studio (Visual Studio Express) avec des fonctionnalités réduites.

using System;
using DotNetWikiBot;
 
class MyBot : Bot
{                                                     
     public static void Main()
     {  
         Site enWP = new Site("http://en.wikipedia.org", "myLogin", 
                              "myPassword");
         Page p = new Page(enWP, "Art");
         p.Load();
         p.AddToCategory("Visual arts");
         p.Save("comment: category link added", true);
 
         PageList pl = new PageList(enWP);
         pl.FillFromPageHistory("Science", 30);
         pl.LoadEx();
         pl.SaveXMLDumpToFile("Dumps\\ScienceArticleHistory.xml");
     }
}
  • Débuter avec .NET :
    • à compléter

[modifier] Java

Souvent développé grâce à l'IDE Eclipse.

  • Exemple de code :
public static void main(String [] args) throws Exception {
     MediaWikiBot bot = new MediaWikiBot("http://en.wikipedia.org/w/");
     bot.login("user", "pw");
     SimpleArticle a = null;
     try {
          a = new SimpleArticle(bot.readContent("Main Page"));
     }catch(Exception e){
          System.out.println("The bot could not find the main page");
     }
     modifyContent(a);
     bot.writeContent(a);
}

[modifier] Ruby

RWikiBot est un environnement basé sur Ruby pour la création de bots. Actuellement, il est en cours de développement et à besoin de contributeurs. Il implémente l'API officielle MediaWiki et, de ce fait, présente un certain nombre de limitations.

  • Un exemple simple :
require "rubygems"
require "rwikibot"
 
# Créer un bot
bot = RWikiBot.new "TestBot", "http://site.tld/wiki/api.php"
 
# Authentification
bot.login
 
# Récupère le contenu de l'article "Cheval"
content = bot.content "cheval"

[modifier] Chicken Scheme

Iron Chicken est une extension (appelée aussi egg) écrite en Chicken Scheme (voir l'article anglais: en:Chicken Scheme) qui rend l'API de Mediawiki programmable en utilisant des S-expression et transforme les sorties HTML et de l'API en SXML (voir l'article anglais: en:SXML) pour être traitées plus facilement.

Un exemple simple qui récupère les articles d'une catégorie et les écrit dans une sous-page utilisateur

Librairies:

[modifier] Références

  • Voir dans le texte
  • (en) Cet article est partiellement ou en totalité issu d’une traduction de l’article de Wikipédia en anglais intitulé « Wikipedia:Creating a bot ».
Autres langues