使用 Twit 通过机器人发布视频
Posted
技术标签:
【中文标题】使用 Twit 通过机器人发布视频【英文标题】:Using Twit to post a video with a bot 【发布时间】:2021-07-01 14:31:57 【问题描述】: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
【问题讨论】:
【参考方案1】:对于视频和 GIF,您需要使用分块媒体上传方法 - 您不能“一次”完成,它有多个阶段(INIT、APPEND、FINALIZE),per the Twitter docs。
请注意,要上传视频或 GIF(tweet_video、amplify_video 和 tweet_gif),您需要使用分块上传端点。
事实证明,twit
模块有一个辅助方法,postMediaChunked
- 这也让你不必告诉 Twitter 数据的 mime 类型,这意味着你可以删除 @987654324 的导入@模块。
这是一个仅做媒体部分的最小示例 - 您只需提取 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 无法正确处理长整数,并且已经破坏了数值)
【讨论】:
我是否理解 Data 是一个对象,而 media_id_string 是该对象的一个属性?如果我需要稍后调用 Media_id_string,我是否使用 data.media_id_string 来调用? 是的,应该这样做。数据是来自 API 的 JSON 响应。以上是关于使用 Twit 通过机器人发布视频的主要内容,如果未能解决你的问题,请参考以下文章
使用 twit npm 从 user_timeline 获取最新推文