Загрузка RSS-канала с помощью AJAX: альтернативы API фида Google?
Я использую API фида Google для загрузки RSS-каналов, но похоже, что Google отключил API. Например, когда я пытаюсь загрузить RSS-канал New York Times в http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=1000&q=http%3A%2F%2Frss.nytimes.com%2Fservices%2Fxml%2Frss%2Fnyt%2FHomePage.xml
, я получаю этот ответ:
{"responseData": null, "responseDetails": "This API is no longer available.", "responseStatus": 403}
Есть ли жизнеспособные альтернативы?
Ответы
Ответ 1
Использовать Yahoo YQL API:
select * from xml where url = 'https://news.ycombinator.com/rss'
Вы можете запросить канал JSONP, добавив параметр callback
в URL
https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%20%3D%20'https%3A%2F%2Fnews.ycombinator.com%2Frss'&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=mycallback
Ответ 2
Устаревшие
Мой плагин, $. jQRSS использует Google Feed
и, кажется, работает очень хорошо, учитывая вашу точную ссылку на RSS:
var rss = 'http://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml';
$.jQRSS(rss, { count: 8 }, function (feed, entries) {
console.log([feed, entries]);
$.each(entries, function(i) {
if (this['content']) {
var fieldset = $('<fieldset/>', { title: this.contentSnippet }).appendTo('body'),
legend = $('<legend/>').appendTo(fieldset),
$link = $('<a />', { href: this.link, html: this.title, target: '_blank' }).appendTo(legend),
$date = $('<h5 />', { html: this.publishedDate }).appendTo(fieldset),
$content = $('<div />', { html: this.content }).appendTo(fieldset);
$content.find('br').remove();
}
});
});
fieldset > h5 { float: right; margin-top: 0; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="http://rawgit.com/JDMcKinstry/jQRSS/master/jQRSS.js"></script>
Ответ 3
Одно дополнение к решению Tony для использования YQL - мне нужно изменить значение обратного вызова на JSON_CALLBACK, чтобы правильно проанализировать ответ:
'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%20%3D%20\'' + encodeURIComponent(url) + '\'&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=JSON_CALLBACK'
Ответ 4
Вы можете использовать script feedburner:
< script src= "http://feeds.feedburner.com/feeduri?format=sigpro&nItems=10" type = "text/javascript" > </ script >
Вся информация:
https://support.google.com/feedburner/answer/78991?hl=en
Ответ 5
Вы можете использовать PHP для захвата копии любого фида RSS, который вы хотите отобразить, а затем использовать JavaScript на стороне клиента для отображения результатов. Главное преимущество заключается в том, что вы не подвергаетесь ежедневным ограничениям запросов таким образом, какие у большинства бесплатных служб RSS-API есть или проблемы с безопасностью.
http://www.javascriptkit.com/dhtmltutors/ajaxticker/index.shtml