2011-10-01 40 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 –