macにてnode.js+mysql+oauthでTwitterのbotを作成
流行っていると噂のnode.jsでTwitterのボットを作ってみました。
まったくWebアプリ関係の知識がないので、そういう人が書いていることを念頭においておいてください。
なので初心者には分かりやすいと思います。上級者は間違いなどあったら突っ込んでくださるとありがたいです。
以下、このボットを動かすために必要な作業を作業領域ごとにまとめて記載していきます。
準備
node.js
GCCが入っている環境ならば以下を使えば一発でインストールできるはずです。
参考http://sakuratan.biz/archives/3101
npmのインストール
node.jsではモジュールというものがあり、まあだいたいCで言うライブラリ。
モジュールはnpmというプログラムで環境にインストールすることができる。npm=node package manager
node.jsのインストールした時のスクリプトが正常に動けばこちらも同時にインストールされています。
botで使うモジュールのインストール
アカウント作成
みなさんお持ちであろうgmailでエイリアスを使って作成するのがよいと思います。
hoge@gmail.comならばhoge+xxxx@gmail.comで新しいgmailのアドレスとして機能します。
メールはhoge@gmail.comに届きますが宛先はhoge+xxxx@gmail.comになってますのでフィルタなどで振り分けましょう。
botに必要な情報の取得
これから作るアプリケーションをTwitterに登録し、OAuthに必要なコンシューマキー、コンシューマシークレット、アクセストークン、アクセストークンシークレットを取得します。
1.https://dev.twitter.com/に移動
2.右上写真からmy applicationに移動
3.Create a new application をクリック
4.適当に項目を埋める。websiteは自分のプロフィールでも貼付ければOK。https://twitter.com/#!/あなたのユーザ名
5.my applications から今登録したアプリを選択
6.settingsでApplication TypeをRead and Writeに変更
7. your access tokenの箇所でcreate access tokenをクリック
8.画面を何度か更新すると your access tokenの箇所にAccess token, Access token secretが表示される
9.Consumer key, Consumer secret, Access token, Access token secretをめでたく取得できるようになる
参考http://www.msng.info/archives/2010/01/twitter_api_oauth_with_php.php
mysql
インストール
portを使いmysqlをmacにインストールします。
sudo port install mysql5-server
インストールが成功すると以下のメッセージが表示されます。
If this is a new install, in order to setup the database you might want to run: sudo -u _mysql mysql_install_db5
なので、指示の通りに実行します。
sudo -u _mysql mysql_install_db5
create database データベースの作成
日本語を使う場合は以下の設定を/etc/my.cnfに作成しておきます。
[mysqld] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqldump] default-character-set=utf8
参考http://blog.livedoor.jp/kage_java/archives/65624194.html
名言を保存しておくデータベースを作成します。
//サーバの起動 #sudo /opt/local/share/mysql5/mysql/mysql.server start //ルートでログイン #mysql5 -u root #create データベースの名前 #create table テーブルの名前 ->(主キーとなるカラム名 BIGINT PRIMARY KEY AUTO_INCREMENT, ->名言を格納するカラム名 VARCHAR(256) UNIQUE NOT NULL); #insert into wisdom VALUES(null, '好きな名言をなにか記入');
実行
以下に表示されているtweet_wisdom_bot.jsをダウンロードします。
コードの中の日本語部分を今まで入手した情報などに変更してください。
そして、以下を実行してください。
node tweet_wisdom_bot.js
コード
crontab
定期的に実行したいならばcrontabを使います。
例として1時間に1回つぶやく場合を示します。
crontab -e 00 * * * * ~/local/bin/node ~/tweet_wisdom_bot.js
課題
例外ってのが全然分かっていないので勉強しようと思います。
mysqlやらoauthでfunctionを渡すのはなんでだろと思ってましたが、
同期で返れないからと納得しました。あってるんでしょうか?