¿Cómo ver el feed RSS para nuevas entradas del script bash?


10

Necesito ver un feed RSS de nuestro servidor hudson ci. Cada vez que hay una nueva entrada disponible, quiero reproducir un sonido llamando #>play sound.wav.

¿Alguien conoce una herramienta que pueda ver un feed rss y disparar un comando cada vez que aparece una nueva entrada?

Eché un vistazo, rsstailpero obtiene todas las entradas del feed y no las últimas o solo las que son nuevas desde la última búsqueda.


¿Quizás pueda modificar bashpodder.shell? ( lincgeek.org/bashpodder )
Johan

¿Estás seguro de que estás usando rsstailcorrectamente? Su página de manual dice que el intervalo predeterminado de verificación de nuevas fuentes es de 15 minutos y que el -iparámetro puede cambiarlo . (Recuerde que a través de RSS diseño, que no se consigue la información de actualización al instante, usted tiene que sondeo.)
rozcietrzewiacz

1
Demonios si. rsstail -i 3 -u example.com/rss.xml -n 0 eso es todo. ¡Muchas gracias!
Martin

Respuestas:


10

Puede intentar usar Newsbeuter, que tiene una opción para ejecutar un comando externo (consulte notify-program la documentación ).

Canto también tiene algunos ganchos personalizables, aunque todo el sistema de configuración parece un poco más complicado a primera vista.

Con rsstail+ shell también puedes invocar comandos externos. Comience con lo que ya descubrió:

rsstail -i 3 -u example.com/rss.xml -n 0

y canalizar la salida a un while readbucle:

rsstail -i 3 -u example.com/rss.xml -n 0 | while read line
  do
    aplay /some/sound/file.wav
    echo "$line"
  done

4

Esa es la solución:

rsstail -i 3 -u example.com/rss.xml -n 0 | while read x ; do play fail.ogg ; done

así que cada vez que se lanza un nuevo tema en el feed, se reproducirá el sonido. el juego está empaquetado en sox


Entiendo que esto resuelve la parte de refrescar, pero no es (todavía) una forma de reproducir sonido (la parte principal que solicitó). Si también lo resolvió, escriba cómo.
rozcietrzewiacz

tu derecho acaba de actualizar ...
martin

1

Tu podrías intentar:

#!/bin/bash
last=""
while true
do
    now="$(curl http://yourdomain/feed.rss 2> /dev/null | grep pubDate | head -1)"
    test "$last" != "$now" && play mysound.wav
    last="$now"
    sleep 1m
done
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.