mixi graphの日記APIで写真つき投稿

先日mixiの日記に投稿するスクリプトを作ったんだけど(「次はmixiのgraph APIから」 https://t2aki.doncha.net/?id=1339828183)これはとりあえず本文だけの投稿で、本文をjsonにしてリクエストしている。
でも、せっかくなので、写真付きの日記も投稿できるようにしてみた。
OAuthのやりとり、access_token や refresh_token の取得などは前回の記事と同じなので、ここでは省略。
perl の lwp を使って multipart/form-data をリクエストするところのメモ。
バウンダリや、文字のエスケープなど、いろいろ考えなきゃいけないことがあって、LWP::UserAgent と HTTP::Requestだけで自作するのはよくわからんなあ、と眺めたり検索すると HTTP::Request::Common というのを使うのが定番だと。さすがperl、欲しいものはちゃんとある。感謝。
てことで
例によってこんだけでOK。
content-type も access_token も、ここで指定するとちゃんと header に入っている。
ちょっとハマったのがPOSTの書き方。対象URLに実際にリクエストするのは、いろいろなケースがあってリクエストするものが違う。リクエストを生成するところとは別、実際に対象URLにリクエストするのは一カ所にした方がコードのメンテがしやすい。
でも、リクエストを生成しようと POST URL ... を入れるとこの時点で対象URLにリクエストしてしまう。
「LWP::UserAgent の post(...) メソッドは$ua->request(POST ...) への ショートカットとして存在しています。」
ということで、POSTと書くと飛んでいってしまう。
なので、
use HTTP::Request::Common qw(POST);
と、Common の POST を使うことを指定して、POSTと書いてもリクエスト生成だけですよ、ということに。
写真の枚数とか画像ファイルの存在チェックなどは、ここにつけたし。
perl最高っす!
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
【電子書籍発売中】
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 600円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 200円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 200円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 490円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 200円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 100円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 400円
- » Kindle
- » iBooks
- » kobo
- » B.W.
- 200円
doncha.net制作・発行:KindleやiBooks、楽天kobo、BOOK☆WALKERで読む電子書籍