2011-10-01 56 views
0

我嘗試使用google feed api構建一個url檢查器。
Jquery - 網址檢查器(rss,音頻或視頻播客)

我的問題:
1:if(result)檢查不起作用。也許是異步問題?
2:任何想法的RSS,音頻/視頻播客檢查?我敢肯定,我得到了響應的音頻/視頻文件的URL(但我現在是盲目的)。

我的想法是檢查這個網址。

// somthing like that 
if(typeof xxxx == 'undefined') -> rss feed 
if xxxx.match(/mp3|wav|XXX/gi) -> audio feed 
if xxxx.match(/mpg|avi|flv/gi) -> video feed 

JS

$(document).ready(function() 
{ 
    // valid rss feed 
    var result = urlCheck('http://www.bild.de/rssfeeds/vw-home/vw-home-16725562,short=1,sort=1,view=rss2.bild.xml'); 
    if(result){ console.warn('result1 is a '+result.urlIsA+' '); console.dir(result); } 

    // valid video podcast 
    var result = urlCheck('http://www.tagesschau.de/export/video-podcast/webl/tagesschau/'); 
    if(result){ console.warn('result1 is a '+result.urlIsA+' '); console.dir(result); } 

    // valid audio podcast 
    var result = urlCheck('http://chaosradio.ccc.de/chaosradio-latest.rss'); 
    if(result){ console.warn('result1 is a '+result.urlIsA+' '); console.dir(result); } 

}); 
function urlCheck(url) 
{ 
    var feed = new google.feeds.Feed(url); 
    feed.setResultFormat(google.feeds.Feed.MIXED_FORMAT); 
    feed.setNumEntries('1'); 
    feed.load(function(result) 
    { 
     if (!result.error) 
     { 
      var allEntries = result.feed.entries; 
      console.info(url); 
      console.dir(allEntries); 

      /* if(XXX.match(/XXXX/,gi)) { 
       allEntries.urlIsA = 'rss feed'; 
       return allEntries; 
      } 
      if(XXX.match(/XXXX/,gi)) { 
       allEntries.urlIsA = 'audio podcast'; 
       return allEntries; 
      } 
      if(XXX.match(/XXXX/,gi)) { 
       allEntries.urlIsA = 'video podcast'; 
       return allEntries; 
      } */ 

      return false; 
     } 
     else { return false; } 
    }); 
} 


工作實例
http://jsbin.com/unikak/edit#javascript,html

通知:你必須複製代碼放在* .html文件中,否則會從jsBin中得到錯誤

google.feeds.Feed is not a constructor 

回答

1

更改您的正則表達式,這樣只有mpg在字符串的結尾匹配: /(mpg|avi|flv/)$/gi

而不是使用return,利用回調函數:

function urlCheck(url, callback){ 

.... 
//Insread of return false: 
callback(false); 
//Instead of return true: 
callback(true); 

在你的結果檢查:

urlCheck("http://....", function(result){ 
    if(result){ 
     console.warn(...); 
    } else { 
     //.. 
    } 
}) 
+0

謝謝,作品很棒:)。順便說一句,你知道媒體文件的鏈接在哪裏嗎?它必須在xmlNode中,對嗎? – Peter

+1

請參閱樹結構的文檔:http://code.google.com/intl/nl/apis/feed/v1/devguide.html#resultXml –