Question I am working with twitter API now and when post includes video. Twitter returns only thumbnails urls and not main video file url. Twitter returns such JSON:
["media_url"]=> string(86) "http://pbs.twimg.com/ext_tw_video_thumb/../pu/img/p1R5iC_7fN-lqNuK.jpg"
["media_url_https"]=> string(87) "https://pbs.twimg.com/ext_tw_video_thumb/.../pu/img/p1R5iC_7fN-lqNuK.jpg"
["url"]=> string(22) "http://t.co/UViL9KykF*"
["expanded_url"]=> string(63) "http://twitter.com/.../status/..../video/1"
And first two is jpgs, and other urls redirect straight to post. As I am using php to get all information, for vine.co there was such code:
$dom = new DomFinder($media_url);
$video_cell = $dom->find("//meta[@property='twitter:player:stream']", 'content');
But twitter doesn't have such meta tags in and I can't find a way to access video file. Maybe someone know how to get mp4 url?
Twitter staff has stated here that they won't be supporting fetching videos using search. You will have to fetch videos with an other call to the API.
Let's say you have a tweet fetched using search/tweets saved in $tweet
// Check if tweet has media
if (!empty($tweet->entities->media)) {
$searchArray = array(
"id" => $tweet->id, // id of the tweet we just fetched
"include_entities" => true // tells twitter API to return videos and stuff
);
// Get extended_entities
$extendedEntities = $connection->get("statuses/show", $searchArray);
foreach($extendedEntities->extended_entities->media as $media){
var_dump($media->video_info->variants);
}
}
Example result
array (size=6)
0 =>
object(stdClass)[265]
public 'bitrate' => int 832000
public 'content_type' => string 'video/webm' (length=10)
public 'url' => string 'https://video.twimg.com/ext_tw_video/560049056895209473/pu/vid/480x480/gj_fzyk29R9dMPBY.webm' (length=92)
1 =>
object(stdClass)[266]
public 'bitrate' => int 832000
public 'content_type' => string 'video/mp4' (length=9)
public 'url' => string 'https://video.twimg.com/ext_tw_video/560049056895209473/pu/vid/480x480/gj_fzyk29R9dMPBY.mp4' (length=91)
2 =>
object(stdClass)[267]
public 'bitrate' => int 1280000
public 'content_type' => string 'video/mp4' (length=9)
public 'url' => string 'https://video.twimg.com/ext_tw_video/560049056895209473/pu/vid/720x720/S7F4BF2wKR2txCpA.mp4' (length=91)
3 =>
object(stdClass)[268]
public 'content_type' => string 'application/dash+xml' (length=20)
public 'url' => string 'https://video.twimg.com/ext_tw_video/560049056895209473/pu/pl/udxtIM8FytsAE4HQ.mpd' (length=82)
4 =>
object(stdClass)[269]
public 'bitrate' => int 320000
public 'content_type' => string 'video/mp4' (length=9)
public 'url' => string 'https://video.twimg.com/ext_tw_video/560049056895209473/pu/vid/240x240/v5jqpUNnkaeuVZbx.mp4' (length=91)
5 =>
object(stdClass)[270]
public 'content_type' => string 'application/x-mpegURL' (length=21)
public 'url' => string 'https://video.twimg.com/ext_tw_video/560049056895209473/pu/pl/udxtIM8FytsAE4HQ.m3u8' (length=83)
Add the option tweet_mode:'extended'
to get the extended_entities object in the response.
This path in the response will have video urls : extended_entities.media[0].video_info.variants
Example:
[
{
content_type: 'application/x-mpegURL',
url: 'https://video.twimg.com/ext_tw_video/1358226.........'
},
{
bitrate: 832000,
content_type: 'video/mp4',
url: 'https://video.twimg.com/ext_tw_video/1358226.........'
},
{
bitrate: 256000,
content_type: 'video/mp4',
url: 'https://video.twimg.com/ext_tw_video/1358226.........'
}
]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With