/*
* Copyright 2007 Yusuke Yamamoto
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package twitter4j.examples.json;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.json.DataObjectFactory;
import java.io.*;
import java.util.List;
/**
* Example application that gets public timeline and store raw JSON strings into statuses/ directory..<br>
*
* @author Yusuke Yamamoto - yusuke at mac.com
*/
public final class SaveRawJSON {
/**
* Usage: java twitter4j.examples.json.SaveRawJSON
*
* @param args String[]
*/
public static void main(String[] args) {
Twitter twitter = new TwitterFactory().getInstance();
System.out.println("Saving public timeline.");
try {
new File("statuses").mkdir();
List<Status> statuses = twitter.getHomeTimeline();
for (Status status : statuses) {
String rawJSON = DataObjectFactory.getRawJSON(status);
String fileName = "statuses/" + status.getId() + ".json";
storeJSON(rawJSON, fileName);
System.out.println(fileName + " - " + status.getText());
}
System.out.print("\ndone.");
System.exit(0);
} catch (IOException ioe) {
ioe.printStackTrace();
System.out.println("Failed to store tweets: " + ioe.getMessage());
} catch (TwitterException te) {
te.printStackTrace();
System.out.println("Failed to get timeline: " + te.getMessage());
System.exit(-1);
}
}
private static void storeJSON(String rawJSON, String fileName) throws IOException {
FileOutputStream fos = null;
OutputStreamWriter osw = null;
BufferedWriter bw = null;
try {
fos = new FileOutputStream(fileName);
osw = new OutputStreamWriter(fos, "UTF-8");
bw = new BufferedWriter(osw);
bw.write(rawJSON);
bw.flush();
} finally {
if (bw != null) {
try {
bw.close();
} catch (IOException ignore) {
}
}
if (osw != null) {
try {
osw.close();
} catch (IOException ignore) {
}
}
if (fos != null) {
try {
fos.close();
} catch (IOException ignore) {
}
}
}
}
}