web-dev-qa-db-fra.com

Chargement de flux RSS avec AJAX: alternatives à l'API Google Feed?

J'utilise l'API Google Feed pour charger des flux RSS, mais il semblerait que Google ait fermé l'API. Par exemple, lorsque j'essaie de charger le flux RSS du 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, je reçois cette réponse:

{"responseData": null, "responseDetails": "This API is no longer available.", "responseStatus": 403}

Existe-t-il des alternatives viables?

18
Joe Mornin

Utiliser les API de Yahoo YQL :

select * from xml where url = 'https://news.ycombinator.com/rss'

Vous pouvez demander un flux JSONP en ajoutant un paramètre callback à l'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
27
Tony

Déconseillé

Myplugin , $ .jQRSS utilise Google Feed et semble bien fonctionner, étant donné votre lien RSS exact :

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
SpYk3HH

Un ajout à la solution de Tony pour l'utilisation de YQL - j'avais besoin de changez la valeur de rappel en JSON_CALLBACK pour analyser correctement la réponse:

'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'
2
Dave B

Vous pouvez utiliser le script feedburner:

<script src = "http://feeds.feedburner.com/feeduri?format=sigpro&nItems=10" type = "text/javascript"> </ script>

Toutes les informations:

https://support.google.com/feedburner/answer/78991?hl=fr

1
jmacuna

Vous pouvez utiliser PHP pour récupérer une copie du flux RSS que vous souhaitez afficher, puis utiliser JavaScript côté client pour afficher les résultats. Le principal avantage est que vous n'êtes pas soumis aux restrictions quotidiennes des requêtes, comme le font la plupart des services d'API RSS gratuits, ni aux problèmes de fiabilité.

http://www.javascriptkit.com/dhtmltutors/ajaxticker/index.shtml

1
coco puffs