我正在使用此代码:
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以及其他成功而没有成功。
答案 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