GCalendar HolidaysのGoogle Calendar API V3対応

(追記)
Wikiの方も更新しました → GoogleカレンダーからJSONPで日本の祝日一覧を取得 – GCalendar Holidays [ゼロと無限の間に]
(追記終わり)

GCalendar Holidaysで使っていたGoogle Calendar API V2が遂に廃止になってしまいました。(かなり前からDeprecatedになっていて、廃止日も告知されていたのですが、気がついたらもう過ぎていました。)

APIのV3はGoogleのAPI KEYが必須になるため、公開されるJavaScriptからのアクセスは難しいです。(API KEY側にIPアドレス制限が設けられるようですが、それはそれで面倒…)

そこで、とりあえずGoogle AppEngine経由で、Google Calendar API V3から取ったにほんの祝日情報をJSONPで返すようにしました。一部の機能(Googleカレンダー公式版の祝日以外の取得、ブラウザ側のキャッシュ)は未実装ですが、とりあえずGoogle Codeにはあげました。自分のサイトの方も、ぼちぼち更新したいとは思います。

Google AppEngine for PHPは便利ですね。使い慣れないPythonで調べながら作るのもそれはそれで楽しいですが、必要に迫られた時は勝手知ったるPHPでできるのが便利です。
Google Cloud SDKなんてのもできたんですね。AppEngine使うだけなら、今までと変わりませんが…

AppEngine-TwitterとRT_reportをTwitter API 1.1に対応させました

Twitterが2013/3/5をもってTwitter Search APIを廃止し、OAuthによる認証が必要なTwitter REST API 1.1に統合したことへの対応として、AppEngine-Twitterの検索機能で使うAPIをSearch APIからREST API 1.1に変更しました。(でもまだいまだにSearch APIも生きてる気がするけど…)
バージョン0.3.0です。

もともとsearch以外のほとんどの操作はOAuthを前提としていたので、変わったのは主にsearchのとこだけです。

また、それに合わせてRT_reportも対応させました。ギリギリ間に合ったようです。
Rate LimitがIP単位からユーザー単位になったおかげで、たくさんのユーザーが同一IPに同居してすぐにLimitに達してしまうため事実上検索等のAPIは使えなかったGoogle App EngineからのTwitter APIの利用ができるようになったのは喜ばしいことです。

Page View Boardが新しいGoogle AppEngineのQuotaにひっかかった

Google AppEngineで動かしているサイト内アクセスランキングWidgetのPage View Boardが、急に機能しなくなりました。ソースコード公開用Wiki等で使います。正確に言うと、ランキングに表示される1週間のアクセス数が、急に少ない数字になってきたのです。

原因は、どうやら11/7からのGoogle AppEngineの価格改定に伴う無料枠の変更の影響のようです。
AppEngineのDashboardを見ると、「Datastore Write Operations」が100%で赤くなっていて、さらに、「Your application is at or near its free resource limits.  You should enable billing to avoid service interruption.」というメッセージも。

いきなり課金されないのは幸いです。

この変更はもちろん知っていたのですが、それでも自分のアプリがQuotaにひっかかるとは思っていませんでした。けっこうアクセス数のあるサイトでも使われ始めたことも原因の1つのようです。

対策として、とりあえずアプリをコピーしてもう1つ作り、自分のサイトではコピーしたのを使うようにしました。
これで元のアプリの方もQuotaに制限を回避できるようになればよいのですが…。

 

RT_reportのつぶやきを非公式RTから公式のReTweetに変更

RT_reportのつぶやきを、非公式RTから公式のReTweetに変更しました。
以前から公式RTにしたいなとは思ってたのですが、Google App EngineとTwitter Search APIの組み合わせによる制約のため諦めていました。
しかし今日になってふと思いついたので、やってみたらうまくいきました。

これにともない、AppEngine-Twitterもバージョン0.2.0にバージョンアップさせました。
変更点はReTweetができるようになったことと、Twitter APIのアクセス制限時のレスポンスのHTTP Status Codeが503から420に変わっていたことの対応です。(ずいぶん前に変わっていたみたいです。)

Twitterボットのnorikae_mapで車・歩きでのルート検索

乗り換え案内・ルート検索をしてくれるTwitter Botの@norikae_mapで、車や歩きでのルート検索をできるようにしました。

やり方は、出発地点・目的地の後に、「車」または「歩き」と書くだけです。移動方法を指定しないと、電車での乗り換え案内をリプライします。

具体例はこちらを参考にしてください。

ちなみに台湾から中国本土へ歩こうとすると( @norikae_map 八里郷領港大道 福州平潭県 歩き )、泳いで渡ることになるそうです...

AppEngine-Twitter / AppEngine-OAuthの動作サンプルに「乗換案内Bot」を追加

Google App Engine(Python)用ライブラリのAppEngine-Twitter / AppEngine-OAuthの動作サンプルに、新しいTwitter Botを追加した。

その名も乗換(道順)案内Bot

出発地点と目的地を告げると、Googleマップでその経路を調べてURLをリプライしてくれるBotだ。デフォルトは電車・飛行機での乗換案内だが、Googleマップに行ってしまえば車や徒歩でのルート案内も表示できる。

おまけにiPhone/iPadでも使えると思う。(未検証ですが。)

使い方はここを参照。

短縮URLにはBit.lyを使ったが、放っておいてもt.coで短縮してくれるんだっけ?まあいいや。

久しぶりのPythonでいろいろ忘れてた。嫌いではないけどなあ、Python。

AppEngine-Twitterのサンプルに@who_is_nearを追加した

Google App Engineで手軽にTwitterアプリを作成!(OAuthにも対応!) – AppEngine-Twitterの動作サンプルとして、@RT_reportに続いて@who_is_nearを作った。

@who_is_nearは、「@who_is_near 六本木」のように@リプライで地名を渡すと、その近くにいる(ことになっている?)Twitterユーザーの名前を@リプライで知らせてくれるBot。

ジオコーディングにはGoogle Maps APIを使っている。

ちょっと緩めのインターバルで動かしているので、返事は気長に待ってくださいね。

TwitterでたくさんRTされたPOSTをRTするbot “RT_report”を作った

AppEngine-TwitterAppEngine-OAuthのデモとして、たくさんRTされたつぶやきを定期的にPOSTするbot、RT_reportを作った。

また、その副産物として、Today’s RT Rankingも作った。

RTは日本ではまだそれほど普及していないので、洗練されすぎてもいないし、グダグダの方に偏ってもいないので見ていて意外に面白い。賞味期限はもう少しかな?

Twitterのおともによろしければどうぞ。

Google App EngineでOAuthを使ってTwitter APIを扱えるライブラリを公開した

本体はこれ。使い方等も下記リンク先を参照。

Google App Engineで手軽にTwitterアプリを作成!(OAuthにも対応!) – AppEngine-Twitter [ゼロと無限の間に]

OAuth関連の部分は別のclassに抜き出した。

Google App Engineで手軽にOAuthアプリを作成!(Twitterとか!) – AppEngine-OAuth [ゼロと無限の間に]

ついでにGoogle App EngineのRequestHandlerを拡張+ちょっと便利な関数群 – AppEngine-BaseHandler [ゼロと無限の間に]もどうぞ。

OAuthをったサービスを作りたいなら、別途Twitterに申請が必要。(簡単なフォームに書き込むだけだけど。)

それにしてもGoogle App Engine Python版の開発しやすさは素晴らしい。SDKでひととおりできてしまう。軽いし。RDBMSが使えないという点さえなければ…