package addon.explain; import bashoid.Addon; import bashoid.Message; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import org.jsoup.Jsoup; import org.jsoup.nodes.Element; import utils.Formatter; import utils.WebPage; public class Explain extends Addon { private static final String ENCODING = "UTF-8"; private String getDefinition(String url) throws Exception { WebPage page = WebPage.loadWebPage(url, ENCODING); return getDefinitionFromHTML(page); } private String getDefinitionFromHTML(WebPage pg) { Element expl = Jsoup.parse( pg.getContent() ).getElementsByAttributeValue("class", "td3n2").first(); return Formatter.removeHTML( expl.text() ); } private String getUrl(String msg) throws UnsupportedEncodingException { msg = msg.substring(8); msg = URLEncoder.encode(msg, ENCODING); return "http://dictionary.reference.com/browse/" + msg; } @Override public boolean shouldReact(Message message) { return message.text.startsWith("explain "); } @Override protected void setReaction(Message message) { try { String url = getUrl(message.text); reaction.add( getDefinition(url) ); } catch (Exception e) { setError("Cannot load given URL.", e); } } }