ブログ更新情報をはてなブックマーク・はてなハイク・twitterに投稿するjavaコード
ブログの更新情報をはてなブックマーク・はてなハイク・twitterに同時に投稿するjavaコードです。
使い方
アカウント情報の設定(NoticeBlogUpdate.properties)
このプログラムを使用するには、各サービスのアカウント情報をプロパティファイル「NoticeBlogUpdate.properties」に記述する必要があります。
プロパティファイルには以下の情報を設定します。
- hatena_username
- はてなのユーザ名
- hatena_password
- はてなのパスワード(はてなブックマークAPIの認証に使用)
- hatena_address
- はてなの投稿用アドレス(はてなハイクAPIの認証に使用)
- twitter_username
- twitterのユーザ名
- twitter_password
- twitterのパスワード
プロパティファイルは以下のように記述します。
hatena_username=nattou_curry_2 hatena_password=XXXXXXXXXX hatena_address=YYYYYYYYYY twitter_username=nattou_curry twitter_password=ZZZZZZZZZ
画面の操作
まず、画面上のテキストフィールドをそれぞれ入力します。
入力する内容は以下のとおりです。
- タイトル
- ブログの記事のタイトル
- URL
- ブログの記事のURL
- ぶコメ
- 記事に対するブックマークコメント
画面には以下のように入力します。
次に、OKボタンを押します。
すると、以下のような確認ダイアログが表示されるので、投稿内容を確認してください。
投稿内容に問題がなければOKボタンを押します。
認証や投稿処理に問題がなければ、各サービスにブログの更新情報が通知されます。
ソースコード
NoticeBlogUpdateクラス
以下、NoticeBlogUpdateクラスのソースコードの全文です。
import java.io.*; import java.util.*; import javax.swing.*; import java.awt.event.*; import java.awt.*; /** * ブログ更新情報をはてなブックマーク・はてなハイク・twitterに投稿する。 * @author nattou_curry */ public class NoticeBlogUpdate { private static JFrame frame; private static JTextField tf_title; private static JTextField tf_url; private static JTextField tf_comment; public static void main( String[] args ) { ////////////////////////////////////////////////////////////////// // コンポーネントを作成する。 ////////////////////////////////////////////////////////////////// frame = new JFrame( "ブログ更新通知" ); tf_title = new JTextField(); tf_url = new JTextField(); tf_comment = new JTextField(); frame.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE ); JButton bt_Ok = new JButton( "OK" ); ////////////////////////////////////////////////////////////////// // ボタンのイベントを設定する。 ////////////////////////////////////////////////////////////////// bt_Ok.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent evt ) { // OKボタンが押された: okPressed(); } } ); ////////////////////////////////////////////////////////////////// // フレームのレイアウトを行う。 ////////////////////////////////////////////////////////////////// JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel(); frame.setLayout( new BorderLayout() ); frame.add( panel1, BorderLayout.CENTER ); frame.add( panel2, BorderLayout.SOUTH ); panel1.setLayout( new GridLayout( 3, 2 ) ); panel1.add( new JLabel( "タイトル: " ) ); panel1.add( tf_title ); panel1.add( new JLabel( "URL: " ) ); panel1.add( tf_url ); panel1.add( new JLabel( "ぶコメ: " ) ); panel1.add( tf_comment ); panel2.setLayout( new BorderLayout() ); panel2.add( bt_Ok ); ////////////////////////////////////////////////////////////////// // フレームを表示する。 ////////////////////////////////////////////////////////////////// frame.setSize( 500, 200 ); frame.setVisible( true ); } /** * OKボタンが押された場合の処理。 */ private static void okPressed() { ////////////////////////////////////////////////////////////////// // フレームから入力値を取得する。 ////////////////////////////////////////////////////////////////// // ブログのタイトル String title = tf_title.getText(); // ブログのURL String url = tf_url.getText(); // はてなブックマークのコメント String comment = tf_comment.getText(); // ブログのタイトルが入力されていることを確認する。 if ( title.length() == 0 ) { // 入力されていない: JOptionPane.showMessageDialog( frame, "ブログのタイトルが入力されていません。", "エラー", JOptionPane.ERROR_MESSAGE); return; } // ブログのURLが入力されていることを確認する。 if ( url.length() == 0 ) { // 入力されていない: JOptionPane.showMessageDialog( frame, "ブログのURLが入力されていません。", "エラー", JOptionPane.ERROR_MESSAGE); return; } // はてなハイク・twitterのメッセージ String message = title + " " + url; // はてなハイクのキーワード String keyword = "ダイアリー書いたよ!"; ////////////////////////////////////////////////////////////////// // 処理の継続を確認する。 ////////////////////////////////////////////////////////////////// String confirmMessage = "以下の内容で投稿しますがよろしいですか?\n" + "\n" + "・はてなブックマーク: URL=[" + url + "], コメント=[" + comment + "]\n" + "・はてなハイク: メッセージ=[" + message + "], キーワード=[" + keyword + "]\n" + "・twitter: メッセージ=[" + message + "]"; Object[] options = { "OK", "CANCEL" }; int result = JOptionPane.showConfirmDialog( frame, confirmMessage, "確認", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE ); if ( result != JOptionPane.OK_OPTION ) { return; } ////////////////////////////////////////////////////////////////// // プロパティファイルから設定を読み込む。 ////////////////////////////////////////////////////////////////// Properties prop = new Properties(); InputStream in = null; try { // プロパティファイルを開く。 in = new FileInputStream( "NoticeBlogUpdate.properties" ); // プロパティファイルの内容をプロパティセットに読み込む。 prop.load( in ); } catch ( IOException e ) { // 入出力エラー: e.printStackTrace(); return; } finally { // プロパティファイルを閉じる。 try { in.close(); } catch ( IOException e ) { // 何もしない } } // はてなのユーザ名 final String hatena_username = prop.getProperty( "hatena_username" ); // はてなのパスワード final String hatena_password = prop.getProperty( "hatena_password" ); // はてなのアドレス final String hatena_address = prop.getProperty( "hatena_address" ); // twitterのユーザ名 final String twitter_username = prop.getProperty( "twitter_username" ); // twitterのパスワード final String twitter_password = prop.getProperty( "twitter_password" ); ////////////////////////////////////////////////////////////////// // ブログ更新情報をはてなブックマーク・はてなハイク・twitterに投稿する。 ////////////////////////////////////////////////////////////////// // はてなブックマーク HatenaBookmarkAPIAccess.postPost( hatena_username, hatena_password, url, comment ); // はてなハイク HatenaHaikuAPIAccess.postStatusesUpdate( hatena_username, hatena_address, message, keyword ); // twitter TwitterAPIAccess.postStatusesUpdate( twitter_username, twitter_password, message ); } }
依存するクラスのソースコード
NoticeBlogUpdateクラスは、各サービスのAPIに接続するために以下のクラスを使用します。
- HatenaBookmarkAPIAccess (参考: はてなブックマークAPIに接続するためのjavaコード)
- HatenaHaikuAPIAccess (参考: はてなハイクAPIに接続するためのjavaコード)
- TwitterAPIAccess (参考: twitter APIに接続するためのjavaコード)