2009-01-14 18 views
9

Me gustaría analizar rss feeds y descargar podcasts en mi ReadyNas que funciona 24/7 de todos modos.Cómo analizar rss-feeds/xml en un guión de shell

Así que estoy pensando en tener un script de shell verificando periódicamente las actualizaciones y wget de desove para descargar los archivos.

¿Cuál es la mejor manera de hacer el análisis sintáctico?

Gracias!

+0

Quizás tenga que agregar: estoy en una línea muy lenta, es por eso que no estoy ejecutando mi estación de trabajo. – Oli

Respuesta

19

veces un simple chiste con los comandos estándar de la cáscara puede ser suficiente para esto:

wget -q -O- "http://www.rss-specifications.com/rss-podcast.xml" | grep -o '<enclosure url="[^"]*' | grep -o '[^"]*$' | xargs wget -c 

Seguro que esto no funciona en todos los casos, pero es lo suficientemente buena frecuencia.

+1

Brillante. Una nota de advertencia (wget_1.13.4-3 con polipo_1.0.4.1-1.2): la opción "-c" (para continuar descargas interrumpidas) puede no funcionar si también usa un servidor proxy. Parece que sigue reintentando los archivos que ya están completos. – sourcejedi

+1

Muy elegante. Buen trabajo. – Clarkey

+0

esto funciona, solo una pequeña cosa, ¿hay alguna manera de descargar solo lo último en la alimentación RSS ?, para que pueda ejecutarlo a través de cron, no quiero descargar 400 episodios de un programa:/ – wiak

2

¿Tiene acceso a awk? Tal vez podría usar XMLGawk

0

Puede usar xsltproc desde libxml2 y escribir una hoja de estilos xsl simple que analiza el rss y muestra una lista de enlaces.

1

Yo he escrito el siguiente script sencillo para la descarga de XML desde Amazon S3, por lo que sería útil para analizar diferentes tipos de archivos XML:

#!/bin/bash 
# 
# Download all files from the Amazon feed 
# 
# Usage: 
# ./dl_amazon_feed_files.sh http://example.s3.amazonaws.com/ 
# Note: Don't forget about slash at the end 
# 

wget -qO- "$1" | grep -o '<Key>[^<]*' | grep -o "[^>]*$" | xargs -I% -L1 wget -c "$1%" 

Esto es similar al enfoque @leo answer.

+0

Otorgue algunos créditos a @leo al menos ... – aloisdg

+0

No recuerdo si se utilizó alguna parte, ya que esta es una sintaxis muy básica que estoy usando muy a menudo sin más. Sin embargo, he vinculado la publicación por si acaso. – kenorb

Cuestiones relacionadas