forgetsy-js v0.10.6
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
// setup redis
var redis = require('redis');
var client = redis.createClient();
// setup forgetsy-js & pass redis client
var delta = require('forgetsy-js');
delta.setRedisClient(client);
Create a distribution
// name of distribution
var name = 'facebook-shares';
// name of bin
var bin = 'my-content-id';
var promise = delta.create({
name: name
, time: time
});
promise.then(function(dist) {
// the distribution was create..
});
promise.catch(function(e) {
// there was an error creating distribution
});
Increment a bin
var promise = delta.get(name);
promise.then(function(dist) {
var promise = dist.incr({
bin: bin
,by: 1
});
promise.then(function() {
// bin was incremented
});
promise.catch(function(e) {
// bin was not incremented
})
});
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) {
// error fetching distribution
})
})
Fetch distribution (one)
var promise = delta.get(name);
promise.then(function(dist) {
// specify the bin to fetch
var promise = dist.fetch({bin: bin});
promise.then(function(trends) {
console.log(trends);
})
promise.catch(function(e) {
// error fetching distribution
})
})
Fetch distribution (n)
var promise = delta.get(name);
promise.then(function(dist) {
// specify the bin to fetch
var promise = dist.fetch({limit: 10});
promise.then(function(trends) {
console.log(trends);
})
promise.catch(function(e) {
// error fetching distribution
})
})
Example output
[
{'item': 'one': 'score': 0.999999999997154}
,{'item': 'two': 'score': 0.9999999999939523}
]
Complete Example
var name = 'facebook-shares';
var bin = 'my-content-id2';
// create distribution
delta.create({
name: name,
time: getDays(14)
})
.then(function(dist) {
// increment a bin
dist.incr({
bin: bin,
by: 1
})
.then(function() {
// fetch trends
dist.fetch()
.then(function(trends) {
console.log(trends);
})
.catch(function(e) {
// error fetching trends
});
})
.catch(function(e) {
// bin was not incremented
});
})
.catch(function(e) {
// there was an error creating distribution
});
Basic Demo
This is a very basic working API demo.
Create a distribution
Categories are the distributions to create
- classical
- modern
- street
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
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago