Usuario:PetrohsW/herramientas/WiZeMo

«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