« MediaWiki:Bot/PagesSansImage.js » : différence entre les versions
Jump to navigation
Jump to search
Aucun résumé des modifications |
Aucun résumé des modifications |
||
| Ligne 107 : | Ligne 107 : | ||
if(ObjetXML==null){ |
if(ObjetXML==null){ |
||
alert("ObjetXML = null"); |
alert("ObjetXML = null"); |
||
CheckImages(position); |
|||
return; |
return; |
||
} |
} |
||
Version du 12 août 2010 à 22:34
//__NORICHEDITOR__
/////////////////////////////////////////////////////////////////////////////// BOT //////////
/************************************************* *************************************************
Fonction :
* dresser la liste des pages sans image
* Mettre à jour la page Wikimini:Pages à illuster
Pense-bête requêtes API : (limite de requête : 499 pouvant être portées à 4999 avec un statut Bot ou Wikitechnicien)
* Toutes les pages :
http://fr.wikimini.org/w/api.php?action=query&list=allpages&prop=info&aplimit=499 (Première requête)
http://fr.wikimini.org/w/api.php?action=query&list=allpages&prop=info&aplimit=499&apfrom=??? (requêtes suivantes (??? = titre de la page suivante à la requête précédente))
* Infos sur les images d'une page
http://fr.wikimini.org/w/api.php?action=query&prop=images&imlimit=1&titles=??? (??? = titre de la page)
********************************************************* ***************************************************************** */
// C'est parti !!!
// =========================================================================================================
// Ajout d'un lien en haut à gauche de la page pour lancer/arrêter le bot.
addOnloadHook( function() {
var LienBot = document.createElement('li');
LienBot.innerHTML = '<sup><small>(<a href="'+wgServer + '/wiki/MediaWiki:Bot/PagesSansImage">aide</a>)</small></sup> <a id="BOTon" href="javascript:LancementBot()" title="Lancer le bot">Lancement BOT : Pages à illustrer</a>';
document.body.insertBefore(LienBot, document.body.firstChild);
});
// =========================================================================================================
// =========================================================================================================
// Définition des liste de pages et infos correspondantes
var ListePages = new Array();
var PagesSansImage = new Array();
// =========================================================================================================
// =========================================================================================================
function LancementBot(){
if(document.getElementById('editform')){
alert('Il y a déjà une fenêtre d\'édition ouverte.\nFermez-là pour pouvoir lancer le bot.');
return;
}
var SurEtCertain = confirm('Lancement du bot ?');
if(!SurEtCertain) return;
var Button = document.getElementById('BOTon');
Button.innerHTML = 'Arrêt BOT';
Button.title = 'Arrêter le bot';
Button.href = 'javascript:window.location.reload();';
var Result = document.createElement('div');
Result.id = 'API_Result';
Result.style.Width = '100%';
Button.parentNode.insertBefore(Result, Button.nextSibling);
var Page = document.getElementById('site_center');
if(Page) Page.style.display = "none";
ListagePage();
}
function ListagePage(PageDebut){
if(!PageDebut) PageDebut = '';
Requete = sajax_init_object();
var url = wgServer+wgScriptPath+'/api.php?format=xml&action=query&list=allpages&prop=info&apfilterredir=nonredirects&aplimit=499'+PageDebut;
Requete.open('GET',url, true);
Requete.onreadystatechange = function(){
if(Requete.readyState == 4){
var Reponse = document.getElementById('API_Result');
Reponse.innerHTML = url +'<br/>Listage des pages<br/>';
var ObjetXML = Requete.responseXML;
var AllPages = ObjetXML.getElementsByTagName('p');
for(var a=0;a<AllPages.length;a++){
var ThisPageName = AllPages[a].getAttribute("title");
ListePages.push(ThisPageName);
}
var OtherPage = ObjetXML.getElementsByTagName('query-continue')[0];
if(OtherPage){
var OtherPageTitle = OtherPage.getElementsByTagName("allpages")[0].getAttribute("apfrom");
ListagePage("&apfrom="+OtherPageTitle);
}else{
CheckImages(0);
}
}
}
Requete.send(null);
}
function CheckImages(position){
if(!position) position = 0;
//if(position>15){ doEdit(); return; } // à décommenter pour faire des tests sans passer les 2500 pages...
var PageRequete = ListePages[position];
if(!PageRequete){ doEdit(); return; }
if(PageRequete=="undefined"){ doEdit(); return; }
Requete = sajax_init_object();
var url = wgServer+wgScriptPath+'/api.php?format=xml&action=query&prop=images&imlimit=1&titles='+PageRequete;
Requete.open('GET',url, true);
Requete.onreadystatechange = function(){
if(Requete.readyState == 4){
var Reponse = document.getElementById('API_Result');
Reponse.innerHTML = url +'<br/>Requête API de la page : ' + PageRequete + '<br/>';
var ObjetXML = Requete.responseXML;
if(ObjetXML==null){
alert("ObjetXML = null");
CheckImages(position);
return;
}
var Image = ObjetXML.getElementsByTagName("im")[0];
if(!Image){
Reponse.innerHTML += 'Page sans image';
PagesSansImage.push(PageRequete);
}else{
Reponse.innerHTML += 'Page avec image';
}
CheckImages((position+1));
}
}
Requete.send(null);
}
function doEdit(){
var PageEdit = 'Wikimini:Pages à illustrer';
Requete = sajax_init_object();
var url = wgServer + wgScript + '?title=' + PageEdit.replace(/&/g, "%26") + '&action=edit';
Requete.open('GET',url, true);
Requete.onreadystatechange = function(){
if(Requete.readyState == 4){
var Reponse = document.getElementById('API_Result');
Reponse.innerHTML = url +'<br/>Édition de la page : ' + decodeURIComponent(PageEdit) + '<br/>';
Reponse.innerHTML += Requete.responseText;
var TextArea = document.getElementById('wpTextbox1');
var TexteFinal = '__NORICHEDITOR__\n';
var Aujourdhui = new Date();
var Minutes = Aujourdhui.getMinutes()
if(Minutes<10){ var ZeroMinutes = "0" ; }else{ var ZeroMinutes = "";}
var Heures = Aujourdhui.getHours()
if(Heures<10){ var ZeroHeures = "0" ; }else{ var ZeroHeures = "";}
var Jour = Aujourdhui.getDate();
if(Jour<10){ var ZeroJour = "0" ; }else{ var ZeroJour = "";}
var Mois = Aujourdhui.getMonth() + 1;
if(Mois<10){ var ZeroMois = "0" ; }else{ var ZeroMois = "";}
var Annee = Aujourdhui.getYear();
if (Annee < 2000){
Annee = Annee + 1900;
}
TexteFinal += 'Cette liste est mise à jour de façon automatique par un robot. <sup>([[MediaWiki:Bot/PagesSansImage|Aide]])</sup>\n\n'
+'Dernière mise à jour : le ' + ZeroJour + Jour + '/' + ZeroMois + Mois + '/' + Annee + ' à ' + ZeroHeures + Heures + ':' + ZeroMinutes + Minutes + '\n\n';
for(a=0;a<PagesSansImage.length;a++){
TexteFinal += '# [[' + PagesSansImage[a] + ']]\n';
}
document.getElementById('wpTextbox1').value = TexteFinal ;
document.editform.wpSummary.value = 'Bot : mise à jour de la page';
document.editform.submit();
}
}
Requete.send(null);
}
Ce que tu peux faire
Outils

Outils personnels