| author | Raphael Velt <raph.velt@gmail.com> |
| Wed, 30 Nov 2011 12:11:59 +0100 | |
| changeset 403 | dd1686ae5506 |
| parent 380 | b3f66379fed7 |
| permissions | -rw-r--r-- |
|
360
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
1 |
READ_OLD_TWEETS = true; |
|
380
b3f66379fed7
Ameliorations visu live des tweets
Raphael Velt <raph.velt@gmail.com>
parents:
374
diff
changeset
|
2 |
RECORD_NEW_TWEETS = true; |
|
360
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
3 |
var conf_file = flagOption('-c', 'conf.js'); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
4 |
console.log('Reading Configuration from ' + conf_file); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
5 |
var fs = require('fs'); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
6 |
eval(fs.readFileSync(conf_file,'utf8')); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
7 |
|
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
8 |
tweet_file = flagOption('-f', (typeof tweet_file == "undefined" ? 'tweets.txt' : tweet_file )); |
| 374 | 9 |
tracking_keyword = flagOption('-t', (typeof tracking_keywords == "undefined" ? null : tracking_keywords.join(",") )); |
|
360
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
10 |
user_pass = flagOption('-u', (typeof user_pass == "undefined" ? null : user_pass )); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
11 |
|
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
12 |
if (!user_pass) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
13 |
console.log("You must provide user credentials in " + conf_file + " or on the command-line, e.g. node tweetcast.js -u user:pass") |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
14 |
process.exit(); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
15 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
16 |
if (!tracking_keyword) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
17 |
console.log("You must provide keyword(s) in " + conf_file + " or on the command-line, e.g. node tweetcast.js -t Bieber") |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
18 |
process.exit(); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
19 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
20 |
|
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
21 |
console.log("Tracking keyword "+tracking_keyword); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
22 |
|
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
23 |
var http = require('http'), |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
24 |
https = require('https'), |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
25 |
socketio = require('socket.io'), |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
26 |
app = http.createServer(httpHandler), |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
27 |
io = socketio.listen(app) |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
28 |
tweets = [], |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
29 |
tweet_ids = [], |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
30 |
keys_to_delete = [ |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
31 |
'in_reply_to_screen_name', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
32 |
'in_reply_to_user_id', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
33 |
'retweeted', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
34 |
'place', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
35 |
'geo', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
36 |
'source', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
37 |
'contributors', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
38 |
'coordinates', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
39 |
'retweet_count', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
40 |
'favorited', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
41 |
'truncated', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
42 |
'possibly_sensitive' |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
43 |
], |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
44 |
user_keys_to_delete = [ |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
45 |
'default_profile_image', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
46 |
'show_all_inline_media', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
47 |
'contributors_enabled', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
48 |
'profile_sidebar_fill_color', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
49 |
'created_at', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
50 |
'lang', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
51 |
'time_zone', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
52 |
'profile_sidebar_border_color', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
53 |
'follow_request_sent', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
54 |
'profile_background_image_url', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
55 |
'profile_background_image_url_https', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
56 |
'followers_count', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
57 |
'description', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
58 |
'url', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
59 |
'geo_enabled', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
60 |
'profile_use_background_image', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
61 |
'default_profile', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
62 |
'following', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
63 |
'profile_text_color', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
64 |
'is_translator', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
65 |
'favourites_count', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
66 |
'listed_count', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
67 |
'friends_count', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
68 |
'profile_link_color', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
69 |
'protected', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
70 |
'location', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
71 |
'notifications', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
72 |
'profile_image_url_https', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
73 |
'statuses_count', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
74 |
'verified', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
75 |
'profile_background_color', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
76 |
'profile_background_tile', |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
77 |
'utc_offset' |
| 374 | 78 |
], |
79 |
content_types = { |
|
|
380
b3f66379fed7
Ameliorations visu live des tweets
Raphael Velt <raph.velt@gmail.com>
parents:
374
diff
changeset
|
80 |
css : "text/css; charset=utf-8", |
|
b3f66379fed7
Ameliorations visu live des tweets
Raphael Velt <raph.velt@gmail.com>
parents:
374
diff
changeset
|
81 |
html : "text/html; charset=utf-8", |
|
b3f66379fed7
Ameliorations visu live des tweets
Raphael Velt <raph.velt@gmail.com>
parents:
374
diff
changeset
|
82 |
js : "text/javascript; charset=utf-8", |
| 374 | 83 |
png : "image/png" |
84 |
}; |
|
|
360
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
85 |
|
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
86 |
function httpHandler(req, res) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
87 |
console.log("HTTP Request for URL "+req.url); |
|
380
b3f66379fed7
Ameliorations visu live des tweets
Raphael Velt <raph.velt@gmail.com>
parents:
374
diff
changeset
|
88 |
var url = req.url.split('?')[0]; |
|
b3f66379fed7
Ameliorations visu live des tweets
Raphael Velt <raph.velt@gmail.com>
parents:
374
diff
changeset
|
89 |
url = ( url == "/config.js" ? conf_file : __dirname + "/client" + url + ( url[url.length - 1] == "/" ? "index.html" : "" ) ); |
|
b3f66379fed7
Ameliorations visu live des tweets
Raphael Velt <raph.velt@gmail.com>
parents:
374
diff
changeset
|
90 |
var ext = url.split('.').slice(-1)[0].toLowerCase(); |
|
360
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
91 |
fs.readFile( url, function(err, data) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
92 |
if (err) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
93 |
console.log("Error 404"); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
94 |
res.writeHead(404); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
95 |
return res.end('File not found'); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
96 |
} |
| 374 | 97 |
res.writeHead(200, { |
98 |
"Content-Type" : ( content_types[ext] ? content_types[ext] : 'text/plain' ) |
|
99 |
}); |
|
|
360
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
100 |
res.end(data); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
101 |
}); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
102 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
103 |
|
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
104 |
function flagOption(flag, defaultValue) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
105 |
var flagPos = process.argv.indexOf(flag); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
106 |
return ( flagPos != -1 && flagPos < process.argv.length - 1) ? process.argv[flagPos + 1] : defaultValue; |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
107 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
108 |
|
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
109 |
function addToList(tweet) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
110 |
if (tweet_ids.indexOf(tweet.id) != -1) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
111 |
console.log("Error: Tweet already in list"); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
112 |
return false; |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
113 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
114 |
tweets.push(tweet); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
115 |
tweet_ids.push(tweet.id); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
116 |
return true; |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
117 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
118 |
|
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
119 |
function textids(object) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
120 |
for (var key in object) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
121 |
// Workaround for Unicode bug in socket.io. |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
122 |
|
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
123 |
if (typeof object[key] == "string") { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
124 |
var tmp = ''; |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
125 |
for (var i = 0; i < object[key].length; i++) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
126 |
tmp += ( object[key].charCodeAt(i) < 128 ? object[key].charAt(i) : "&#" + object[key].charCodeAt(i) + ";" ); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
127 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
128 |
object[key] = tmp; |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
129 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
130 |
if (key.substr(-2) == 'id') { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
131 |
object[key] = object[key + '_str']; |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
132 |
delete object[key + '_str']; |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
133 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
134 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
135 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
136 |
|
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
137 |
function readTweetsFromFile(file_name) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
138 |
console.log("Trying to read tweets from " + file_name); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
139 |
try { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
140 |
var oldtweets = fs.readFileSync(file_name, 'utf8').split('\n'); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
141 |
var tweetscopied = 0; |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
142 |
for (var i in oldtweets) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
143 |
if (oldtweets[i].length > 0) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
144 |
addToList(JSON.parse(oldtweets[i])); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
145 |
tweetscopied++; |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
146 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
147 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
148 |
console.log(tweetscopied + " tweets copied"); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
149 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
150 |
catch (err) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
151 |
console.log("Error opening "+file_name); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
152 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
153 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
154 |
|
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
155 |
function requestTweets() { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
156 |
console.log("Fetching tweets from https://stream.twitter.com/1/statuses/filter.json") |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
157 |
var writestream = null; |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
158 |
var req = https.request({ |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
159 |
host: "stream.twitter.com", |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
160 |
path: "/1/statuses/filter.json", |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
161 |
method: "POST", |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
162 |
headers: { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
163 |
'Authorization': 'Basic ' + new Buffer( user_pass ).toString('base64'), |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
164 |
'Content-Type': 'application/x-www-form-urlencoded' |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
165 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
166 |
}, function(res) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
167 |
writestream = fs.createWriteStream( tweet_file, { flags: 'a+', encoding: 'utf-8' } ); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
168 |
console.log('Response received, status : ' + res.statusCode); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
169 |
res.setEncoding('utf8'); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
170 |
res.on('data', function(chunk) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
171 |
var newdata = chunk.split('\r\n'), |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
172 |
tweetpos = tweets.length; |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
173 |
try { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
174 |
for (var i in newdata) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
175 |
if (newdata[i].length > 0) { |
| 374 | 176 |
var tweet = JSON.parse(newdata[i]); |
|
360
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
177 |
textids(tweet); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
178 |
for (var j in keys_to_delete) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
179 |
delete tweet[keys_to_delete[j]]; |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
180 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
181 |
textids(tweet.user); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
182 |
for (var j in user_keys_to_delete) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
183 |
delete tweet.user[user_keys_to_delete[j]]; |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
184 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
185 |
if (tweet.retweeted_status) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
186 |
textids(tweet.retweeted_status); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
187 |
for (var j in keys_to_delete) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
188 |
delete tweet.retweeted_status[keys_to_delete[j]]; |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
189 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
190 |
} |
|
380
b3f66379fed7
Ameliorations visu live des tweets
Raphael Velt <raph.velt@gmail.com>
parents:
374
diff
changeset
|
191 |
/* tweet.date_value = Date.parse(tweet.created_at); */ |
|
360
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
192 |
if (addToList(tweet)) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
193 |
writestream.write(JSON.stringify(tweet)+'\n'); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
194 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
195 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
196 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
197 |
io.sockets.emit('update', { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
198 |
"new_tweets" : tweets.slice(tweetpos) |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
199 |
}); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
200 |
console.log("New tweets received. We now have", tweets.length, "tweets in memory"); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
201 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
202 |
catch(err) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
203 |
console.log(err.message); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
204 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
205 |
}); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
206 |
}); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
207 |
|
| 374 | 208 |
req.write('track=' + encodeURIComponent( ( tracking_keyword ) ) ); |
|
360
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
209 |
req.end(); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
210 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
211 |
|
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
212 |
app.listen(app_port); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
213 |
console.log("Listening on port: "+app_port); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
214 |
|
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
215 |
if (READ_OLD_TWEETS) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
216 |
readTweetsFromFile(tweet_file); |
|
380
b3f66379fed7
Ameliorations visu live des tweets
Raphael Velt <raph.velt@gmail.com>
parents:
374
diff
changeset
|
217 |
} else { |
|
b3f66379fed7
Ameliorations visu live des tweets
Raphael Velt <raph.velt@gmail.com>
parents:
374
diff
changeset
|
218 |
console.log("Reading old tweets disabled !"); |
|
360
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
219 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
220 |
|
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
221 |
if (RECORD_NEW_TWEETS) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
222 |
requestTweets(); |
|
380
b3f66379fed7
Ameliorations visu live des tweets
Raphael Velt <raph.velt@gmail.com>
parents:
374
diff
changeset
|
223 |
} else { |
|
b3f66379fed7
Ameliorations visu live des tweets
Raphael Velt <raph.velt@gmail.com>
parents:
374
diff
changeset
|
224 |
console.log("Recording new tweets disabled !"); |
|
360
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
225 |
} |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
226 |
|
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
227 |
io.set('log level', 0); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
228 |
io.sockets.on('connection', function(socket) { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
229 |
console.log("New connection from "+socket.handshake.address.address); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
230 |
socket.emit('initial_data', { |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
231 |
"tweets" : tweets |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
232 |
}); |
|
d49991fe4892
Version mieux adaptee aux volumes de tweets des conferences
Raphael Velt <raph.velt@gmail.com>
parents:
diff
changeset
|
233 |
}); |