Bashスクリプトからの新しいエントリのRSSフィードを監視する方法は?


10

ハドソンCIサーバーからのRSSフィードを見る必要があります。新しいエントリが利用可能になるたびに、を呼び出してサウンドを再生し#>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+外部コマンドINVOKEもできるシェル。すでに理解していることから始めます。

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.