Wednesday, May 5, 2010

Getting text containt out of a web page and translate it in any other language

///// Use google-api-translate-java-0.92.jar ////////////////



import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.util.List;
import java.util.ArrayList;

import javax.swing.text.html.parser.ParserDelegator;
import javax.swing.text.html.HTMLEditorKit.ParserCallback;
import javax.swing.text.html.HTML.Tag;
import javax.swing.text.MutableAttributeSet;

import com.google.api.translate.Language;
import com.google.api.translate.Translate;

public class HTMLUtils {
private HTMLUtils() {}

public static List<String> extractText(Reader reader) throws IOException {
final ArrayList<String> list = new ArrayList<String>();

ParserDelegator parserDelegator = new ParserDelegator();
ParserCallback parserCallback = new ParserCallback() {
public void handleText(final char[] data, final int pos) {
list.add(new String(data));
}
public void handleStartTag(Tag tag, MutableAttributeSet attribute, int pos) { }
public void handleEndTag(Tag t, final int pos) { }
public void handleSimpleTag(Tag t, MutableAttributeSet a, final int pos) { }
public void handleComment(final char[] data, final int pos) { }
public void handleError(final java.lang.String errMsg, final int pos) { }
};
parserDelegator.parse(reader, parserCallback, true);
return list;
}

public final static void main(String[] args) throws Exception{

URL url = new URL("http://en.wikipedia.org/wiki/Hello");
StringBuilder sb = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
BufferedWriter writer = new BufferedWriter(new FileWriter("c:\\data.html"));

String line;
while ((line = reader.readLine()) != null) {
sb.append(line);
writer.write(line);
writer.newLine();
}


FileReader freader = new FileReader("c:\\data.html");
List<String> flines = HTMLUtils.extractText(freader);
System.out.println("Original Text");
for (String fline : flines) {
System.out.println(fline);
}

System.out.println("\n\n\nTranslated Text");
Translate.setHttpReferrer("http://en.wikipedia.org/wiki/Hello");
for (String fline : flines) {
String translatedText = Translate.execute(fline, Language.ENGLISH, Language.FRENCH);
System.out.println(translatedText);
}
}
}

No comments:

Post a Comment