Utilisateur:Pabix/wikiwix

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

Ce script va chercher la liste des articles dans lesquels un certain mot apparaît à l'aide de Wikiwix, puis exécute le script replace.py de pywikipediabot avec les arguments qui sont demandés pendant l'exécution.

[modifier] Code

#!/bin/bash

echo -e -n "\033[34mQuelle chaîne chercher dans les articles ?\033[0m "
read i

###### Requête
echo -e "\033[34mRequête sur Wikiwix... \033[0m"
nbq=100        # Nombre de résultats maximal donnés par Wikiwix sur une page de résultats
qb=1           # Offset de la première requête, ne pas modifier
while true     # Boucle...
do
        echo "$nbq résultats à partir du numéro $qb"
        wget "http://www.wikiwix.com/?action=${i}&lang=fr&nbq=${nbq}&qb=${qb}" -O SEARCH${qb} &> /dev/null # Prendre les (nbq) résultats suivants
        grep src..img.flech.suiv.png. SEARCH${qb} &> /dev/null || break                # Si on trouve la flèche à droite, cela veut dire qu'il
                                                                                       # reste des résultats, sinon sortir de la boucle
        qb=$(echo $(($qb + $nbq)) )                                                    # Mettre l'offset à jour
done
cat SEARCH* > SEARCH  # Concaténation de tous les résultats de recherche
rm SEARCH[0-9]*       # Suppression des fichiers temporaires
###### Filtrage
grep class..titre. SEARCH | sed 's/^.*<a target=._blank. href=.[^"]*.>\(.*\)  ( [0-9]*% ).*$/[[\1]]/g' | sort | uniq > SEARCH2 2> /dev/null
mv SEARCH2 SEARCH

###### Affichage de la liste des articles à modifier
echo -e "\033[34mVoici la liste a priori des articles à modifier :\033[0m"
awk '{printf "%s ; ", $0}' SEARCH ; echo ""

###### Demande des expressions régulières à passer à la ligne de commande de replace.py
echo -e -n "\033[34mRentrez la liste d'expressions régulières à modifier, par paires, entre guillemets : \033[0m"
read i

###### Affichage de la ligne de commande exécutée et lancement
a=$(echo python replace.py -file:SEARCH -regex -namespace:0 "$i")
echo -e -n "\033[34mLancement de la commande :\033[0m "
echo $a
eval "$a"

[modifier] Exemple d'utilisation

benoit@mortgat:~/Personnel/WP/pywikipedia$ . wikiwix
Quelle chaîne chercher dans les articles ? groseiller
Requête sur Wikiwix...
100 résultats à partir du numéro 1
100 résultats à partir du numéro 101
cat: SEARCH: le fichier à l'entrée est le même qu'à la sortie.
Voici la liste a priori des articles à modifier :
[[Abraxas grossulariata]] ; [[Haie]] ; [[Rochers de Freÿr]] ;
Rentrez la liste d'expressions régulières à modifier, par paires, entre guillemets : " groseiller " " groseillier "
Lancement de la commande : python replace.py -file:SEARCH -regex -namespace:0 " groseiller " " groseillier "
Checked for running processes. 1 processes currently running, including the current process.
Getting 3 pages from wikipedia:fr...