2009-01-14 11 views
9

मैं आरएसएस फ़ीड को पार्स करना चाहता हूं और मेरे रेडीनास पर podcasts डाउनलोड करना चाहता हूं जो कि 24/7 चल रहा है।एक शेल स्क्रिप्ट में rss-feeds/xml का विश्लेषण कैसे करें

तो मैं फाइलों को डाउनलोड करने के लिए समय-समय पर फीड और स्पॉन्गिंग wget खोलने के बारे में सोच रहा हूं।

पार्सिंग करने का सबसे अच्छा तरीका क्या है?

धन्यवाद!

+0

शायद मुझे यह जोड़ना है: मैं बहुत धीमी रेखा पर हूं, इसलिए मैं अपना वर्कस्टेशन नहीं चला रहा हूं। – Oli

उत्तर

19

कभी कभी खोल मानक आदेशों के साथ एक सरल एक लाइनर में इसके लिए पर्याप्त हो सकता है:

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

ज़रूर इस हर मामले में काम नहीं करता है, लेकिन यह पर्याप्त अक्सर अच्छा है।

+1

शानदार। एक सावधानी नोट (polipo_1.0.4.1-1.2 के साथ wget_1.13.4-3): "-c" विकल्प (बाधित डाउनलोड जारी रखने के लिए) यदि आप प्रॉक्सी सर्वर का भी उपयोग करते हैं तो काम नहीं कर सकता है। ऐसा लगता है कि फाइलें पुनः प्रयास कर रही हैं जो पहले से ही पूर्ण हैं। – sourcejedi

+1

बहुत सुरुचिपूर्ण। अच्छा कार्य। – Clarkey

+0

यह काम करता है, बस एक छोटी सी चीज है, केवल आरएसएस फ़ीड में नवीनतम डाउनलोड करने का कोई तरीका है ?, तो आप इसे क्रॉन के माध्यम से चला सकते हैं, मैं एक शो के 400 एपिसोड डाउनलोड नहीं करना चाहता हूं:/ – wiak

1

मैं के बारे में XMLStartlethere और there

पढ़ा लेकिन वहाँ उपलब्ध ReadyNAS NV + करने के लिए एक बंदरगाह है?

2

क्या आपके पास अजीब तक पहुंच है? हो सकता है कि आप XMLGawk

0

आप libxml2 से xsltproc का उपयोग कर सकते हैं और एक साधारण xsl स्टाइलशीट लिख सकते हैं जो आरएसएस को पार करता है और लिंक की सूची आउटपुट करता है।

1

मैं अमेज़न S3 से 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%" 

यह @leo answer के समान दृष्टिकोण है।

+0

कम से कम @leo को कुछ क्रेडिट दें ... – aloisdg

+0

मुझे याद नहीं है कि किसी भी हिस्से का उपयोग किया गया था, क्योंकि यह बहुत ही बुनियादी वाक्यविन्यास है जिसे मैं अक्सर हाथ से बाहर कर रहा हूं। हालांकि, मैंने सिर्फ इस मामले को पोस्ट किया है। – kenorb