我目前正在使用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返回缩略图网址吗?
答案 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 format到MIXED_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>