Làm cách nào để xem rss feed cho các mục mới từ bash script?


10

Tôi cần xem một nguồn cấp dữ liệu RSS từ máy chủ hudson ci của chúng tôi. Mỗi khi có mục mới, tôi muốn phát âm thanh bằng cách gọi #>play sound.wav.

Có ai biết một công cụ có thể xem rss-feed và bắn lệnh mỗi khi một mục mới xuất hiện không?

Tôi đã xem xét rsstailnhưng nó nhận được tất cả các mục từ nguồn cấp dữ liệu và không phải là mục mới nhất hoặc chỉ những mục mới kể từ lần tra cứu cuối cùng.


Có lẽ bạn có thể sửa đổi bashpodder.shell? ( lincgeek.org/bashpodder )
Johan

Bạn có chắc là bạn đang sử dụng rsstailđúng không? Nó manpage nói thét khoảng mặc định kiểm tra cho thức ăn mới là 15 phút và nó có thể được thay đổi bởi các -itham số. (Hãy nhớ rằng theo thiết kế RSS, bạn sẽ không bao giờ nhận được thông tin cập nhật ngay lập tức, bạn phải bỏ phiếu.)
rozcietrzewiacz

1
chết tiệt rsstail -i 3 -u example.com/rss.xml -n 0 đó là nó. Cảm ơn rất nhiều!
martin

Câu trả lời:


10

Bạn có thể thử sử dụng Newsbeuter có tùy chọn để chạy lệnh bên ngoài (xem notify-program trong tài liệu hướng dẫn ).

Canto cũng có một số móc tùy biến, mặc dù toàn bộ hệ thống cấu hình có vẻ phức tạp hơn một chút ngay từ cái nhìn đầu tiên.

Với rsstail+ shell, bạn cũng có thể gọi các lệnh bên ngoài. Bắt đầu với những gì bạn đã tìm ra:

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

và dẫn đầu ra thành một while readvòng lặp:

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

4

Đó là giải pháp:

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

vì vậy mỗi khi một chủ đề mới được phát hành trong nguồn cấp dữ liệu, âm thanh sẽ được phát. chơi được đóng gói trong sox


Tôi hiểu rằng điều này giải quyết phần làm mới, nhưng không phải là (cách) để phát âm thanh (phần chính bạn yêu cầu). Nếu bạn giải quyết nó là tốt, xin vui lòng viết như thế nào.
rozcietrzewiacz

quyền của bạn. chỉ cần cập nhật ...
martin

1

Bạn có thể thử:

#!/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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.