user1846871
user1846871

Reputation: 68

how to tweet video using 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 ?

Upvotes: 0

Views: 1017

Answers (1)

WEBjuju
WEBjuju

Reputation: 6581

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.

Upvotes: 0

Related Questions