Google Feed API - 返回媒体:缩略图

时间:2015-02-08 17:39:25

标签: javascript api rss

我目前正在使用Google Feed API并尝试从RSS Feed中检索缩略图("媒体:缩略图")

媒体:RSS Feed中的缩略图行如下所示:

<media:thumbnail url="http://anyurl.com/thumbnailname.jpg" width="150" height="150"/>

注意:缩略图不属于媒体:群组

脚本如下所示:

google.load("feeds", "1");

function initialize() {
  var feed = new google.feeds.Feed("http://website.com/news/feed/");
  feed.setNumEntries(20);               
  feed.load(function(result) {
    if (!result.error) {
      var container = document.getElementById("feed");
      for (var i = 0; i < result.feed.entries.length; i++) {
        var entry = result.feed.entries[i];
        var div = document.createElement("div");
        div.appendChild(document.createTextNode(entry.title));
        div.appendChild(document.createTextNode(entry.link));
        container.appendChild(div);
      }
    }
  });
}
google.setOnLoadCallback(initialize);

</script>

TITLE和LINK正好回归。但是我在Feed API文档中看不到有关返回媒体的任何内容:缩略图 - 或者特别是它的网址。

有人知道如何使用Feed API返回缩略图网址吗?

2 个答案:

答案 0 :(得分:2)

使用MIXED_FORMAT并使用javascript:

搜索media:thumbnail网址
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">

google.load("feeds", "1");

function initialize() {
    var feed = new google.feeds.Feed('http://channel9.msdn.com/Feeds/RSS');
    feed.setResultFormat(google.feeds.Feed.MIXED_FORMAT);
    feed.setNumEntries(25);
    feed.load(function(result) {
    if (!result.error) {
      for (var i = 0; i < result.feed.entries.length; i++) {
        var entry = result.feed.entries[i];
        var mediaEntries = entry.xmlNode.getElementsByTagNameNS('*','thumbnail');
        for (var j = 0; j < mediaEntries.length; j++) {
            var mediaEntry = mediaEntries[j];
            var mediaThumbnailUrl = mediaEntry.attributes.getNamedItem('url').value
            console.log(mediaThumbnailUrl);
        }
      }
    }
  });
}
google.setOnLoadCallback(initialize);

</script> 

答案 1 :(得分:1)

尝试Setting the feed formatMIXED_FORMAT

feed.setResultFormat(google.feeds.Feed.MIXED_FORMAT);

应在xmlNode内返回result.feed.entires


function initialize() {
  var url = "http://www.flickr.com/services/feeds/"
  +"photos_public.gne?tags=nature&format=rss_200";
  var feed = new google.feeds.Feed(url);
  feed.setResultFormat(google.feeds.Feed.MIXED_FORMAT);
  feed.setNumEntries(5);               
  feed.load(function(result) {
    if (!result.error) {
    var container = document.getElementById("feed");
      for (var i = 0; i < result.feed.entries.length; i++) {
        var entry = result.feed.entries[i];
        // select the `media:thumbnail` element
        var mediaImage = Array.prototype.slice
        .call(entry.xmlNode.children).filter(function(el, i) {
          return el.nodeName === "media:thumbnail" 
        });
        var thumbnail = new Image;
        // set thumbnail `attributes` with `media:element` `attributes`
        Array.prototype.slice
       .call(mediaImage[0].attributes).forEach(function(key, _) {
              thumbnail[key.name.replace(/[url].*/,"src")] = key.value
        });
        var div = document.createElement("div");       
        div.appendChild(document.createTextNode(entry.title + "\n"));
        div.appendChild(document.createTextNode(entry.link + "\n"));
        div.appendChild(thumbnail);
        container.appendChild(div);                
      }
    }
  });
}
google.setOnLoadCallback(initialize);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
  google.load("feeds", "1");
</script>
<div id="feed"></div>