Inscris-toi pour écrire dans l'encyclopédie Wikimini!

MediaWiki:Bot/PagesSansImage.js

Jump to navigation Jump to search

Note : après avoir enregistré tes préférences, tu devras forcer son rechargement complet en ignorant le contenu actuel du cache de ton explorateur pour voir les changements : Mozilla / Firefox / Konqueror / Safari : maintiens la touche Majuscule (Shift) en cliquant le bouton Actualiser (Reload,) ou presse Maj-Ctrl-R (Maj-Cmd-R sur Apple Mac) ; Internet Explorer / Opera : maintiens la touche Ctrl en cliquant le bouton Actualiser ou presse Ctrl-F5.

//__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 LienPerso = document.getElementById('pt-userpage');
    var LienBot = document.createElement('li');
    LienBot.innerHTML = '<a id="BOTon" href="javascript:LancementBot()" title="Lancer le bot">Lancement BOT : Pages à illustrer</a> <sup><small>(<a href="'+wgServer + '/wiki/MediaWiki:Bot/PagesSansImage">aide</a>)</small></sup>';
    document.body.insertBefore(LienBot, document.body.firstChild);
});
// =========================================================================================================


// =========================================================================================================
// Définition des liste de pages et infos correspondantes

var ListePages = new Array();
var ListePagesCount = 0;
var PagesSansImage = new Array();
var PagesSansImageCount = 0;

// =========================================================================================================


// =========================================================================================================

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+'/w/api.php?action=query&list=allpages&prop=info&apfilterredir=nonredirects&aplimit=499'+PageDebut;
     Requete.open('GET',url, true);
     Requete.send(null);
     Requete.onreadystatechange = function(){
          if((Requete.readyState == 4)&&(Requete.status == 200)){
               var Reponse = document.getElementById('API_Result');
               Reponse.innerHTML = url +'<br/>Listage des pages<br/>';
               Reponse.innerHTML += Requete.responseText;
               SpanCount = 0;
               var Span = Reponse.getElementsByTagName('span')[SpanCount];
               while(Span.innerHTML.indexOf('pageid=')==-1){ 
                    SpanCount++
                    Span = Reponse.getElementsByTagName('span')[SpanCount];
               }
               while(Span.innerHTML.indexOf('allpages')==-1){
                    Span = Reponse.getElementsByTagName('span')[SpanCount];
                    if(Span.innerHTML.indexOf('allpages')!=-1) break;
                    Page = Span.innerHTML.split('title="')[1].split('"')[0];
                    ListePages[ListePagesCount] = Page;
                    ListePagesCount++
                    SpanCount++
               }
               var OtherPage = false;
               while(Span.innerHTML.indexOf('apfrom')==-1){ 
                    SpanCount++
                    Span = Reponse.getElementsByTagName('span')[SpanCount];
                    if(!Span) break;
               }
               if(Span){
                    OtherPage = true;
                    OtherPageTitle = '&apfrom=' + Span.innerHTML.split('apfrom="')[1].split('"')[0];            
               }
               if(OtherPage==true){ 
                    ListagePage(OtherPageTitle);
               }else{
                    CheckImages();
               }
          }
     }
}

function CheckImages(position){
     if(!position) position = 0;
     //if(position>15){ doEdit(); return; }  // à décommenter pour faire des tests sans passer les 2500 pages...
     var PageRequête = ListePages[position];
     if(!PageRequête){ doEdit(); return; }
     if(PageRequête=="undefined"){ doEdit(); return; }
     Requete = sajax_init_object();
     var url = wgServer+'/w/api.php?action=query&prop=images&imlimit=1&titles='+PageRequête;
     Requete.open('GET',url, true);
     Requete.send(null);
     Requete.onreadystatechange = function(){
          if((Requete.readyState == 4)&&(Requete.status == 200)){
               var Reponse = document.getElementById('API_Result');
               Reponse.innerHTML = url +'<br/>Requête API de la page : ' + decodeURIComponent(PageRequête) + '<br/>';
               Reponse.innerHTML += Requete.responseText;
               var Span = Reponse.getElementsByTagName('span');
               if(Span.length<9){
                    PagesSansImage[PagesSansImageCount] = PageRequête;
                    PagesSansImageCount++
               }
               CheckImages((position+1))
          }
     }
}

function doEdit(){
     var PageEdit = 'Wikimini:Pages à illustrer';

     Requete = sajax_init_object();
     var url = wgServer + wgScript + '?title=' + PageEdit + '&action=edit';
     Requete.open('GET',url, true);
     Requete.send(null);
     Requete.onreadystatechange = function(){
          if((Requete.readyState == 4)&&(Requete.status == 200)){
               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.\n'
              +'Dernière mise à jour : le ' + ZeroJour + Jour + '/' + ZeroMois + Mois + '/' + Annee + ' à ' + ZeroHeures + Heures + ':' + ZeroMinutes + Minutes + '\n\n';               
               for(a=0;a<PagesSansImage.length;a++){
                   while(PagesSansImage[a].indexOf('&amp;#039;')!=-1){
                         PagesSansImage[a] = PagesSansImage[a].split('&amp;#039;').join("'");
                         if(PagesSansImage[a].indexOf('&amp;#039;')==-1) break;
                   }
                   TexteFinal += '# [[' + PagesSansImage[a] + ']]\n';
               }
               document.getElementById('wpTextbox1').value = TexteFinal ;
               document.editform.wpSummary.value = 'Bot : mise à jour de la page';
               document.editform.submit();
          }
     }
}
Wikiboo Outils personnels