最近書評ばかりなので、たまにはWeb製作者・PHPerらしいことを書こうかと思う。
Instagramは写真を加工して共有できるアプリだ。
このウェブサービスは、iPhoneの専用アプリで操作することがメインになってるため、画像やユーザ情報などを取得できるAPIは用意されていない。
なければ自分で取得できるPHPスクリプト作ってしまえばいいと思い、色々調べてみた。
すると、画像が表示されるページ(例:http://instagr.am/p/eQJh/)のHTMLにはメタタグ内に画像URLやユーザ名を含んでることがわかった。
ソースを表示するとhead内に<meta property=”og:image” content=”画像URL” />といった記述がある。
InstagramのURLをもとに、以下のように処理します。
— ソースここから —
<?php
$url = “http://instagr.am/p/eQJh/”;
$fp = file_get_contents($url);
/* タイトルを取得 */
preg_match(‘/(]+)property=”?og:title”?([^>]*)>)/i’, $fp, $match);
preg_match(‘/content=”?([^”]+)”?/i’, $match[0], $title);
/* イメージURLを取得 */
preg_match(‘/(]+)property=”?og:image”?([^>]*)>)/i’, $fp, $match);
preg_match(‘/content=”?([^”]+)”?/i’, $match[0], $image);
/* コメントを取得 */
preg_match(‘/(]+)property=”?og:description”?([^>]*)>)/i’, $fp, $match);
preg_match(‘/content=”?([^”]+)”?/i’, $match[0], $description);
echo $title[1].”<br>”;
echo $image[1].”<br>”;
echo $description[1];
?>
— ソースここまで —
これを画像だけの表示にするには、本来なら
header("Content-type: image/jpeg");
readfile($image[1]);
で表示できるはずなのだが、何故か上手くいかなかったので、
echo "<img src="{$image[1]}" alt="">";
で表示することにした。
——– 追記 (2010/12/06) ————–
書き忘れがあったので追記。
取得したURLをサムネイル画像の大きさにするため、URL画像の_7.jpgを_5.jpgに変更するとよい。_5.だと150pxになるからだ。
つまり
$image[1] = str_replace("_7.", "_5.", $image[1]);
とすればよい。
[tmkm-amazon]4839933146[/tmkm-amazon]