我正在使用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 帮助我,我错过了什么?或者这个反应意味着什么?
答案 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);