ATNDで, 気になるイベントをメールで通知させる
スポンサードリンク
今年は社外の勉強会に定期的に行く、と上司と1年前に約束したことをふと思い出し、最近になって勉強会に出向くようになりました。イベント探しによく利用するのはご存知ATNDです。
しかし、たまに思い出したときに気になるキーワードで検索をかけてみると、いい感じのイベントがすでに定員オーバーになっている、ということも少なくありません。
そこで、あらかじめ登録したキーワードにマッチするイベントを、メールで通知してくれるアプリを書いてみました。
ATNDのJava APIはここから落とせました。 => http://atnd4j.sourceforge.jp/
commonsのSimpleEmailを使って、Gmailのsmtpサーバーから送ってます。
汚いけど許してね...
package jp.boc.com; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.SimpleEmail; import org.hkzo.atnd4j.Atnd; import org.hkzo.atnd4j.Event; import org.hkzo.atnd4j.EventsResult; public class EventNotifier { public static void main( String args[] ){ EventNotifier ntfr = new EventNotifier(); List<String> list = new ArrayList<String>(); list.add( "kvs" ); list.add( "nosql" ); list.add( "デザインパターン" ); String query = ntfr.createQuery( list ); ntfr.sendMail( query ); } private String createQuery( List<String> keywords ){ StringBuffer sb = new StringBuffer(); sb.append("keyword_or="); for ( String s : keywords ) { sb.append(s + "," ); } return sb.toString(); } private void sendMail ( String query ) { org.apache.commons.mail.SimpleEmail se = new SimpleEmail(); try { se.setCharset( "utf-8" ); se.setHostName( "smtp.gmail.com" ); se.setSmtpPort( 587 ); se.setTLS( true ); se.setAuthentication( "username", "password" ); se.addTo( "送り先アドレス" ); se.setFrom( "gmailアドレス" ); se.setSubject( "気になるATNDイベント" ); StringBuilder msgBldr = new StringBuilder(); for( Event event : getEvent( query ) ) { msgBldr.append( "★ " + event.getTitle() + " " + event.getStartedAt() + " @ " + event.getAddress() + "\n" + " " + event.getCatch() + "\n\n"); } se.setMsg(msgBldr.toString()); se.send(); } catch ( EmailException eme ) { eme.printStackTrace(); } } private List<Event> getEvent( String query ) { Atnd atnd = new Atnd(); EventsResult res = null; try { res = atnd.getEvents( query ); } catch ( IOException ioe ) { ioe.printStackTrace(); } List<Event> list = res.getEvents(); return list; } }
とこんな感じのものを、クーロンから3日に1回くらい叩きたいわけです。
問題は置いておくサーバがないということと、たった今、"ATND Notifier"という素晴らしいChrome Extensionを見つけてしまったため、このアプリの存在価値がなくなってしまったことでしょうか。。