Usuario:PetrohsW/herramientas/WiZeMo
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
editarEl 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
editarEl 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
editarEl 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