Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Twitter API for node.js with rate limiter
JavaScript
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
node_modules
test
.gitignore
README.md
package.json
rate_limit.js

README.md

rate-limiter

Description

This module helps manage your requests to the Twitter API so you don't get rate limited. If you use the module to make requests, it will automatically queue your requests and if you are in danger of exceeding Twitter's API limits, it will store them and execute them after the time window has passed. No more worrying about rate limiting.

Instructions

  npm install twitter_rate_limiter

Setup

Create a file called config.json with your twitter credentials in the format

{
    "twitter":{
        "consumerKey": "...",
        "consumerSecret": "...",
        "token": "...",
        "tokenSecret": "..."
    }
}   

You could hardcode it into the file but that wouldn't be advisable.

Usage

In your file, import the config.json file

Import the rate_limit.js file

  var RateLimiter = require('../rate_limit.js');

Instantiate a new RateLimit object.

var getfriends = new RateLimiter(2, 5000);

The two arguments are the requests in the time window in the form(requests, time window). Usually the time window is 900000 ms for 15 minutes. The request number varies by function call

Create a function for the twitter call you want to make. This example shows the GET friends request

var callGetFriends = function(username, callback) {
    var url  = 'https://api.twitter.com/1.1/friends/ids.json?cursor=-1&screen_name='+username+'&count=5000';
    console.log(url);
    request.get({url: url, oauth: oauth, json: true}, function(error, res, body) {
        callback(body);
    })
}

The function calling this would look like

getfriends.callWithLimit(callGetFriends, ["user", function(data){
    console.log(data);
    "...insert processing here"
}]);
Something went wrong with that request. Please try again.