-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathfb-messages-to-json.js
More file actions
executable file
·52 lines (41 loc) · 1.44 KB
/
fb-messages-to-json.js
File metadata and controls
executable file
·52 lines (41 loc) · 1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
var fs = require('fs')
var cheerio = require('cheerio')
var argv = require('optimist').usage(
'Usage: $0 -i [messages.htm] -o [name_of_json_file]').demand(
[ 'i', 'o' ]).argv;
var input = argv.i
var output = argv.o
var threads = [];
var file_read = function(err, data) {
if (err) {
console.log("Error while processing " + input + ": " + err)
process.exit()
}
$ = cheerio.load(data);
$("div.thread").each(function(index) {
var thread = {}
var messages_per_thread = []
var thread_node = $(this)
var text = thread_node.text()
thread_node.children('div.message').each(function() {
var message_tag = $(this)
var message_header = message_tag.children().first()
var user = message_header.children().eq(0).text()
var date = message_header.children().eq(1).text()
var message_text = message_tag.next().text()
var message = {
user : user,
date : date,
text : message_text
}
messages_per_thread.push(message)
})
thread.messages = messages_per_thread
thread_node.children().remove()
thread.users = thread_node.text()
threads.push(thread)
})
fs.writeFile(output, JSON.stringify(threads));
console.log("Formatted json messages written to " + output)
}
fs.readFile(input, "utf-8", file_read)