2009-01-14 11 views
9

Je voudrais analyser les flux rss et télécharger podcasts sur mon ReadyNas qui fonctionne 24/7 de toute façon. Je pense donc à avoir un script shell vérifiant périodiquement les flux et générant wget pour télécharger les fichiers.Comment analyser rss-feeds/xml dans un script shell

Quelle est la meilleure façon de faire l'analyse?

Merci!

+0

Peut-être que je dois ajouter: Je suis sur une ligne très lente, c'est pourquoi je ne cours pas mon poste de travail. – Oli

Répondre

19

Parfois, une simple doublure avec des commandes standard shell peut être assez pour cela:

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

Bien sûr, cela ne fonctionne pas dans tous les cas, mais il est souvent assez bon.

+1

Brillant. Une note d'avertissement (wget_1.13.4-3 avec polipo_1.0.4.1-1.2): l'option "-c" (pour continuer les téléchargements interrompus) peut ne pas fonctionner si vous utilisez également un serveur proxy. Il semble continuer à réessayer les fichiers qui sont déjà complets. – sourcejedi

+1

Très élégant. Bon travail. – Clarkey

+0

cela fonctionne, juste une petite chose, est-il un moyen de télécharger uniquement le dernier dans le flux rss ?, donc vous pouvez le lancer via cron, je ne veux pas télécharger 400 épisodes d'un spectacle:/ – wiak

2

Avez-vous accès à awk? Peut-être pourriez-vous utiliser XMLGawk

0

Vous pouvez utiliser xsltproc de libxml2 et écrire une simple feuille de style xsl qui analyse le rss et affiche une liste de liens.

1

J'ai écrit le script simple suivant pour télécharger XML d'Amazon S3, il serait utile pour analyser différents types de fichiers 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%" 

Cette approche similaire est à @leo answer.

+0

Donner quelques crédits à @leo au moins ... – aloisdg

+0

Je ne me souviens pas si une partie quelconque a été utilisée, car c'est une syntaxe très basique que j'utilise très souvent sans le vouloir. Cependant, j'ai lié le poste juste au cas où. – kenorb

Questions connexes