2015-07-16 1 views

Répondre

1

Vous pouvez le faire avec un UserContribs API query, comme ceci:

Fondamentalement, les paramètres dont vous avez besoin sont:

  • format=json pour obtenir des résultats au format JSON , ce qui est probablement ce que vous voulez pour JavaScript. (Je l'ai utilisé jsonfm dans le lien exemple ci-dessus pour obtenir une sortie lisible par l'homme assez imprimé.)

  • action=query pour indiquer que c'est, en effet, un query plutôt que, par exemple, une modification ou une tentative de connexion.

  • list=usercontribs pour indiquer que vous voulez une liste decontributions d'un utilisateur (à savoir les choses que vous voyez sur la page Special:Contributions).

  • ucuser=your_username pour sélectionner les contributions de l'utilisateur que vous voulez voir. (L'exemple de lien ci-dessus montre le mien.)

  • ucnamespace=10 pour sélectionner uniquement les contributions aux modèles. (10 correspond au namespace number pour l'espace de noms de modèle intégré).

  • ucshow=new pour sélectionner uniquement les contributions qui impliquent la création d'une nouvelle page. (Notez que cela inclut également la page se déplace;. Je ne vois aucune façon simple de filtrer ceux sur)

Bien sûr, il y a d'autres parameters vous pouvez également inclure. J'ai également inclus un paramètre vide continue= pour indiquer que je veux utiliser le new query continuation syntax, et supprimer l'avertissement à ce sujet. Évidemment, si vous voulez réellement utiliser la continuation de la requête, vous devrez implémenter vous-même la partie côté client (ou utiliser un client MW API qui l'implémente pour vous). Voici une façon simpliste de le faire:

function getNewTemplatesForUser(username) { 
    var queryURL = 'https://en.wikipedia.org/w/api.php?format=json&action=query&list=usercontribs&ucnamespace=10&ucshow=new'; 
    queryURL += '&ucuser=' + encodeURIComponent(username); 

    var callback = function(json) { 
     // TODO: actually process the results here 

     if (json.continue) { 
      var continueURL = queryURL; 
      for (var attr in json.continue) { 
       continueURL += '&' + attr + '=' + encodeURIComponent(json.continue[attr]); 
      } 
      doAjaxRequest(continueURL, callback); 
     } 
    }; 
    doAjaxRequest(queryURL + '&continue=', callback); 
} 
+0

Je ne savais pas que je peux utiliser l'API de cette façon, merci beaucoup, réponse très utile – Dimentica