如何使用Twitter API从推文中获取图片网址

时间:2014-04-05 22:31:35

标签: image url twitter

我正在使用此代码:

require_once ("twitteroauth.php");

define('CONSUMER_KEY', 'XXX');
define('CONSUMER_SECRET', 'XXX');
define('ACCESS_TOKEN', 'XXX');
define('ACCESS_TOKEN_SECRET', 'XXX');

$toa = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);

$query = array(
  "q" => "#Misiones",
  "result_type" => "recent",
  "include_entities" => "true"
);

results = $toa->get('search/tweets', $query);

foreach ($results->statuses as $result) {

  $user = $result->user->screen_name;
  $text = $result->text;

要获取推文标签#Misiones(我住的地方的名称)。工作正常,但我试图获取图像网址(如果推文有一些) 我尝试使用$ result-> media和$ result-> media-> media_url以及其他成功而没有成功。

4 个答案:

答案 0 :(得分:35)

Tweet Entities正是您要查看的图片。实体提供来自推文的结构化数据,包括扩展的URL和媒体URL。它们位于Twitter REST和Streaming API的所有Tweet对象的entities属性下。

因此,要回答您的问题,如果推文包含一张图片,其网址将位于此处:

$media_url = $result->entities->media[0]->media_url;

下面是一个可以添加到现有foreach循环的PHP代码段,它可以更精细地处理Tweet是否包含媒体URL:

if (isset($result->entities->media)) {
    foreach ($result->entities->media as $media) {
        $media_url = $media->media_url; // Or $media->media_url_https for the SSL version.
    }
}

答案 1 :(得分:4)

要使media_url返回Twitter搜索,请传递tweet_mode=extended。可以跨多个端点(例如/ statuses / show,/ statuses / user_timeline ..)

示例:https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=aneon&tweet_mode=extended

更多内容:https://developer.twitter.com/en/docs/tweets/tweet-updates.html

答案 2 :(得分:0)

要获取推文的图片网址,您需要一个推文对象和一个媒体对象。可以通过推文ID获取媒体对象。

https://developer.twitter.com/en/docs/twitter-api/data-dictionary/object-model/media

答案 3 :(得分:0)

要使用新的 v2 api 获取推文的图片网址,您必须在您的网址后附加 expansions=attachments.media_keys&media.fields=url。 例如,要打开一个返回带有图像的推文(如果有)的流,请创建一个这样的获取请求

https://api.twitter.com/2/tweets/search/stream?tweet.fields=created_at&expansions=attachments.media_keys&media.fields=url