我是 Tweetinvi 的开发者。
您遇到的问题是 Twitter UPLOAD API 的问题。问题是,当上传完成时,他们的上传服务需要几毫秒到 1 秒的时间来处理它并使其可供您使用。
从那里你有2个解决方案。
解决方案 1(简单)
不要指定MediaCategory
和使用经典Upload
如下:
var videoBinary = File.ReadAllBytes("file_path");
var videoMedia = Upload.UploadVideo(videoBinary);
Tweet.PublishTweet("test", new PublishTweetOptionalParameters()
{
Medias = { videoMedia }
});
该视频应该立即可用。但是我经历过需要延迟的时候。因此,我通常会为 Twitter 服务器添加 500 毫秒的延迟,以便为传入的推文做好准备。
解决方案 2 (amplify_video)
amplify_video
是一个更健壮的解决方案,因为它是 Twitter 提供的解决延迟问题的解决方案。
var videoBinary = File.ReadAllBytes(@"C:\Users\linvi\Pictures\mov_bbb.mp4");
var videoMedia = Upload.UploadVideo(videoBinary, "video/mp4", "amplify_video");
var isProcessed = videoMedia.UploadedMediaInfo.ProcessingInfo.State == "succeeded";
var timeToWait = videoMedia.UploadedMediaInfo.ProcessingInfo.CheckAfterInMilliseconds;
while (!isProcessed)
{
Thread.Sleep(timeToWait);
// The second parameter (false) informs Tweetinvi that you are manually awaiting the media to be ready
var mediaStatus = Upload.GetMediaStatus(videoMedia, false);
isProcessed = mediaStatus.ProcessingInfo.State == "succeeded";
timeToWait = mediaStatus.ProcessingInfo.CheckAfterInMilliseconds;
}
我意识到这很复杂,但很少有人使用amplify_video
. 在下一个版本中,我将添加一个新方法,它会自动为您完成所有这些逻辑。
如果您想在此功能发布时收到通知,您可以在此处找到工作项:https ://github.com/linvi/tweetinvi/issues/347 。
我还将为ProcessingInfo.State
(https://github.com/linvi/tweetinvi/issues/348)提供一个新的枚举。
我希望这个答案对你有所帮助。祝你有美好的一天。