2015-12-02 10 views
18

Używałem interfejsu API kanału Google do ładowania kanałów RSS, ale wygląda na to, że Google wyłączył API. Na przykład, gdy próbuję załadować kanał RSS New York Times w 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, mam tej odpowiedzi:Ładowanie kanału RSS za pomocą AJAX: alternatywy dla interfejsu Google Feed API?

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

czy są jakieś alternatywy?

Odpowiedz

27

Zastosowanie Yahoo YQL API:

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

Można zażądać paszy jsonp dodając parametr callback do 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 
+0

Nienawidzę pytać, ale czy możesz zapewnić skrzypce, aby pokazać, jak to działa? Byłbym bardzo wdzięczny i nie jestem pewien, jak działa twoje rozwiązanie lub co będzie wyświetlane i jak HTML będzie wyglądał na stronie. – Aaron

+2

@Aaron Oto prosty przykład: https://gist.github.com/anonymous/7f79807bc6abb00024df – Tony

+0

Awesome! To naprawdę pomaga! – Aaron

2

Jeden dodatek do roztworu Tony'ego za korzystanie YQL - Musiałem change the callback value to JSON_CALLBACK do analizowania odpowiedzi prawidłowo:

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

Można użyć PHP, aby pobrać kopię dowolnego kanału RSS, który chcesz wyświetlić, a następnie użyj JavaScript po stronie klienta, aby wyświetlić wyniki. Główną zaletą jest to, że nie podlegasz limitom dziennych żądań w ten sposób, które mają najwięcej darmowych usług RSS API lub problemy z niezawodnością.

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

3

Przestarzałe

Myplugin, $.jQRSS wykorzystuje Google Feed i wydaje się działać dobrze, biorąc pod uwagę dokładną link RSS:

var rss = 'http://rss.nytimes.com/services/xml/rss/nyt/HomePage.xml'; 
 
$.jQRSS(rss, { count: 8 }, function (feed, entries) { 
 
\t console.log([feed, entries]); 
 
\t $.each(entries, function(i) { 
 
\t \t if (this['content']) { 
 
\t \t \t var fieldset = $('<fieldset/>', { title: this.contentSnippet }).appendTo('body'), 
 
\t \t \t \t legend = $('<legend/>').appendTo(fieldset), 
 
\t \t \t \t $link = $('<a />', { href: this.link, html: this.title, target: '_blank' }).appendTo(legend), 
 
\t \t \t \t $date = $('<h5 />', { html: this.publishedDate }).appendTo(fieldset), 
 
\t \t \t \t $content = $('<div />', { html: this.content }).appendTo(fieldset); 
 
\t \t \t $content.find('br').remove(); 
 
\t \t } 
 
\t }); 
 
});
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>

+0

To dziwne. Działa również dla mnie, ale interfejs API jest nadal oficjalnie uznany za przestarzały: https://developers.google.com/feed/ –

+0

Proszę nie wycofywać obiektywnie dobrych poprawek. Nie jesteś właścicielem swoich postów, społeczność tak robi, a my wszyscy możemy je edytować i ulepszać. Jeśli nie masz z tym nic wspólnego, nie możesz publikować w Stack Overflow. – meagar

+1

To nie działa, interfejs API jest przestarzały i dezaktywowany. – Angelo

Powiązane problemy