Usuario:PetrohsW/herramientas/WiZeMo

De Wikimedia México
Ir a la navegación Ir a la búsqueda
«WiZeMo» icono de notificación.

"Wiki Zenity Monitor" Un simple script para bash que monitorea articulos de wikimedia.

Script para bash que realiza una consulta a wikipedia y en caso de encontrar un cambio notifica con un icono; al presionar abre el navegador con el histórico del cambio.

#!/bin/bash
ayuda() { echo '
#===============================================================================
#        SCRIPT:              * Wikipedia Zenity Monitor *
#   DESCRIPCION:  Monitor de paginas en la familia wikipedia, ya sea articulos o
#                 listas de seguimiento
# 
#           USO:  WiZeMo.sh [-h|-?|--help|--ayuda] [-v]
#      OPCIONES:  -h   Ayuda
#                 -v   Version 
#  DEPENDENCIAS:  zenity
#                 wget
#          BUGS:  ---
#         NOTAS:  Emplea el archivo de texto «lista.wizemo» en cual contiene el
#                 listado de articulos o segimiento, ejemplo:
#                    es.wikinews|Fallece_la_medallista_olímpica
#                    es.wikiquote|Movimiento_YoSoy132
#                    es.wikivoyage|Usuario:PetrohsW
#                    es.wikipedia|Portal:Cultura_Mexica
#                    commons.wikimedia|PetrohsW|x1x1x1x1x1x1x
#                    es.wikipedia|PetrohsW|x0x0x0x0x0x0x0x0x0
#                    mx.wikimedia|PetrohsW|x2x2x2x2x2x2x2x2x2
#                    mx.wikimedia|Especial:CambiosRecientes
#                 donde x0x0 corresponde a su llave como usuario y PetrohsW su 
#                 cuenta
#     VERSIONES:  20140317 0.4.0 petrohs/  Agregando Especial:CambiosRecientes
#                                          para monitorear
#                 20130415 0.3.1 petrohs/  Cambiando a Special:Watchlist
#                 20130405 0.3.0 petrohs/  Integrando version de Articulos y
#                                           version de Seguimiento
#           URL:  
#===============================================================================';}

#ayuda y version
 if [ "$1" = "-h" -o "$1" = "--help" -o "$1" = "-?" -o "$1" = "--ayuda" ]; then ayuda; exit 1;
 elif [ "$1" = "-v" -o "$1" = "--version" ]; then ayuda | grep VERSIONES | cut -d: -f2 | cut -d/ -f1; exit 1; fi;

#configuraciones
 RutaTrabajo="/home/petrohs/tmp/wZ2/WW";
      Imagen="${RutaTrabajo}/Wikipedia-logo-es.png";
 TiempoEntreConsultas=300; #en segundos

#validando existencia de archivos
 if [ ! -s ${RutaTrabajo}/lista.wizemo ]
   then
      echo "WiZeMo\Error No existe el archivo ${RutaTrabajo}/lista.wizemo necesario para monitoriear";
      echo "WiZeMo\Error WiZeMo.sh -? para descripcion del formato de archivo";
      exit 2;
   fi;
 if [ ! -r ${Imagen} ]; then echo "WiZeMo\Aviso No esta presente el icono $Imagen"; fi;
 if [ ! -r ${RutaTrabajo}/wizemoTmp ]; then mkdir ${RutaTrabajo}/wizemoTmp/; fi;

#ciclo infinito
 while true
   do
     for PAGS in `cat ${RutaTrabajo}/lista.wizemo | egrep -v "^$|^#"`
       do
          WIKI=`echo "$PAGS" | cut -d\| -f1`;
           ART=`echo "$PAGS" | cut -d\| -f2`;
         TOKEN=`echo "$PAGS" | cut -d\| -f3`;
               
         if [ ! -z "$TOKEN" ]; #Es articulo?
           then 
              URL="feedwatchlist&allrev=allrev&wltoken=${TOKEN}&feedformat=atom&hours=72&wlowner"
           elif [ "$ART" == "Especial:CambiosRecientes" ]
            then
              URL="query&list";
              ART="recentchanges";
            else
              URL="query&prop=revisions&rvprop=user|timestamp|comment&format=xml&titles";
           fi;
         URL="https://${WIKI}.org/w/api.php?action=${URL}=${ART}"
            
         if [ ! -r ${RutaTrabajo}/wizemoTmp/${ART}.${WIKI} ] #Obtener la primera copia
           then
             wget --no-check-certificate -O ${RutaTrabajo}/wizemoTmp/${ART}.${WIKI} $URL -o /dev/null
             continue;
           fi
                         
         wget --no-check-certificate -O ${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}_n $URL -o /dev/null
           if [ "$ART" == "recentchanges" ]
             then
               cat "${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}_n" | grep -v "Plantilla:Indicadores econ" | grep -v "rccontinue" | grep -v "Served by mw" > ${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}_nn
               mv "${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}_nn" "${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}_n"
             fi

         if [ -z $TOKEN ]
           then
             DIF=`diff ${RutaTrabajo}/wizemoTmp/${ART}.${WIKI} ${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}_n | wc -l`;
             usu=`cat ${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}_n | sed -e "s/>/>\n/g" | grep "<rev user" | cut -d\" -f2`;
               if [ -z "$usu" ]; then usu="$WIKI"; fi;
             des=`cat ${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}_n | sed -e "s/>/>\n/g" | grep "<rev user" | cut -d\" -f6`
               if [ "$ART" == "recentchanges" ]; then ART="Especial:CambiosRecientes"; fi;
             TEXT="${ART}
 ${usu}
  ${des}";
             URL="https://${WIKI}.org/w/index.php?title=${ART}&action=history";
           else
             head -20 ${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}_n > ${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}_n2;
             head -20 ${RutaTrabajo}/wizemoTmp/${ART}.${WIKI} > ${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}_2;
             DIF=`diff ${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}_2 ${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}_n2 | tail -n +5 | wc -l`;
             rm ${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}_n2 ${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}_2;
             TEXT="$ART $WIKI";
             URL="https://${WIKI}.org/wiki/Special:Watchlist";
           fi
                 
        if [ $DIF -ne 0 ] 
          then
            zenity --notification --text="$TEXT" --window-icon=${Imagen}
            x-www-browser "$URL";
          fi         
              
        if [ "$ART" == "Especial:CambiosRecientes" ]; then ART="recentchanges"; fi;
        mv "${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}_n" "${RutaTrabajo}/wizemoTmp/${ART}.${WIKI}"
                
       done
       sleep $TiempoEntreConsultas;
   done

#La enciclopedia libre que todos podemos editar
 exit 0;

Articulo

[editar]

El script superior emplea el archivo lista.wizemo en el cual se colocan el listado de articulos para monitorear en formato:
prefijo.wiki|articulo

es.wikinews|Fallece_la_medallista_olímpica_mexicana_Soraya_Jiménez
es.wikipedia|Movimiento_YoSoy132
es.wikipedia|Usuario:PetrohsW
es.wikipedia|Portal:Cultura_Mexica

Lista de seguimiento

[editar]

El script superior emplea el archivo lista.wizemo en el cual se colocan el listado de wikis para monitorear en formato:
prefijo.wiki|usuario|token

es.wikinews|PetrohsW|00000000xx0x0x00x0000xxxxx00000000000000
es.wikipedia|PetrohsW|0x000000xx0000x00xx0000xx00000xxx0000xx0
es.wikivoyage|PetrohsW|000000x00xxxx0xx00x0xx0x000xx000000000x0
es.wikiquote|PetrohsW|0x00000xx0000xxx0x0x00x00x000x0x00000xx0
commons.wikimedia|PetrohsW|00000x00x000x000x00xx000xxx0000x000x0000
mx.wikimedia|PetrohsW|xx0x00000x00xx0xxx0000000xxx0x00xx00xxxx

El token se encuentra al ingresar a la liga Especial:Seguimiento y despues buscar la opcion atom en el recuadro de herramientas

Cambios Recientes

[editar]

El script superior emplea el archivo lista.wizemo en el cual se colocan el listado de wikis para monitorear en formato:
prefijo.wiki|Especial:CambiosRecientes

es.wikinews|Especial:CambiosRecientes
mx.wikimedia|Especial:CambiosRecientes


Nos informa que fue editada la Categoría:México por el usuario Ralgis como resumen Desecha la revisión