Bagaimana cara menonton rss feed untuk entri baru dari skrip bash?


10

Saya perlu menonton umpan RSS dari server hudson ci kami. Setiap kali entri baru tersedia saya ingin memutar suara dengan menelepon #>play sound.wav.

Adakah yang tahu alat yang bisa menonton rss-feed dan menjalankan perintah setiap kali entri baru muncul?

Saya telah melihat rsstailtetapi mendapat semua entri dari feed dan bukan yang terbaru atau hanya yang baru sejak pencarian terakhir.


Mungkin Anda bisa memodifikasi bashpodder.shell? ( lincgeek.org/bashpodder )
Johan

Apakah Anda yakin menggunakan rsstaildengan benar? Its halaman manual mengatakan thet interval default memeriksa feed baru adalah 15 menit dan dapat diubah oleh -iparameter. (Ingat bahwa dengan desain RSS, Anda tidak akan pernah mendapatkan informasi pembaruan secara instan, Anda harus polling.)
rozcietrzewiacz

1
Tentu saja. rsstail -i 3 -u example.com/rss.xml -n 0 itu saja. Terima kasih banyak!
martin

Jawaban:


10

Anda dapat mencoba menggunakan Newsbeuter yang memiliki opsi untuk menjalankan perintah eksternal (lihat notify-program di dokumentasi ).

Canto juga memiliki beberapa pengait yang dapat disesuaikan, meskipun secara keseluruhan sistem konfigurasi terlihat sedikit lebih rumit pada pandangan pertama.

Dengan rsstail+ shell Anda juga dapat menjalankan perintah eksternal. Mulailah dengan apa yang sudah Anda ketahui:

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

dan menyalurkan output ke 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

Itulah solusinya:

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

jadi setiap kali topik baru dilepaskan dalam umpan, suara akan diputar. play dikemas dalam sox


Saya mengerti bahwa ini memecahkan bagian tentang penyegaran, tetapi bukan (belum) cara untuk memainkan suara (bagian utama yang Anda minta). Jika Anda menyelesaikannya juga, silakan tulis caranya.
rozcietrzewiacz

kanan Anda. baru saja memperbarui ...
martin

1

Kamu bisa mencoba:

#!/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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.