-
-
Save LaurMo/9233543 to your computer and use it in GitHub Desktop.
| var express = require("express"); | |
| var app = express(); | |
| var port = process.env.PORT || 8080; | |
| var io = require('socket.io').listen(app.listen(port)); | |
| var Instagram = require('instagram-node-lib'); | |
| var http = require('http'); | |
| var request = ('request'); | |
| var intervalID; | |
| /** | |
| * Set the paths for your files | |
| * @type {[string]} | |
| */ | |
| var pub = __dirname + '/public', | |
| view = __dirname + '/views'; | |
| /** | |
| * Set the 'client ID' and the 'client secret' to use on Instagram | |
| * @type {String} | |
| */ | |
| var clientID = '41e187d89f4b42b784804e0981f30c11', | |
| clientSecret = '362ceaa9c63d4f7cbab7964919c9b4f2'; | |
| /** | |
| * Set the configuration | |
| */ | |
| Instagram.set('client_id', clientID); | |
| Instagram.set('client_secret', clientSecret); | |
| Instagram.set('callback_url', 'http://localhost:8080/callback'); | |
| Instagram.set('redirect_uri', 'http://localhost:8080'); | |
| Instagram.set('maxSockets', 10); | |
| /** | |
| * Uses the library "instagram-node-lib" to Subscribe to the Instagram API Real Time | |
| * with the tag "hashtag" lollapalooza | |
| * @type {String} | |
| */ | |
| Instagram.subscriptions.subscribe({ | |
| object: 'tag', | |
| object_id: 'sunset', | |
| aspect: 'media', | |
| callback_url: 'http://localhost:8080callback', | |
| type: 'subscription', | |
| id: '#' | |
| }); | |
| /** | |
| * Uses the library "instagram-node-lib" to Subscribe to the Instagram API Real Time | |
| * with the tag "hashtag" lollapalooza2013 | |
| * @type {String} | |
| */ | |
| // Instagram.subscriptions.subscribe({ | |
| // object: 'tag', | |
| // object_id: 'lollapalooza2013', | |
| // aspect: 'media', | |
| // callback_url: 'http://YOUR_URL.com/callback', | |
| // type: 'subscription', | |
| // id: '#' | |
| // }); | |
| /** | |
| * Uses the library "instagram-node-lib" to Subscribe to the Instagram API Real Time | |
| * with the tag "hashtag" lolla2013 | |
| * @type {String} | |
| */ | |
| // Instagram.subscriptions.subscribe({ | |
| // object: 'tag', | |
| // object_id: 'lolla2013', | |
| // aspect: 'media', | |
| // callback_url: 'http://YOUR_URL.com/callback', | |
| // type: 'subscription', | |
| // id: '#' | |
| // }); | |
| // if you want to unsubscribe to any hashtag you subscribe | |
| // just need to pass the ID Instagram send as response to you | |
| Instagram.subscriptions.unsubscribe({ id: '3668016' }); | |
| // https://devcenter.heroku.com/articles/using-socket-io-with-node-js-on-heroku | |
| io.configure(function () { | |
| io.set("transports", ["xhr-polling"]); | |
| io.set("polling duration", 10); | |
| }); | |
| /** | |
| * Set your app main configuration | |
| */ | |
| app.configure(function(){ | |
| app.use(express.bodyParser()); | |
| app.use(express.methodOverride()); | |
| app.use(app.router); | |
| app.use(express.static(pub)); | |
| app.use(express.static(view)); | |
| app.use(express.errorHandler()); | |
| }); | |
| /** | |
| * Render your index/view "my choice was not use jade" | |
| */ | |
| app.get("/views", function(req, res){ | |
| res.render("index"); | |
| }); | |
| // check subscriptions | |
| // https://api.instagram.com/v1/subscriptions?client_secret=YOUR_CLIENT_ID&client_id=YOUR_CLIENT_SECRET | |
| /** | |
| * On socket.io connection we get the most recent posts | |
| * and send to the client side via socket.emit | |
| */ | |
| io.sockets.on('connection', function (socket) { | |
| Instagram.tags.recent({ | |
| name: 'sunset', | |
| complete: function(data) { | |
| socket.emit('firstShow', { firstShow: data }); | |
| } | |
| }); | |
| }); | |
| /** | |
| * Needed to receive the handshake | |
| */ | |
| app.get('/callback', function(req, res){ | |
| var handshake = Instagram.subscriptions.handshake(req, res); | |
| }); | |
| /** | |
| * for each new post Instagram send us the data | |
| */ | |
| app.post('/callback', function(req, res) { | |
| var data = req.body; | |
| // Grab the hashtag "tag.object_id" | |
| // concatenate to the url and send as a argument to the client side | |
| data.forEach(function(tag) { | |
| var url = 'https://api.instagram.com/v1/tags/' + tag.object_id + '/media/recent?client_id=479edbf0004c42758987cf0244afd3ef'; | |
| sendMessage(url); | |
| }); | |
| res.end(); | |
| }); | |
| /** | |
| * Send the url with the hashtag to the client side | |
| * to do the ajax call based on the url | |
| * @param {[string]} url [the url as string with the hashtag] | |
| */ | |
| function sendMessage(url) { | |
| io.sockets.emit('show', { show: url }); | |
| } | |
| console.log("Listening on port " + port); | |
var express = require("express");
var app = express();
var port = process.env.PORT || 3700;
var io = require('socket.io').listen(app.listen(port));
var Instagram = require('instagram-node-lib');
var http = require('http');
var request = ('request');
var intervalID;
/**
- Set the paths for your files
- @type {[string]}
*/
var pub = __dirname + '/public',
view = __dirname + '/views';
/**
- Set the 'client ID' and the 'client secret' to use on Instagram
- @type {String}
*/
var clientID = '41e187d89f4b42b784804e0981f30c11',
clientSecret = '362ceaa9c63d4f7cbab7964919c9b4f2';
/**
- Set the configuration
*/
Instagram.set('client_id', clientID);
Instagram.set('client_secret', clientSecret);
Instagram.set('callback_url', 'http://instagram-auto.herokuapp.com/callback');
Instagram.set('redirect_uri', 'http://instagram-auto.herokuapp.com/');
Instagram.set('maxSockets', 10);
/**
- Uses the library "instagram-node-lib" to Subscribe to the Instagram API Real Time
- with the tag "hashtag" lollapalooza
- @type {String}
*/
Instagram.subscriptions.subscribe({
object: 'tag',
object_id: 'sunset',
aspect: 'media',
callback_url: 'http://instagram-auto.herokuapp.com/callback',
type: 'subscription',
id: '#'
});
// if you want to unsubscribe to any hashtag you subscribe
// just need to pass the ID Instagram send as response to you
Instagram.subscriptions.unsubscribe({ id: '3668016' });
// https://devcenter.heroku.com/articles/using-socket-io-with-node-js-on-heroku
io.configure(function () {
io.set("transports", ["xhr-polling"]);
io.set("polling duration", 10);
});
/**
- Set your app main configuration
*/
app.configure(function(){
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(pub));
app.use(express.static(view));
app.use(express.errorHandler());
});
/**
- Render your index/view "my choice was not use jade"
*/
app.get("/views", function(req, res){
res.render("index");
});
// check subscriptions
// https://api.instagram.com/v1/subscriptions?client_secret=YOUR_CLIENT_ID&client_id=YOUR_CLIENT_SECRET
/**
- On socket.io connection we get the most recent posts
- and send to the client side via socket.emit
*/
io.sockets.on('connection', function (socket) {
Instagram.tags.recent({
name: 'sunset',
complete: function(data) {
socket.emit('firstShow', { firstShow: data });
}
});
});
/**
- Needed to receive the handshake
*/
app.get('/callback', function(req, res){
var handshake = Instagram.subscriptions.handshake(req, res);
});
/**
-
for each new post Instagram send us the data
*/
app.post('/callback', function(req, res) {
var data = req.body;// Grab the hashtag "tag.object_id"
// concatenate to the url and send as a argument to the client side
data.forEach(function(tag) {
var url = 'https://api.instagram.com/v1/tags/' + tag.object_id + '/media/recent?client_id=479edbf0004c42758987cf0244afd3ef';
sendMessage(url);});
res.end();
});
/**
- Send the url with the hashtag to the client side
- to do the ajax call based on the url
- @param {[string]} url [the url as string with the hashtag]
*/
function sendMessage(url) {
io.sockets.emit('show', { show: url });
}
console.log("Listening on port " + port);
io.configure(function () {
io.set("transports", [
'websocket'
, 'xhr-polling'
, 'jsonp-polling'
, 'flashsocket'
]);
io.set("polling duration", 10);
});
Link to doc https://github.com/LearnBoost/socket.io-spec#transport-id