drzyeetvt41077335 2016-12-08 12:01
浏览 19
已采纳

如何使用codebird API发布视频

I am using codebird for uploading video .

status text is displaying in twitter account but it is not uploading/showing video .

here is twitter response.

1470928 byte object(stdClass)#7 (3) { ["errors"]=> array(1) { [0]=> object(stdClass)#6 (2) { ["code"]=> int(324) ["message"]=> string(35) "Invalid media id 806853054318448640" } } ["httpstatus"]=> int(400) ["rate"]=> NULL }

and Code

    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 and allow_url_fopen are enabled Help me what i am missing ? or what this reponse indicates ?

  • 写回答

1条回答 默认 最新

  • doushe7934 2016-12-08 12:12
    关注

    After getting the media_id, you have successfully uploaded the media to your account. The next step is to tweet using that media. Here is a snippet example:

    //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);
    

    dump out the 2nd reply

    var_dump($reply2);
    

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 win10权限管理,限制普通用户使用删除功能
  • ¥15 minnio内存占用过大,内存没被回收(Windows环境)
  • ¥65 抖音咸鱼付款链接转码支付宝
  • ¥15 ubuntu22.04上安装ursim-3.15.8.106339遇到的问题
  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面