Table of Contents generated with DocToc
forgetsy-js
NodeJS Trending library
Status

NPM Stats

NOTICE
This library was converted to use Promise/A+. Please see usage instructions below.
Description
Node.JS fork Forgetsy, a trending library designed to track temporal trends in non-stationary categorical distributions. Please fork or file an bug if you discover an issue. The project use Redis as the backend.
Please fork and make it better.
Installation
npm install forgetsy-js
Usage
Initializing
var redis = require('redis');
var client = redis.createClient();
var delta = require('forgetsy-js');
delta.setRedisClient(client);
Create a distribution
var name = 'facebook-shares';
var bin = 'my-content-id';
var promise = delta.create({
name: name
, time: time
});
promise.then(function(dist) {
});
promise.catch(function(e) {
});
Increment a bin
var promise = delta.get(name);
promise.then(function(dist) {
var promise = dist.incr({
bin: bin
,by: 1
});
promise.then(function() {
});
promise.catch(function(e) {
})
});
Fetch distribution (all)
var promise = delta.get(name);
promise.then(function(dist) {
var promise = dist.fetch();
promise.then(function(trends) {
console.log(trends);
})
promise.catch(function(e) {
})
})
Fetch distribution (one)
var promise = delta.get(name);
promise.then(function(dist) {
var promise = dist.fetch({bin: bin});
promise.then(function(trends) {
console.log(trends);
})
promise.catch(function(e) {
})
})
Fetch distribution (n)
var promise = delta.get(name);
promise.then(function(dist) {
var promise = dist.fetch({limit: 10});
promise.then(function(trends) {
console.log(trends);
})
promise.catch(function(e) {
})
})
Example output
[
{'item': 'one': 'score': 0.999999999997154}
,{'item': 'two': 'score': 0.9999999999939523}
]
Complete Example
var name = 'facebook-shares';
var bin = 'my-content-id2';
delta.create({
name: name,
time: getDays(14)
})
.then(function(dist) {
dist.incr({
bin: bin,
by: 1
})
.then(function() {
dist.fetch()
.then(function(trends) {
console.log(trends);
})
.catch(function(e) {
});
})
.catch(function(e) {
});
})
.catch(function(e) {
});
Basic Demo
This is a very basic working API demo.
Create a distribution
Categories are the distributions to create
Type is the type of distributions we're creating. In this case, the categories
are related to "art." You can classify the distributions as you see fit. For
example, "type" could easily refer to "music." (Probably sans "street" [:-])
http://104.131.230.35/create?categories=classical,modern,street&type=art
Increment a bin
Here we will trend a bin, "banksy & Barbara Kruger" the famous street artist.
http://104.131.230.35/incr?categories=street&type=art&bin=banksy
http://104.131.230.35/incr?categories=street&type=art&bin=Barbara Kruger
Fetch distribution
Here we will fetch what's trending in category "street" of type "art"
http://104.131.230.35/fetch?categories=street&type=art&filters=geoip
Fetch all distributions
Here we will fetch what's trending in all of the categories of type "art"
http://104.131.230.35/fetch?categories=classical,modern,street&type=art&filters=geoip
Fetch all distributions with geo-location trends
Here we will fetch what's trending in all of the categories of type "art" and
geo-location trends. Behind the scenes, the API is detecting your location and
trending based on geo-location as well (assuming your location was detected!)
http://104.131.230.35/fetch?categories=classical,modern,street&type=art
Test
npm test