2015-02-08 4 views
1

Я в настоящее время с помощью Google Feed API и пытаюсь получить миниатюру из RSS-канала («СМИ: миниатюра»)Google Feed API - возвращение СМИ: эскиз

СМИ: линия миниатюр в RSS-канале выглядит следующим образом:

<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 о возврате носителя: thumbnail - или, в частности, его URL.

Кто-нибудь знает, как я могу вернуть URL-адрес эскиза, используя API-интерфейс фида?

ответ

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>

2

Использование MIXED_FORMAT и поиск media:thumbnail URLs с JavaScript:

<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>