ラベル GAE の投稿を表示しています。 すべての投稿を表示
ラベル GAE の投稿を表示しています。 すべての投稿を表示

2012年6月24日日曜日

Twitterの気圧ボットを作ったよ。

気圧ボットを作って欲しいとお願いされたので、作った。

@kiatsu_bot

最初は気圧をつぶやいて意味があるのかわからなかったんだけど、
気圧と気分や体調に関連がある、という話を聞いて興味が湧いたので作ってみた。


つぶやく内容は以下の内容。

気象庁から当日の朝7時の東京の気圧と湿度を取得して、8時につぶやく。
前日と比較して、それぞれの差も入れてる。

他にも気温とかの情報もいれて欲しいということだけど、まずはこちらでリリース。
一周間の気圧の変動を線グラフで見れたりするといいかなと思ったり。

動作環境は、Google App Engine。
言語はPython。
制作時間は6時間くらい。休日の午前中2回で作成。
ほんとにつぶやくだけの実装でフォロー返しとかなし。

これで、過去日発売CDボット朝のリレーボットに続き、3つ目のボット。

2011年6月19日日曜日

朝のリレーTwitterボットを作ったよ!

@morning_relay

世界の都市の日の出の時間につぶやく

名前でわかる通り、詩人の谷川俊太郎さんの「朝のリレー」に影響されて作りました。有名な「カムチャッカの若者が」という詩ですね。小学校くらいの教科書に載っていた記憶が鮮明に残ってます。

つぶやくタイミングは朝がリレーされた、都市が日の出を迎えたときです。
今登録している都市は、世界1574都市になります。すべての都市をつぶやいても数が多すぎてわからないので、その中から一日10都市をつぶやくようにしてます。

東の都市から、徐々に西の都市へ日の出が移動していくのが感じられると思います。


現地の公用語で「おはよう」

つぶやく内容は、現地の時刻での日の出の時間、国名、都市名、それと現地の公用語で「おはよう」の言葉です。実際の内容は下の画像の内容になります。

下のブルガリア語の例からもわかると思いますが、見る環境によっては「おはよう」部分は文字化けすることがあります。タイ語などはPCでは見れるけど、AndroidのTweetDeckだと文字化けしてしまうなどあるみたいです。どのように発音するのがわかればさらにいいんですけどね。

公用語というのはあくまで基本です。「おはよう」に関してはすべて手作業で国ごとに、Wikipediaで公用語を調べて翻訳して登録しています。公用語より英語の方が普及率が高いと英語にしてるかもしれません。Google翻訳で翻訳しているので、Google翻訳で翻訳できない言語は対象外です。

まだまだ、登録している「おはよう」も少ないので随時追加していきます。「おはよう」がない場合は、何も表示されません。


地図で確認出来る

それぞれのつぶやきに緯度経度の情報を付加しているので、地図を確認できるクライアントであればすぐにどこで日の出が起こっているかわかります。知らない都市でもすぐにわかるのがいいところですかね。

ズームの指定ができないようなので、もっと大きな範囲で見たいのに詳細に表示されてしまうのが難点でしょうか。改善方法があれば直したいポイントです。


その他

フォローをすると24時間以内にフォローを返します。
※2012/06/24 追記。
自動フォロー返しの動作を止めました。

今回の説明はボットの概要の説明だけなので、機会があればどうやって作ってるかとかも書けるといいですね。
利用しているものだけ羅列しておきます。
Python
Google App Engine
BeautifulSoup
EarthTool
Google Maps API WebService
こんな感じですかね。

アイコンは、イスタンブールのアジアサイドからヨーロッパサイドへ渡るときにマルマラ海から見た、夕日です。

2010年6月20日日曜日

TwitterBotをリリースしました。

作ってみたいなー、とぼんやりした思いは持っていましたが、なかなか具体的な進展できずにいました。そんな折、友人と話しているときにこんなボットはどうかね、という話になりそれを作ってみたという次第です。
ボットのアイデアを決めたのが、5月15日なのでリリースまで一ヶ月もかかってるのか。ちょっと遅いですね。
細かく説明していきます。

1. 作ったもの

released_cd_bot

今日と同じ日付に発売したCDの情報を教えてくれるボット。例えば6月20日であれば、過去10年間の6月20日発売のCDを探してきて、ランダムにつぶやいてくれる。こんな感じに。
2001年の今日、06月20日は、Eminemの「The Marshall Mathers LP (Asian 2 Disc Version)」が発売された日です。 http://bit.ly/bSGWGk
「あー、あのCDは3年前の今日発売されたのかー。懐かしいなー。」と感じてもらうのが目的。

CDの情報は、Amazonから検索してて、アーティストで絞り込まずに、レーベルで絞り込んだ。なぜなら、対象アーティストを登録するのが大変だから。いくつかのレーベルを対象にしただけでかなりの数のアーティストが検索に引っかかった。

3時間ごとに1回つぶやくことにした。あとは、30分ごとに自動でフォローとリムーブをしてくれるようにした。残念ながら、ダイレクトメッセージとかをくれても、新たにレーベルを追加したりはしない。

2. 利用した環境

Google App Engine for Java

TwitterBotの動作環境として使用。サーバを用意する必要もないし、スケジュールタスクも実行できるからちょうど良かった。ドキュメントも充実してるし。Pythonはあまり触ったことがないのでJavaにした。

3. 利用したライブラリ、API

slim3

slim3なんて不要な規模なはずだけど、使いやすかったので使ってみた。

Twitter4J

Twitter API 用の Javaライブラリ。Twitterとのやりとりはこちらを使用。

Amazon Product Advertising API

Amazonの商品情報へアクセスできるAPI。Amazonとのやりとりは、こちらのAPIを使用。実質、サンプルをほぼそのまま利用したのみ。日付を検索条件に追加してるのと、取得する内容にランキング情報を追加してる。

Bitly API

URL短縮サービスのBitlyのAPI。Amazonの商品のリンクを短縮するのに利用。

4. 振り返って

実際の工数は5人日くらいでしょうか、思っていたよりは短時間で出来た。
ここ2週間くらい実際に動かしてみて、いくつか不具合を見つけて修正済み。さらに不具合が見つかり次第修正したい。

Amazon APIの知識不足から当初はアーティストで検索する仕様にしていて修正の必要が出たりした。そこで結構いろいろ時間を取られてたんだけど、条件をレーベルに切り替えたらすんなり出来た。プログラム自体はほんとに対したことはしていなくて、それぞれのAPIの仕様を調べることの方に多くの時間を割いたかな。

これ、つぶやく情報をCDから本に切り替えるだけで楽しめそう。

あー、そうだ。
Twitterの認証がOAuth認証に対応してないので、問題が出てきたら修正します。