2013
08/08

Twitterに投稿される画像の直リンク取得方法

Twitterに投稿される画像だけ集めたギャラリーサイトなど面白いのではないかと思い、ツイートに含まれる画像のURLを取得する方法について調べてみました。

テストがてら簡単につくったものですが、たとえば「須磨」という単語が含まれた写真付きのツイートを検索した結果はこのようになります
(´-`).。oO(夏休みですね。。。。。。)

ADs

Twitter検索基本形

TwitterAPIが1.1になってからしばらくになりますが、単なる検索結果を得るためだけでも認証が必要となりました。

ツイート内に含まれる画像の直リンクを取得する

上記検索を実行の際、include_entitiesというパラメータをtrueに設定することによりツイート内に含まれるURLについての情報を追加で取得することができます。

詳しくはTweet Entitiesという公式ドキュメントを見てみてください。

画像でないURLについての情報も取得出来ますが、今回は画像に絞って見てみます。
タイムラインを見ていて画像投稿によく使われている(っぽく見える)、

・Twitter標準の画像投稿機能
・Twitpic
・ついっぷる
・フォト蔵
・Instagram

について画像URLの取得方法を調べてみました。

Twitter標準の画像アップロードの場合

外部サービスを経由せずに画像を投稿した場合、画像そのもののURLが「media_url」というキーで取得できます。
上記の検索基本形のように$obj->statusesをforeachでループした場合、以下のように取得できます。

ただ、外部の画像投稿サービスを利用した場合はmedia_urlでは取得することができません。
代表的jな画像投稿サービス別に、取得方法を調べてみました。

TwitpicのURLから画像URLを取得する

TwitPicの場合、URLの一部を置換することで画像そのもののURLが取得できます。
Twitter標準ではない画像投稿を使った場合、expanded_urlというキーにリンク先URLが入ります。ただこれは画像のURLではなく詳細ページ(という言い方でいいのでしょうか・・・)のURLですので、そのURLより画像URLを取得する必要があります。

ついっぷるのURLから画像URLを取得する

ついっぷるの場合もTwitpicと同様に、URLの一部を置換することで画像URLが取得できます。

フォト蔵のURLから画像URLを取得する

フォト蔵もほぼ同様ですが、フォト蔵の場合は写真掲載URLにはユーザーIDが含まれますが画像URLにはユーザーIDが含まれません。そのユーザーIDの部分を除く必要があります。

InstagramのURLから画像URLを取得する

InstagramはURLを単純な置換で取得することが出きず、必要ない場合でもJSONが返却されます。
そこでそのJSONをfile_get_contents→json_decodeという手順が必要です(URL取得だけならjson_decodeではなくpreg_matchなどのほうがいいような気もするが)。

ADs

Post Comments

メールアドレスが公開されることはありません。

Comments

大変参考になりました。
ありがとうございました!

  • 幸太郎
  • 2013年10月23日 7:08 PM

とても参考になりました!
ありがとうございます!

すいません、1つお伺いしてもよろしいですか?
この方法で、「Twitter標準の画像アップロードの場合」のときは、画像URL以外も拾ってしまいます。
例えばただのリンクの場合も拾ってしまいますが、
「画像」という判定はできるのでしょうか。

よろしくお願いします。

  • れい
  • 2014年8月19日 12:04 PM

れい 様
コメントありがとうございます。

mediaというキーが入るのはTwitter標準の画像アップロードだけのはずなのですが、おかしいですね。。。

Twitter標準の画像アップロードのときは

$statuses->entities->media[0]->media_url;

で、それ以外は

$statuses->entities->urls[0]->expanded_url;

となりますが間違いはないでしょうか?

  • 管理人
  • 2014年8月19日 1:54 PM

「須磨」という単語が含まれた写真付きのツイートを検索した結果はこのようになります

画像1枚もでてきませんけど。

  • 川村宜央
  • 2020年12月2日 7:52 PM

アクセストークンを削除してしまってましたのでサンプルが動いてませんでした。修正しました。

  • 管理人
  • 2020年12月3日 10:23 AM