2015年5月9日土曜日

ツイッターAPIの検索で複数の画像URLが取得できない対策方法

How to get multiple pictures URL from Twitter API
ツイッターはアプリ開発者向けにAPIを公開しています。
APIを使ってツイート分の取得や投稿、プロフィールの設定などが出来るようになってます。
ほとんどのAPIがリクエストはHTTPによるGET、SET、POST、DELETEで行い、レスポンスはJSONフォーマットのテキストデータで返す仕様です。
実際に利用するには
https://apps.twitter.com/
からCreate New Appでアプリを登録してConsumer KeyやConsumer Secretを発行してもらう必要があります。

Webアプリの勉強がてらにツイッターAPIを使って悩んだことがあったのでその内容をまとめてみました。
特定のプラットフォームに限定されない話なのでソースコードはありません。


環境

・Windows8.1
・Visual Studio Community 2013
・CoreTweetライブラリーなど


検索APIでは複数の画像のURLが取得できない

検索APIはツイッターを検索するAPIです。
公式ドキュメントはこちら
https://dev.twitter.com/rest/reference/get/search/tweets

非サブスクリプションの開発者でも使えますが過去1週間以内の投稿しか検索できないなどの制限があります。
特に複数の画像を投稿されたツイートを検索しても、一つの画像のURLしか取得できない制限があります。
たとえば、次のツイートは二つの画像が投稿されています。

このツイートを検索APIで取得したJSONデータの画像に関する部分は次の通りです。(一部省略)
最初の1件の画像URLしか取得していません。


全ての画像URLを取得するにはSearch以外のAPIを使う

検索APIだけは1件の画像しか取得できませんが、他のAPIを使えば全ての画像URLを取得できます。
statuses/show/:idというAPIは全ての画像URLが取得できました。
公式ドキュメントはこちら
https://dev.twitter.com/rest/reference/get/statuses/show/%3Aid
statuses/show/:idはステータスIDを指定してJSONデータを取得するAPIです。
検索APIで取得したステータスIDをstatuses/show/:idでJSONデータを取得すると次のようになります。


無事に2枚の画像URLを取得することが出来ました。


検索APIだけ特別らしい

statuses/show/:id のほか statuses/user_timeline でも全ての画像URLが取得できました。
検索APIだけが特別なJSONを返すようです。
画像URL以外もおかしい値があるかもしれません。


関連ブログ

[セキュリティ] Twitterの「このリンクは安全ではない」「このリクエストを保留しています」の対策2015年版
[Unity3D] Visual Studio Community 2013を日本語化してUnityアプリを作る
[C#] タスクトレイにバルーンチップを表示するアプリ

以上、参考になれば幸いです。

0 件のコメント:

コメントを投稿