Skip to content
Snippets Groups Projects
Commit 31fdd0d7 authored by Danny Allen's avatar Danny Allen
Browse files

Update ParseFBMessages

parent 35c35dd2
No related branches found
No related tags found
No related merge requests found
package p2.wordsuggestor; package p2.wordsuggestor;
import java.io.File; import java.io.File;
import java.io.FileReader;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.util.Stack;
import org.jsoup.Jsoup; import org.json.simple.JSONObject;
import org.jsoup.nodes.Document; import org.json.simple.parser.JSONParser;
import org.jsoup.nodes.Element; import org.json.simple.parser.ParseException;
import org.jsoup.select.Elements; import org.json.simple.JSONArray;
import cse332.interfaces.worklists.LIFOWorkList;
import datastructures.worklists.ArrayStack;
public final class ParseFBMessages { public final class ParseFBMessages {
private ParseFBMessages() { private ParseFBMessages() {
...@@ -30,37 +29,35 @@ public final class ParseFBMessages { ...@@ -30,37 +29,35 @@ public final class ParseFBMessages {
// You may be able to use a relative path like "./MyArchiveName", but results can // You may be able to use a relative path like "./MyArchiveName", but results can
// vary from machine to machine. // vary from machine to machine.
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
if (args.length != 2) { String name = "<Your FB Name>"; // e.g. "Ruth Anderson"
System.out.println("USAGE: ParseFBMessages <Your FB Name> <Your FB Archive>"); String archive = "<Your FB Archive>"; // e.g. "/Users/rea/workspace/332/messages"
System.exit(1);
}
// Note: you can replace these with your FB Name and Archive instead of
// using the command line if you'd like.
String name = args[0];
String archive = args[1];
LIFOWorkList<String> messages = new ArrayStack<String>(); Stack<String> corpus = new Stack<>();
File[] listOfFiles = (new File(archive + File.separator + "messages")).listFiles(); File[] listOfFiles = (new File(archive + File.separator + "inbox")).listFiles();
for (int i = 0; i < listOfFiles.length; i++) { for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) { File conversation = new File(listOfFiles[i], "message.json");
Document doc = Jsoup if (conversation.isFile()) {
.parse(listOfFiles[i], "UTF-8"); try {
Elements messagesElements = doc.getElementsByTag("p"); JSONObject obj = (JSONObject) new JSONParser().parse(new FileReader(conversation));
for (Element content : messagesElements) { JSONArray messages = (JSONArray) obj.get("messages");
if (content.previousElementSibling().getElementsByClass("user").text() for (Object m: messages) {
.equals(name)) { JSONObject msg = (JSONObject) m;
messages.add(content.text()); String sender = (String) msg.get("sender_name");
} if(sender != null && sender.equals(name)) {
} corpus.push((String) msg.get("content"));
} }
}
} catch (ParseException e) {
System.err.println("Could not parse: " + conversation.toString());
}
}
} }
PrintWriter out = new PrintWriter("me.txt", "UTF-8"); PrintWriter out = new PrintWriter("me.txt", "UTF-8");
while (messages.hasWork()) { while (!corpus.isEmpty()) {
out.println(messages.next()); out.println(corpus.pop());
} }
out.close(); out.close();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment