Main.java
package minhon_client;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.StringReader;
import java.util.GregorianCalendar;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import minhon.TranslateFile;
public class Main {
private static final String USERNAME = "";
private static final String KEY = "";
private static final String SECRET = "";
private static int getTranslateState(TranslateFile tf, String pid) {
String translate_result;
translate_result = tf.getStatus(pid);
// System.out.println(translate_result);
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource is = new InputSource(new StringReader(translate_result));
Document document = builder.parse(is);
String state_str = "";
state_str = document.getElementsByTagName("state").item(0).getTextContent();
int state = Integer.parseInt(state_str);
return state;
} catch (Exception e) {
return -2;
}
}
public static void main(String[] args) throws Exception {
String file_path = args[0];
String translate_result = "";
Boolean result = false;
/* 文字列の翻訳 */
// TranslateLine tl = new TranslateLine(USERNAME, KEY, SECRET);
// tl.translate("こんにちわ");
/* APIライブラリの初期化 */
// minhon.Client c = new minhon.Client(USERNAME, KEY, SECRET);
/* ファイルの翻訳 */
// result = c.registTranslateFile(file_path);
// System.out.println(result);
// result = c.listTranslateFile();
// System.out.println(result);
// translate_result = c.getTranslateFile("66834");
// System.out.println(translate_result);
// 翻訳ファイルの登録
TranslateFile tf = new TranslateFile(USERNAME, KEY, SECRET);
translate_result = tf.regist(file_path);
System.out.println(translate_result);
// DocumentBuilderFactory インスタンスを取得
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
// StringReaderを使ってXML文字列を読み込む
InputSource is = new InputSource(new StringReader(translate_result));
// InputSourceからDocumentオブジェクトを生成
Document document = builder.parse(is);
String pid = document.getElementsByTagName("pid").item(0).getTextContent();
System.out.println("pid:" + pid);
// 翻訳ファイルのステータスを取得
System.out.println("get state of pid:" + pid);
int state = 1;
int wait_time_ms = 5000;
int count_time = 0;
while(state!=2) {
if (120000 < count_time) {
System.out.println("timeout pid:" + pid);
break;
}
Thread.sleep(wait_time_ms);
state = getTranslateState(tf, pid);
GregorianCalendar cal = new GregorianCalendar();
System.out.println("state pid:" + pid
+ " " + "state:" + state
+ " " + cal.get(cal.HOUR_OF_DAY) + ":" + cal.get(cal.MINUTE) + ":" + cal.get(cal.SECOND));
count_time += wait_time_ms;
}
System.out.println("complete pid:" + pid);
// 翻訳ファイルのダウンロード
System.out.println("get the file of pid:" + pid);
translate_result = tf.download(pid);
System.out.println("\"\"\"\n" + translate_result + "\"\"\"");
File file = new File(file_path);
String new_path = file.getParent() + "/" + file.getName()+"_translated.txt";
BufferedWriter fout = new BufferedWriter(new FileWriter(new_path, true));
fout.write(translate_result);
fout.close();
System.out.println("download the file of pid:" + pid + " " + new_path);
}
}
“みんなの自動翻訳APIをJavaで使う” の続きを読む