--- a/tweetcast/nodejs/node-direct.js Tue Oct 25 18:27:26 2011 +0200
+++ b/tweetcast/nodejs/node-direct.js Wed Oct 26 18:29:46 2011 +0200
@@ -1,19 +1,37 @@
+/* DEFAULT CONFIGURATION */
+
+var TWITTER_USER = 'materiauxnum',
+ TWITTER_PASS = 'm473r14ux7w337',
+ RECORD_NEW_TWEETS = true;
+
/* CALLING COMMON CONFIGURATION FILE */
-console.log('Reading Configuration from conf.js');
+var conf_file = flagOption('-c', 'conf.js');
+
+myLog('Reading Configuration from ' + conf_file);
var fs = require('fs');
-eval(fs.readFileSync(__dirname + '/conf.js','utf8'));
-
-/* SERVER-SIDE ONLY CONFIGURATION */
+eval(fs.readFileSync(conf_file,'utf8'));
-sqlfile = __dirname + '/tweets-' + encodeURIComponent(tracking_keyword) + '.sqlite';
-TWITTER_USER = 'materiauxnum';
-TWITTER_PASS = 'm473r14ux7w337';
-RECORD_NEW_TWEETS = true;
+if (typeof sqlfile == "undefined") {
+ sqlfile = __dirname + '/tweets-' + encodeURIComponent(tracking_keyword) + '.sqlite'
+ }
/* FUNCTIONS */
+function flagOption(flag, defaultValue) {
+ var flagPos = process.argv.indexOf(flag);
+ return ( flagPos != -1 && flagPos < process.argv.length - 1) ? process.argv[flagPos + 1] : defaultValue;
+}
+
+function myLog() {
+ var args = ["\033[1;34m["+new Date().toLocaleTimeString()+"]\033[0m"];
+ for (var i in arguments) {
+ args.push(arguments[i]);
+ }
+ console.log.apply(console, args);
+}
+
function annotationMap(callback, options) {
var includeDefault = ( options && options.includeDefault ? options.includeDefault : false );
var returnObject = ( options && options.returnObject ? options.returnObject : false );
@@ -108,14 +126,14 @@
commitTweet(newdata[i]);
}
}
- console.log("New tweets received");
+ myLog("New tweets received");
}
function getSendLastPos() {
db.execute("SELECT MAX(pos) lastpos FROM tweets", function (err, results) {
if (err) throw err;
lastpos = results[0].lastpos ? results[0].lastpos : 0;
- console.log("Broadcasting last pos = ",lastpos);
+ myLog("Broadcasting last pos = ",lastpos);
io.sockets.emit('tweetSummary', {
tweetcount : lastpos
});
@@ -124,7 +142,7 @@
function getSendTweets(posList, socket) {
- console.log("request for tweets ("+posList.join(',')+") from "+socket.id);
+ myLog("request for tweets ("+posList.join(',')+") from "+socket.id);
db.execute("SELECT * FROM tweets WHERE pos IN ( " + posList.join(',') + " )", function (err, results) {
if (err) throw err;
socket.emit('tweets',
@@ -138,7 +156,7 @@
}
function getSendTimeline(level, socket) {
- console.log("request for timeline ("+level+") from "+socket.id);
+ myLog("request for timeline ("+level+") from "+socket.id);
var lvl = date_levels[level],
requete = "SELECT COUNT(*) AS nb, "
+ lvl
@@ -184,11 +202,11 @@
}
function httpHandler(req, res) {
- console.log("HTTP Request for URL "+req.url);
- var url = __dirname + ( req.url == "/conf.js" ? "" : "/client" ) + req.url + ( req.url[req.url.length - 1] == "/" ? "index.html" : "" );
+ myLog("HTTP Request for URL "+req.url);
+ var url = ( req.url == "/config" ? conf_file : __dirname + "/client" + req.url + ( req.url[req.url.length - 1] == "/" ? "index.html" : "" ) );
fs.readFile( url, function(err, data) {
if (err) {
- console.log("Error 404");
+ myLog("Error 404");
res.writeHead(404);
return res.end('File not found');
}
@@ -271,15 +289,15 @@
/* MAIN CODE */
app.listen(app_port);
-console.log("Listening on port: "+app_port);
-console.log("Opening SQLITE file: "+sqlfile);
+myLog("Listening on port: "+app_port);
+myLog("Opening SQLITE file: "+sqlfile);
db.open(sqlfile , function(err) {
if (err) throw err;
createTables();
});
if (RECORD_NEW_TWEETS) {
- console.log("Requesting Twitter to track keyword(s): "+tracking_keyword);
+ myLog("Requesting Twitter to track keyword(s): "+tracking_keyword);
var req = https.request({
host: "stream.twitter.com",
path: "/1/statuses/filter.json",
@@ -289,8 +307,8 @@
'Content-Type': 'application/x-www-form-urlencoded'
}
}, function(res) {
- console.log('Reply from stream.twitter.com: ' + res.statusCode);
- console.log('Headers: ' + JSON.stringify(res.headers));
+ myLog('Reply from stream.twitter.com: ' + res.statusCode);
+ myLog('Headers: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', callBackNewTweets);
});
@@ -301,8 +319,8 @@
io.set('log level', 0);
io.sockets.on('connection', function(socket) {
- console.log("New connection from" + socket.handshake.address.address + " with id=" + socket.id);
- socket.emit('tweetSummary', { tweetcount : tweets.length });
+ myLog("New connection from", socket.handshake.address.address, "with id=", socket.id);
+ socket.emit('tweetSummary', { tweetcount : lastpos });
socket.on('updateTweets', function(data) {
if (data.tweets.length) {
getSendTweets(data.tweets, socket);