Usuario:PetrohsW/herramientas/WiZeMo

"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
