C++を用いたTwitter投稿プログラムの新版「twicpps」です。古い方「twicpp」もそのまま残してありますが、今後使用する場合は、ここで公開しているものを使用してください。
2014年01月15日にTwitter APIの仕様変更が行われて、httpを利用したTwitter APIが利用できなくなりました。今後はhttps(SSL接続)のみがサポートされます。
ソースコードのみの配布となります。各自アプリケーションを登録して、コンパイルして使用してください。C/C++の開発環境を扱える方を対象としています。Windows、Linux、Mac OS Xに対応しています。OpenSSLが必要です。
GitHubからクローンしてください。
C++11に対応していないコンパイラ(MSVC2008等)を使用する場合は、古いバージョンをダウンロードしてください。画像投稿機能はサポートされません。
twicpps-20140325.zip ※このソースは今後メンテナンスされません。
アプリケーションを登録するには、Twitterに携帯電話番号を登録する必要があります。設定画面から「モバイル」を選択し、電話番号を入力し、「続ける」ボタンを押します。
認証コードがショートメールで送られてきますので、それを入力し、「携帯電話を認証する」ボタンを押します。
「電話番号を登録できませんでした。再度お試しください。」と表示されて失敗することがよくあります。その場合、エラー画面でブラウザの更新ボタン(または、F5やCtrl+R等)を押して、同じ認証コードを再入力すると成功することがあります。
「開発者」のリンクをクリックします。
ページの下の方へスクロールし、「Manage Your Apps」をクリックします。
「Create New App」ボタンを押します。
Name(名前)、Description(説明)、Website(ウェブサイト)を入力します。Nameは最大32文字、Descriptionは10~200文字とします。
Developer Agreement を読んで、Yes, I agree にチェックを入れて、「Create your Twitter application」ボタンを押します。
以下のようなエラーが出た場合、携帯電話番号の登録ができていません。前述の方法で電話番号の登録を行ってください。
Nameが長すぎたとき、Descriptionが短すぎたときもエラーが出ますので、設定を確認します。
登録が成功すると、次のような画面になります。「Keys and Access Tokens」をクリックします。
「Create my access token」ボタンを押します。
このページのトップから twicpps-XXXXXXXX.zip をダウンロードします。適当な作業用ディレクトリを作成して、そこに展開します。
上記 GitHubからクローンします。
Visual Studio と Qt Creator 用のプロジェクトファイルを用意しています。お好きな開発環境をご利用ください。Unix系ではMakefileもありますので、コマンドラインでメイクすることもできます。
Visual Studio 2013以降を想定しています。OpenSSLを事前にコンパイルしておいてください。twicpps.slnを開いたら、プロジェクトのプロパティを開き、OpenSSLのインクルードとライブラリのディレクトリを定義します。
g++一式を準備してください。OpenSSLが必要です。Debian系なら aptitude install libssl-dev を行っておきます。
最近のMac OSではOpenSSLのヘッダファイルを使用することができません。その場合、Homebrewを使ってopensslをインストールする必要があります。 Homebrewを使ったOpenSSLのインストール方法は、各自検索してお調べください。
登録したアプリケーションに応じて、キー文字列を設定します。
static char const consumer_key[] = "xxxxxxxxxxxxxxxxxxxxxx"; static char const consumer_sec[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; static char const accesstoken[] = "0000000000-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; static char const accesstoken_sec[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
キーを定義するためのヘッダファイルを用意し、内容をコピーします。
Access Level が Read and write になっていることを確認します。
main.cppを開いて、キーを記述したヘッダファイルをインクルードするようにします。
WindowsならDebugまたはReleaseを選んで、Visual Studioのビルドコマンドを実行します。
Linuxならmakeコマンドを実行します。tweetという実行ファイルができあがります。アプリケーションの登録で指定したNameがmy_botなら、sudo cp tweet /usr/local/bin/tweet_my_botの様に、名前を変更してインストールするといいでしょう。
Qt Creatorがあるなら、twicpps.proを開いてビルドすることもできます。このプロジェクトファイル内に定義してある、インクルードやライブラリのパスを修正する必要があるかもしれません。
Windowsの場合、実行するには twicpps.exe の他に、OpenSSLのライブラリである libeay32.dll と ssleay32.dll が必要です。OpenSSLが正常にコンパイルできていれば openssl\out32dll の中にあるはずですので、その中から2つのDLLを探して twicpps.exe と同じ場所にコピーしてください。
次のように実行するとツイートされます。
$ /usr/local/bin/tweet_my_bot Hello, world
上のような例では、たまたま成功しますが、空白を含める場合などには、できるだけダブルクォートかバックスラッシュでエスケープした方が良いでしょう。
$ /usr/local/bin/tweet_my_bot "Hello, world"
「-」はオプション指定のための特殊文字扱いとなります。「-」で始まるツイートを行いたい場合は、先に「--」を記述しておきます。それ以降は全ての文字がツイート文として解釈されます。
$ /usr/local/bin/tweet_my_bot -- -test-
-stdinオプションを指定すると、標準入力からツイート文字列を得ます。
$ echo test|/usr/local/bin/tweet_my_bot -stdin
ダブルクォートやバックスラッシュを使いたくない場合、BASE64でエンコードしてツイート文を渡すことができます。
$ /usr/local/bin/tweet_my_bot -base64 dGVzdAo=
-stdinと組み合わせて使うこともできます。
$ echo test|base64|/usr/local/bin/tweet_my_bot -base64 -stdin
-mediaオプションとファイルのパスを指定すると、画像を投稿することができます。このオプションは複数指定することができます。Twitterの制限により最大4個まで指定できます。動画GIFはひとつだけ指定できます。
$ /usr/local/bin/tweet_my_bot -media /home/user/neko.jpg "Hello, world"