Вопрос: Я работаю с twitter API сейчас и когда публикация содержит видео. Twitter возвращает только эскизы эскизов, а не основной URL-адрес видеофайла. Twitter возвращает такой 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"
И первые два – это jpg, а другие URL перенаправляются прямо на почту. Поскольку я использую php для получения всей информации, для vine.co был такой код:
$dom = new DomFinder($media_url); $video_cell = $dom->find("//meta[@property='twitter:player:stream']", 'content');
Но твиттер не имеет таких метатегов, и я не могу найти способ доступа к видеофайлу. Может быть, кто-то знает, как получить URL-адрес mp4?
Сотрудники Twitter заявили здесь, что они не будут поддерживать выборку видео с помощью поиска. Вам нужно будет получить видео с другим вызовом API.
Допустим, у вас есть твиты, полученные с помощью поиска / твитов, сохраненных в $ 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); } }
Пример результата
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)