Як переглянути RSS-канал для нових записів з bash script?


10

Мені потрібно переглянути RSS-канал із нашого сервера hudson ci. Щоразу, коли з'являється новий запис, я хочу відтворювати звук, дзвонивши #>play sound.wav.

Хтось знає інструмент, який може переглядати rss-канал та виконувати команду щоразу, коли з’являється новий запис?

Я переглянув, rsstailале він отримує всі записи з каналу, а не найновіші або лише ті, які є новими з моменту останнього пошуку.


Можливо, ви можете змінити bashpodder.shell? ( lincgeek.org/bashpodder )
Йоган

Ви впевнені, що використовуєте rsstailправильно? Його сторінка керівництво каже изолейцин за замовчуванням інтервал перевірки нових каналів складають 15 хвилин , і він може бути змінений -iпараметром. (Пам'ятайте, що за допомогою дизайну RSS ви ніколи не отримаєте інформацію про оновлення миттєво, вам доведеться опитуватись.)
rozcietrzewiacz

1
в біса так. rsstail -i 3 -u example.com/rss.xml -n 0 це. Дуже дякую!
мартн

Відповіді:


10

Ви можете спробувати скористатися Newsbeuter, який має можливість запустити зовнішню команду (див notify-program . Документацію ).

У Canto також є декілька налаштованих гачків , хоча вся система конфігурації виглядає трохи складніше на перший погляд.

За допомогою rsstailоболонки + ви також можете викликати зовнішні команди. Почніть з того, що ви вже з’ясували:

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

і передає висновок в while readцикл:

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

4

Це рішення:

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

тому щоразу, коли у стрічці виходить нова тема, звук буде відтворюватися. гра упакована в сокс


Я розумію, що це вирішує частину оновлення, але не є (поки) способом відтворення звуку (основна частина, яку ви просили). Якщо ви вирішили це також, напишіть, будь ласка, як.
rozcietrzewiacz

Ваше право. просто оновлення ...
март

1

Ви можете спробувати:

#!/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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.