node.js - 使用 Twit 通过机器人发布视频
问题描述
function fridayNight(){
const videoPath = "C:\\GitHub\\DivasLive\\DivasLive\\nsync.mp4";
console.log("It's Friday night and I just Got Paid!");
var b64content = fs.readFileSync(videoPath, { encoding: 'base64' });
var mediaType = MIM.getMIMEType(videoPath);
T.post('media/upload', { media_data: b64content, media_type: mediaType }, function (err, data,
response)
{
if(err)
{
console.log(err);
} else
{
console.log(data);
var mediaIdStr = data.media_id_string
var params = { status: "Just got paid!", media_id: [mediaIdStr] };
T.post('statuses/update', params, function (err, data, response)
{
console.log(data);
console.log(err);
});
};
});
};
我不断收到 400: Media type unrecognized,但我试图在第 88 行明确定义它。这也是完整的要点。https://gist.github.com/MetzinAround/25b5771564aa7de183391398db52dbef
解决方案
对于视频和 GIF,您需要使用分块媒体上传方法 -根据 Twitter 文档,您不能“一次性”完成,它有多个阶段(INIT、APPEND、FINALIZE)。
请注意,要上传视频或 GIF(tweet_video、amplify_video 和 tweet_gif),您需要使用分块上传端点。
事实证明,该twit
模块有一个辅助方法来执行此操作,postMediaChunked
这也使您不必告诉 Twitter 数据的 mime 类型,这意味着您可以删除mim
模块的导入。
这是仅执行媒体部分的最小示例-您只需要提取media_id_string
并在statuses/update
通话中使用它:
// Create an Twitter object to connect to Twitter API
const Twit = require('twit')
// Making a Twit object for connection to the API
const T = new Twit(config)
var filePath = '/Users/myuser/Downloads/robot.mp4'
T.postMediaChunked({
file_path: filePath
}, function (err, data, response) {
console.log(data)
})
输出:
{
media_id: 1379414276864151600,
media_id_string: '1379414276864151557',
media_key: '7_1379414276864151557',
size: 924669,
expires_after_secs: 86400,
processing_info: { state: 'pending', check_after_secs: 1 }
}
(请注意,在 JavaScript 中,您应该始终使用 Twitter ID 的字符串版本 - 正如您在此处看到的,数字版本media_id
不匹配media_id_string
,因为 JavaScript 无法正确处理长整数,并且已经破坏了数值)
推荐阅读
- javascript - 使用 Ajax 将图像文件发送到 REST api
- java - 如果没有更改,则跳过 DLL 编译
- php - 如何迭代树 PHP
- python - 用列的中值替换python数据框中列中的所有0将数据类型更改为“O”
- sql - TSql 触发器在插入到 Table2 时从 Table1 中删除行
- python - TSocket 读取 0 字节 - happybase 版本 0.8
- java - Spring JPA 联合表不返回所有字段
- ruby-on-rails - Rails - 预先存在的模型的正确关联
- android - RadioButton 焦点背景形状
- go - GoLang go-cloud/wire 数组作为 Provider 参数的问题