Come guardare feed rss per nuove voci dallo script bash?


10

Devo guardare un feed RSS dal nostro server ci hudson. Ogni volta che è disponibile una nuova voce, voglio riprodurre un suono chiamando #>play sound.wav.

Qualcuno conosce uno strumento che può guardare un feed RSS e lanciare un comando ogni volta che appare una nuova voce?

Ho dato un'occhiata rsstailma ottiene tutte le voci dal feed e non le ultime o solo quelle nuove dall'ultima ricerca.


Forse puoi modificare bashpodder.shell? ( lincgeek.org/bashpodder )
Johan

Sei sicuro di usare rsstailcorrettamente? La sua manpage indica che l'intervallo predefinito per la ricerca di nuovi feed è di 15 minuti e può essere modificato dal -iparametro. (Ricorda che in base alla progettazione RSS, non otterrai mai le informazioni di aggiornamento istantaneamente, devi effettuare il polling.)
rozcietrzewiacz

1
diavolo si. rsstail -i 3 -u example.com/rss.xml -n 0 questo è tutto. Molte grazie!
martin,

Risposte:


10

Puoi provare a usare Newsbeuter che ha un'opzione per eseguire un comando esterno (vedi notify-program nella documentazione ).

Canto ha anche alcuni hook personalizzabili, sebbene l'intero sistema di configurazione appaia un po 'più complicato a prima vista.

Con rsstail+ shell puoi anche invocare comandi esterni. Inizia con quello che hai già capito:

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

e reindirizza l'output a un while readloop:

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

4

Questa è la soluzione:

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

quindi ogni volta che viene pubblicato un nuovo argomento nel feed, il suono verrà riprodotto. il gioco è confezionato in sox


Capisco che questo risolva la parte relativa all'aggiornamento, ma non è (ancora) un modo per riprodurre il suono (la parte principale che hai chiesto). Se anche tu l'hai risolto, per favore scrivi come.
rozcietrzewiacz,

destra. sto solo aggiornando ...
martin

1

Puoi provare:

#!/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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.