2011-12-26 15 views
5

मैं YQL उपयोग कर रहा हूँ फ़ीड की एक सूची प्राप्त करने के लिए, इस तरह शामिलचयन क्वेरी में अतिरिक्त क्षेत्र

$urls = array(
    'delicious' => 'http://feeds.delicious.com/v2/rss/foo', 
    'delicious' => 'http://feeds.delicious.com/v2/rss/anotherfoo', 
    'lastfm' => 'http://ws.audioscrobbler.com/1.0/user/foo/recenttracks.rss', 
    ... 
); 

और मैं की एक सरणी मिल शीर्षक/लिंक/पबडेट फ़ील्ड वाले आइटम। "लिंक" फ़ील्ड के अलावा, मुझे कोई जानकारी नहीं मिलती है जो मुझे बता सकती है कि आइटम कहां से आता है।

कैसे मुझे लगता है कि यूआरएल (मूल्य) से मेल खाती है array_keys($urls) से एक अतिरिक्त क्षेत्र में शामिल कर सकते हैं? मूल रूप से मैं आइटम delicious तरह से आता है, एक क्षेत्र है कि मुझे क्या साइट से कहता है की जरूरत है lastfm आदि

LastFM के लिए मैं strpos के साथ जांच कर सकता है "last.fm" स्ट्रिंग $item['url'] में मौजूद है, लेकिन स्वादिष्ट के साथ लिंक यह संभव नहीं है :(


+0

मुझे लगता है कि आपको इसके लिए YQL क्वेरी बदलने की आवश्यकता है, इसलिए परिणाम पंक्ति में एक फ़ील्ड है जो दिखाता है कि किस URL से अनुरोध किया गया था। तो क्या आपने SELECT फ़ील्ड में यूआरएल जोड़ने की कोशिश की है? YQL में बहुत ज्ञात नहीं है, लेकिन शायद एक तरीका है। – hakre

उत्तर

1

और मुझे शीर्षक/लिंक/पबडेट फ़ील्ड वाले आइटमों की एक श्रृंखला मिलती है। "लिंक" फ़ील्ड के अलावा, मुझे कोई जानकारी नहीं मिलती है जो मुझे बता सकती है कि आइटम कहां से आता है।

जहां प्रत्येक आइटम से आता है से जानकारी प्राप्त करने के लिए, source क्षेत्र जोड़ें:

SELECT title, link, pubDate, source FROM rss 
    ... 

परिणाम तो प्रत्येक प्रविष्टि में एक source तत्व है, जो एक url विशेषता है जो url होता है में शामिल होंगे आइटम से प्राप्त किया गया है:

<results> 
    <item> 
     <title>Git Immersion - Brought to you by EdgeCase</title> 
     <pubDate>Wed, 21 Dec 2011 22:15:44 +0000</pubDate> 
     <link>http://gitimmersion.com/</link> 
     <source url="http://feeds.delicious.com/v2/rss/geek">geek's links</source> 
    </item> 

YQL Demo

आप * का उपयोग करके सभी क्षेत्रों के लिए देख सकते हैं, यह कैसे मैं source क्षेत्र बारे में पता चला है:

SELECT * FROM rss 
    WHERE url IN ('http://feeds.delicious.com/v2/rss/geek', 'http://feeds.delicious.com/v2/rss/foo') 

YQL Query Demo

मुझे लगता है कि यह आपके प्रश्न का उत्तर चाहिए। स्थानांतरित डेटा की मात्रा को कम करने के लिए, आप भी एक मात्र स्रोत का यूआरएल विशेषता इसलिए की तरह चुन सकते हैं:

SELECT title, link, pubDate, source.url FROM rss 
    ... 

रूप में अच्छी तरह Using YQL to load and convert RSS feeds really, really fast और How to use YQL to merge 2 RSS feeds sorted by pubDate? देखें।


निम्नलिखित YQL वाक्य रचना पर एक पुराने टिप्पणी है:

कृपया ध्यान दें कि implode("','", array_values($urls)) एक अवैध वाक्य रचना में अपने YQL छोड़ देंगे ले:

... IN (Urla ',' यूआरएलबी ',' यूआरएलसी)

आप शुरुआत और अंत में गायब एकल उद्धरण देखते हैं? उन्हें जोड़ें:

"'".implode("','", $urls)."'" 

और आपको ठीक होना चाहिए। कम से कम आपको एक त्रुटि कम होनी चाहिए।

+0

ठीक है कि मेरे प्रश्न में सिर्फ एक टाइपो था :) मुझे अभी भी यह पता लगाना होगा कि कैसे जोड़ना है मेरा क्षेत्र ... – Alex

+0

@Alex: मैंने जोड़ा है कि आप अपना क्षेत्र कैसे वापस कर सकते हैं, लेकिन मुझे सच में यकीन नहीं है कि अगर आपने यही पूछा है, तो मुझे बताएं। – hakre

1

आप बस अपने क्षेत्र सूची में URL जोड़ने नहीं कर सकते? या फिर आप यूआरएल को पार्स करने के एक समारोह के लिए देख रहे हैं?

का चयन करें शीर्षक, लिंक, पब तारीख, राष्ट्रीय स्वयंसेवक संघ से URL

+०१२३५१६४१०६१

क्या मुझे याद आ रहा है कि उपरोक्त क्यों काम नहीं करेगा?

+0

यह अभी काम नहीं करता है, आरएसएस स्रोतों में एक यूआरएल फ़ील्ड नहीं है, इसलिए यह वापस नहीं किया गया है। – hakre

1

YQL के बाद से एसक्यूएल नहीं है, और केवल अपने प्रश्नों के लिए SQL का सिंटैक्स का उपयोग करें, वहाँ (अपने मामले url में) SELECT कीवर्ड को कोई मौका नहीं WHERE खंड में प्रयोग किया जाता है। SELECT केवल xml फ़ाइल के क्षेत्र, url कीवर्ड के साथ दिए गए पहुँच सकते हैं। YQL आपके लिए इसे पार्स करेगा और वांछित फ़ील्ड लौटाएगा। और कारण कई अलग अलग आरएसएस मानकों देखते हैं, और नहीं हर मानक बल फ़ीड अपने स्वयं के यूआरएल को रोकने के लिए, अपनी संभव नहीं फ़ीड कि हर मामले में यूआरएल वापस आ जाएगी में एक क्षेत्र का चयन करें।

मुझे लगता है, अपने ही मौका $urls सरणी के माध्यम से पुनरावृति और फ़ीड प्रति एक क्वेरी करने के लिए किया जाएगा। केवल इस तरह आप फ़ीड-यूआरएल और इस फ़ीड के सामान के बीच संबंध रख सकते हैं।

+0

लेकिन मैं अपनी चयन क्वेरी में फ़ील्ड कैसे जोड़ूं? यही वह नहीं है जो मुझे नहीं पता कि कैसे करें ... – Alex

+0

SELECT title, link, pubDate, url FROM [...] Corubba

+0

यह काम नहीं करता है, मुझे अभी भी केवल 3 फ़ील्ड मिलते हैं जिनका मैंने उल्लेख किया है – Alex