Как загрузить изображения из RSS-канала с помощью Google Feed API?
Я не могу загрузить изображения с помощью Google Feed API, я использую mediaGroup для загрузки изображений.
Это код javascript, который я написал для получения канала
<script type="text/javascript">
google.load("feeds", "1");
function initialize()
{
var feed = new google.feeds.Feed("http://techzei.com/feed");
feed.setNumEntries(14);
feed.load(function (result) {
if (!result.error)
{
result.feed.entries.forEach(function(entry)
{
$('#feed').append('<div class="card"><a href="' + entry.link + '">' + entry.title + '</a><p>' + entry.contentSnippet + '</p><br><p>'+entry.publishedDate+'"<img src="'+ entry.mediaGroups+'"/></div>');
});
}
});
}
google.setOnLoadCallback(initialize);
HTML
<article id="feed"></article>
Все изображения, которые я получаю сейчас, являются "неопределенными". Должен ли я делать что-то еще? Dev API Google Feed не пролил свет на это
1 ответ
Решение
Этот канал, кажется, не имеет никакого mediaGroup
записей, по этой причине вы получаете неопределенный в вашем результате, но вы можете извлечь изображения из entry.content
используя jQuery.
Помещает URL изображения в массив и показывает первое найденное изображение (или ни одного):
var content = document.createElement("content");
content.innerHTML = entry.content;
var images = $(content).find('img').map(function(){
return $(this).attr('src')
}).get();
$('#feed').append('<div class="card"><a href="' + entry.link + '">' +
entry.title + '</a><p>' + entry.contentSnippet + '</p><br><p>'+
entry.publishedDate +'</p>' +
(images.length == 0 ? '' :'<img src="'+ images[0] +'"/>') + '</div>');
Показывает все изображения, добавляя теги img к переменной:
var content = document.createElement("content");
content.innerHTML = entry.content;
var images = "";
$(content).find('img').each(function() {
images += this.outerHTML;
});
$('#feed').append('<div class="card"><a href="' + entry.link + '">' +
entry.title + '</a><p>' + entry.contentSnippet + '</p><br><p>' +
entry.publishedDate + '</p>' + images +'</div>');