風柳メモスマートフォン用の表示で見る風柳メモソフトウェア・プログラミング関連の覚書が中心。なし・平会員1名のみの委員会ですがとくに絵心が無くても簡単にバナー付きリンクが作れてしまう『はてなコピィ』。私的に大好きなサービスなんですが、初期はともかく、現状は閑古鳥が鳴いているのが否めません...。非公式になるものを、でっち上げてしまいました。id:cho45さん、勝手にすみません。これもひとえに愛ゆえと、お目こぼしいただければ幸いです。いっても、単なるTwitter上のbotでして、今のところ15分毎に、既存コピィをランダムにつぶやくだけ、なんですけれどもね。バナーをTwitPicに貼り付けているので、NewTwitterやTwilog、画像が見えるクライアントなどでプレビュー可能です。画像の一部だけが拡大表示されるクライアントなんて使っていると、気になること請け合いです(をい)。紆余曲折の末、当面TwitPicへのバナー貼り付けは中止しました【2010.10.30現在】。やっていることここからは作者向けの覚え書きなので、特に読む必要はないです。手順はてなコピィの『無作為に一覧』のRSSを定期的(現状、30分毎)に取得し、重複分を除くコピィの情報をGAEのdatastoreに保存しておく。goo.gl)、および、バナーイメージを取得後、TwitPicに投稿。このときに得られたURLをくっつけて、Twitter(http://twitter.com/hatena_copie)に投稿。はまった点など最初は単純に、バナー(画像)へのリンクを貼付ようとしたのだけれど、NewTwitterの場合は画像直リンクだとプレビューできないっぽかったので、TwitPicへの投稿という手順を入れたのである......が、これがはまった。v2のuploadを使ったんだけれども、このページの説明だけを見て、即座にAPI経由での投稿方法がわかる人は、凄すぎる......。少なくとも、oauth_consumer_keyは、Twitter側アプリケーション設定で取得したConsumerKeyをそのまま使う。oauth_signatureも、Twitter側アプリケーション設定で取得したConsumerSecretを種にして計算した値を使う。oauth_tokenも、Twitter側アプリケーションのOAuth手順で取得したものを使用する。OAuth関係の各種パラメータ計算方法は、Twitter側と同様のものを使用する。このとき、種となるmethodは"GET"*1、urlはhttps://api.twitter.com/1/account/verify_credentials.json*2として計算する。パラメータはContent-Typをmultipart/form-dataとしてkey、message、mediaの各パラメータを指定する。このとき、keyは、TwitPic側で取得(http://dev.twitpic.com/apps/new)したものを使う。messageはTwitPic側に投稿されるメッセージで、Twitter側には反映されない*3。mediaにはアップロードする画像ファイル名と画像データを指定する。解らないと、使いようが無い気がするのだけれども......。それと、multipart/form-dataのbodyを直接作ったのは初めてだったので、これにもはまってしまった...というか、実は未だに正しい方法が理解出来ていない。単純に、行毎にlistに追加し、'\r\n'区切りでjoin()しようとすると、画像ファイルがバイナリであるため、Unicodeエラーが発生してしまう......。結局、テキスト部分はencode('utf-8')したのちバイト数を数えてstruct.pack('(バイト数)s')でバイナリ列に変換し、画像ファイル(urlfetch.fetch()でとってきたcontentそのもの)のバイナリとくっつける、という強引な方法を使ってしのいだのだが*4、正しいやり方、どなたか教えて下さいませ。*1:"POST"では無いことに注意。*2:X-Auth-Service-Providerで指定したもの。v1との違いになるのかな?*4:一応、TwitPicには投稿出来てはいるみたい。はてなブログProソフトウェア・プログラミング関連の覚書が中心。)月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。