Gabby Carnabuci
Gabby Carnabuci

Reputation: 1

Reddit RSS feed is not consistently fetching results

I have been trying to debug for this days now, and I’m not sure what the problem is.

To give you a little background:

I'm working on a project that pulls the top headline on the politics section of a far left news source (Huffington Post), a moderate left (CNN), a moderate right (Fox), and a far right (Breitbart).

From here, I’m finding Reddit posts referencing that article and appending it to the html. All of this is being done through YQL.

Here's an example with how I'm using CNN.

//CNN

$(function getCNNNews() {
    var statement = "select * from feed where url='http://rss.cnn.com/rss/cnn_allpolitics.rss'";
    $.queryYQL(statement, "json", undefined, function (data) {
      // do something with "data".
      console.log(data.query.results.item);

      //Get first object in array
      console.log(data.query.results.item[0]);
      var firstObjectCNN = data.query.results.item[0];

      $("#col2").append("<h1 id='cnn'>" + firstObjectCNN.title + "</h1>");
      $("#col2").append("<h4 id='cnn'> Published by CNN <br/>"  + firstObjectCNN.pubDate + "</h4>"); 

      //Search for the top post referencing that headline on Reddit
      $(function getCNNPostReddit() {
      var newStatement = encodeURIComponent(firstObjectCNN.title).replace(/'/g , "%27");
      var statement = "select * from feed where url='https://www.reddit.com/search.xml?q=" + newStatement + "&sort=new'";
      $.queryYQL(statement, "json", undefined, function (data) {

      console.log(statement);
      console.log(data);

      var firstCNNEntryResults = data.query.results;

        if (firstCNNEntryResults == null)
          {
            document.getElementById("loading2").style.display = 'inline-block';
          }
          else
          {
                // Get first entry's (which is the entry with the most comments) rss feed containing comments
            var firstCNNEntry = data.query.results.entry[0];
            console.log("select * from feed where url='" + firstCNNEntry.link.href + ".rss");
            // Erase end of URL that's not needed
            var firstCNNEntryLink = firstCNNEntry.link.href;
            firstCNNEntryLink = firstCNNEntryLink.substring(0, firstCNNEntryLink.indexOf('?'));
            console.log(firstCNNEntryLink);
            //Create a dynamic rss feed based on link to first entry; this is where the comments will come from.
            $(function getCNNRedditComments() {
            var statement = "select * from feed where url='" + firstCNNEntryLink + ".rss'" ;
            $.queryYQL(statement, "json", undefined, function (data) {

            console.log(data.query.results.entry);
            //Start with the 4th comment; since the first 3 comments are auto moderator
            for (var i = 0; i < data.query.results.entry.length; i++) {
            console.log(data.query.results.entry[i].content.content);
            $("#col2 #comment-box").append("<div id='comment'><span id='username'>" + data.query.results.entry[i].author.name + "</span>" + ":" + data.query.results.entry[i].content.content + "</div>")
            } 
            });   
            });

          }
  });           
  }); 
  });                  
  });

I've made it so when the results come out null, I replace the comments with a loading symbol. The issue I'm having is, sometimes the comments will show, and other times they won't.

The current state of the site is here: leftright.info

Upvotes: 0

Views: 367

Answers (1)

burkybang
burkybang

Reputation: 117

Reddit has a limit to how often you can fetch their RSS feeds. I had that problem too, so I came up with a workaround. I've created a public tool for it on my website.

https://burkybang.com/reddit_rss

Upvotes: 1

Related Questions