Utilisateur:Hexabot/CodeExamples

Une page de Wikipédia, l'encyclopédie libre.

AVERTISSEMENT : ce code est ancien. J'ai retouché certaines parties vitales pour les adapter aux changements récents de l'API de wikipédia (en particulier sur la gestion du login).
Toutefois je n'utilise pas toutes les fonctionnalités, donc certaines n'ont pas été testées et il peut y avoir des bugs, erreurs… Use at own risks comme on dit Émoticône sourire


Utilisation[modifier | modifier le code]

La base est simple : il faut inclure le code, puis créer un objet wikipedia (qui nécessite le login du bot), puis effectuer un login, et enfin utiliser les diverses fonctions existantes.

Remarque importante : le code stocke un fichier LOGIN.dat dans le répertoire courant. Ce fichier contient les cookies de session, et est utilisé pour rester connecté entre deux utilisations. Si vous changez de répertoire ou que vous détruisez ce fichier vous ne serez plus connecté : ce n'est pas grave, le code refera le login. Toutefois si vous avez des séries d'actions à faire il vaut mieux conserver ce fichier afin de ne pas saturer l'API de tentatives de connexions.

Exemple simple : faire un "get" du contenu d'une page[modifier | modifier le code]

<?php

// the library
require_once('botclasses.php');

// initialize wikipedia class and perform login
$user = 'The-Name-of-your-Bot';
$wiki = new wikipedia($user);
$pass = 'The-password-for-your-bot-account';
$wiki->url = 'https://fr.wikipedia.org/w/api.php'; // API base URL. Change this for other project
$wiki->login($user, $pass); // should check login result in case of error

$article = "Toto";
$ret = $wiki->getpage($article);

if ($ret === false) {
  die(1); // failed to get article for some reasons
}

echo "$ret\n"; // just print result

?>

Faire un "put" : remplace le contenu d'un article par le contenu d'un fichier local[modifier | modifier le code]

Note : si l'article n'existe pas, il est créé.

<?php

// the library
require_once('botclasses.php');

// initialize wikipedia class and perform login
$user = 'The-Name-of-your-Bot';
$wiki = new wikipedia($user);
$pass = 'The-password-for-your-bot-account';
$wiki->url = 'https://fr.wikipedia.org/w/api.php'; // API base URL. Change this for other project
$wiki->login($user, $pass); // should check login result in case of error

$file = "the-local-file-to-put-on-wp";
$content = file_get_contents($file);
if ($content === false) {
  echo "Failed to read '$file' !", PHP_EOL;
  die(1);
}
$article = "Toto"; // name of article to change/create
$comment = "Some comment to explain the action";
// put
$ret = $wiki->edit($article, $content, $comment, false, true);
if ($ret === false) {
  die(1); // error
} else {
  // done
}
?>

Lister les pages dans une catégorie[modifier | modifier le code]

<?php

// the library
require_once('botclasses.php');

// initialize wikipedia class and perform login
$user = 'The-Name-of-your-Bot';
$wiki = new wikipedia($user);
$pass = 'The-password-for-your-bot-account';
$wiki->url = 'https://fr.wikipedia.org/w/api.php'; // API base URL. Change this for other project
$wiki->login($user, $pass); // should check login result in case of error

// sub-categories depth. 0=only pages in the category. Use 99 for all subcategories
$subcats = 0;
// the name of the category (must add the "Catégorie:")
$cat = "Catégorie:MyCategory";
// note: "cmtype=page" restricts results to pages (i.e. prevent to get categories)
$ret = $wiki->categorymembers($cat, $subcats, "&cmtype=page");

if ($ret === false) {
  die(1); // erreur
}

// print each page found
foreach($ret as $e) {
  echo "$e\n";
}
?>

Lister les pages qui utilisent un modèle[modifier | modifier le code]

<?php

// the library
require_once('botclasses.php');

// initialize wikipedia class and perform login
$user = 'The-Name-of-your-Bot';
$wiki = new wikipedia($user);
$pass = 'The-password-for-your-bot-account';
$wiki->url = 'https://fr.wikipedia.org/w/api.php'; // API base URL. Change this for other project
$wiki->login($user, $pass); // should check login result in case of error

// restrict results to main space pages (set to NULL for no restriction, or set to other namespace)
$extra = "&einamespace=0";
// template name. No need to add "Template:" (or "Modèle:") before name
$tpl = "MyTemplate";
// call
$lst = $wiki->whatusethetemplate($tpl, $extra);

if ($lst === false) {
  die(1); // error
}

// print each page found
foreach($lst as $e) {
  echo "$e\n";
}
?>