Bas komut dosyasından yeni girişler için rss özet akışını nasıl izleyebilirim?


10

Hudson Ci sunucumuzdan bir RSS yayını izlemem gerekiyor. Yeni bir giriş mevcut olduğunda arayarak bir ses çalmak istiyorum #>play sound.wav.

Herkes yeni bir girdi göründüğünde bir rss beslemesini izleyebilen ve bir komut gönderebilen bir araç biliyor mu?

Bir göz attım rsstailama en son ya da sadece son aramadan beri yeni olanları değil, tüm girişleri feed'den alır.


Belki değiştirebilirsiniz bashpodder.shell? ( lincgeek.org/bashpodder )
Johan

rsstailDoğru kullandığınızdan emin misiniz ? Onun sayfası yeni beslemeleri kontrol etmenin varsayılan aralığının 15 dakika olduğunu ve -iparametre ile değiştirilebileceğini söylüyor . (RSS tasarımıyla, güncelleme bilgilerini asla anında elde edemeyeceğinizi, anket yapmanız gerektiğini unutmayın.)
rozcietrzewiacz

1
cehennem evet. rsstail -i 3 -u example.com/rss.xml -n 0 bu kadar. Çok teşekkürler!
martin

Yanıtlar:


10

Harici bir komut çalıştırma seçeneği olan Newsbeuter'ı kullanmayı deneyebilirsiniz ( notify-program belgelere bakın ).

Canto'nun bazı özelleştirilebilir kancaları da var, ancak tüm yapılandırma sistemi ilk bakışta biraz daha karmaşık görünüyor.

rsstail+ Shell ile harici komutları da çağırabilirsiniz. Daha önce çözdüğünüz şeyle başlayın:

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

ve çıktıyı bir while readdöngüye bağlayın:

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

4

İşte çözüm:

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

böylece feed'de yeni bir konu her yayınlandığında ses çalınır. oyun sox içinde paketlenmiştir


Bunun yenileme ile ilgili kısmı çözdüğünü anlıyorum, ancak (henüz) ses çalmanın bir yolu değil (istediğiniz ana bölüm). Siz de çözdüyseniz, lütfen nasıl yazacağınızı yazın.
rozcietrzewiacz

haklısın. sadece güncelleniyor ...
martin

1

Deneyebilirsiniz:

#!/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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.