如何使用codebird API发布视频

时间:2016-12-08 12:01:01

标签: php video twitter

我正在使用codebird上传视频。

状态文本显示在Twitter帐户中,但不会上传/显示视频。

这是推特回复。

  

1470928字节   object(stdClass)#7(3){[" errors"] => array(1){[0] => object(stdClass)#6(2){[" code"] => int(324)[" message"] =>字符串(35)"无效的媒体ID 806853054318448640" }" httpstatus"] => int(400)[" rate"] => NULL}

和代码

    require_once ('codebird/src/codebird.php');
\Codebird\Codebird::setConsumerKey('xyz','XXXXXXX'); // static, see README

$cb = \Codebird\Codebird::getInstance();

$cb->setToken('Xyz', 'xyz');
  $file       = 'www.something.com/*.mp4';
  $size_bytes = filesize($file);

$ch = curl_init($file);
  curl_setopt($ch, CURLOPT_NOBODY, true);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HEADER, true);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

  $data = curl_exec($ch);
  curl_close($ch);
  echo '<br>';
  if (preg_match('/Content-Length: (\d+)/', $data, $matches)) {

      // Contains file size in bytes
      $contentLength = (int)$matches[1];

  }

echo  $size_bytes = $contentLength ;

$fp  = fopen($file, 'r');

// INIT the upload

$reply = $cb->media_upload([
  'command'     => 'INIT',
  'media_type'  => 'video/mp4',
  'total_bytes' => $size_bytes
]);
       $media_id = $reply->media_id_string;
 $media_id ;

$segment_id = 0;

while (! feof($fp)) {
  $chunk = fread($fp, 1048576); // 1MB per chunk for this sample

  $reply = $cb->media_upload([
    'command'       => 'APPEND',
    'media_id'      => $media_id,
    'segment_index' => $segment_id,
    'media'         => $chunk
  ]);
   $segment_id++;
 }

fclose($fp);

$reply1 = $cb->media_upload([
  'command'       => 'FINALIZE',
  'media_id'      => $media_id
]);


if ($reply->httpstatus < 200 || $reply->httpstatus > 299) {
  die();
}

$reply2 = $cb->statuses_update([
  'status'    => 'Tw gvifdeggeo uploadsrrs.',
  'media_ids' => $media_id
]);

var_dump($reply2);

启用Curl和allow_url_fopen 帮助我,我错过了什么?或者这个反应意味着什么?

1 个答案:

答案 0 :(得分:0)

获得media_id后,您已成功将媒体上传到您的帐户。下一步是使用该媒体发推文。这是一个片段示例:

//upload the file to your twitter account
$mediaID = $reply->media_id_string;

//build the data needed to send to twitter, including the tweet and the image id
$params = array(
  'status' => $message,
  'media_ids' => $mediaID   // BE SURE TO TWITTER's NOT YOURS!
);
//post the tweet with codebird
$reply2 = $cb->statuses_update($params);

转出第二次回复

var_dump($reply2);

This snippet is taken from Stack Overflow with answer explaining how to tweet using an image as the media.