Tweetsharp Twitter API - post 多张图片
Tweetsharp Twitter API - post multiple images
下面的代码有效并将 post 发送到 Twitter,但只会 post 向帐户发送一张图片,即使发送了三张图片也是如此。
这些只是 jpg 或 png 文件,不是视频或动画 gif。
如有任何想法,我们将不胜感激。
Dim service = New TwitterService(key, secret)
service.AuthenticateWith(token, tokenSecret)
Dim opt As New SendTweetWithMediaOptions
Dim images As New Dictionary(Of String, IO.Stream)
Dim myStream As FileStream
If Len(ImgName1) > 0 Then
myStream = New FileStream(ImgName1, FileMode.Open)
images.Add("1", myStream)
End If
If Len(ImgName2) > 0 Then
myStream = New FileStream(ImgName2, FileMode.Open)
images.Add("2", myStream)
End If
If Len(ImgName3) > 0 Then
myStream = New FileStream(ImgName3, FileMode.Open)
images.Add("3", myStream)
End If
opt.Status = TweetText
opt.Images = images
Dim TwitterStatus = service.SendTweetWithMedia(opt)
TweetSharp 方法调用的 API 端点不支持多张图片(我不认为它曾经支持过,但无论哪种方式当前文档都说不;https://dev.twitter.com/rest/reference/post/statuses/update_with_media)。
您需要做的是使用 UploadMedia 端点上传图像并捕获每个图像的 ID,然后发送带有 ID 列表的推文。
我不确定您使用的是哪种 TweetSharp 变体。 official/original 已经知道 Nuget 包中的错误,虽然 repo 中的源代码修复了这些错误,但缺少更新的 API 支持。
您可以尝试 TweetMoaSharp(主要由我维护),因为我相信它支持新的端点(但我已经有一段时间没看过了)。在 Nuget 上还有 tweetsharp-alternative 和其他一些可能有支持的人。
我使用 TweetInvi https://github.com/linvi/tweetinvi(通过 Nuget 安装)使其正常工作的代码是:
(Imports Tweetinvi)
Auth.SetUserCredentials(key, secret, token, tokenSecret)
Dim params As New Tweetinvi.Parameters.PublishTweetOptionalParameters()
params.Medias = New List(Of Models.IMedia)
Dim MediaIDs As String = String.Empty
Dim ids As New List(Of Long)
If Len(ImgName1) > 0 Then
Dim imgFile1 As Byte() = System.IO.File.ReadAllBytes(ImgName1)
Dim myMedia1 = Upload.UploadImage(imgFile1)
ids.Add(myMedia1.MediaId)
imgFile1 = Nothing
End If
If Len(ImgName2) > 0 Then
Dim imgFile2 As Byte() = System.IO.File.ReadAllBytes(ImgName2)
Dim myMedia2 = Upload.UploadImage(imgFile2)
ids.Add(myMedia2.MediaId)
imgFile2 = Nothing
End If
If Len(ImgName3) > 0 Then
Dim imgFile3 As Byte() = System.IO.File.ReadAllBytes(ImgName3)
Dim myMedia3 = Upload.UploadImage(imgFile3)
ids.Add(myMedia3.MediaId)
imgFile3 = Nothing
End If
params.MediaIds = ids
Dim myTweet = Tweet.PublishTweet("blah, blah, blah", params)
下面的代码有效并将 post 发送到 Twitter,但只会 post 向帐户发送一张图片,即使发送了三张图片也是如此。
这些只是 jpg 或 png 文件,不是视频或动画 gif。
如有任何想法,我们将不胜感激。
Dim service = New TwitterService(key, secret)
service.AuthenticateWith(token, tokenSecret)
Dim opt As New SendTweetWithMediaOptions
Dim images As New Dictionary(Of String, IO.Stream)
Dim myStream As FileStream
If Len(ImgName1) > 0 Then
myStream = New FileStream(ImgName1, FileMode.Open)
images.Add("1", myStream)
End If
If Len(ImgName2) > 0 Then
myStream = New FileStream(ImgName2, FileMode.Open)
images.Add("2", myStream)
End If
If Len(ImgName3) > 0 Then
myStream = New FileStream(ImgName3, FileMode.Open)
images.Add("3", myStream)
End If
opt.Status = TweetText
opt.Images = images
Dim TwitterStatus = service.SendTweetWithMedia(opt)
TweetSharp 方法调用的 API 端点不支持多张图片(我不认为它曾经支持过,但无论哪种方式当前文档都说不;https://dev.twitter.com/rest/reference/post/statuses/update_with_media)。
您需要做的是使用 UploadMedia 端点上传图像并捕获每个图像的 ID,然后发送带有 ID 列表的推文。
我不确定您使用的是哪种 TweetSharp 变体。 official/original 已经知道 Nuget 包中的错误,虽然 repo 中的源代码修复了这些错误,但缺少更新的 API 支持。
您可以尝试 TweetMoaSharp(主要由我维护),因为我相信它支持新的端点(但我已经有一段时间没看过了)。在 Nuget 上还有 tweetsharp-alternative 和其他一些可能有支持的人。
我使用 TweetInvi https://github.com/linvi/tweetinvi(通过 Nuget 安装)使其正常工作的代码是:
(Imports Tweetinvi)
Auth.SetUserCredentials(key, secret, token, tokenSecret)
Dim params As New Tweetinvi.Parameters.PublishTweetOptionalParameters()
params.Medias = New List(Of Models.IMedia)
Dim MediaIDs As String = String.Empty
Dim ids As New List(Of Long)
If Len(ImgName1) > 0 Then
Dim imgFile1 As Byte() = System.IO.File.ReadAllBytes(ImgName1)
Dim myMedia1 = Upload.UploadImage(imgFile1)
ids.Add(myMedia1.MediaId)
imgFile1 = Nothing
End If
If Len(ImgName2) > 0 Then
Dim imgFile2 As Byte() = System.IO.File.ReadAllBytes(ImgName2)
Dim myMedia2 = Upload.UploadImage(imgFile2)
ids.Add(myMedia2.MediaId)
imgFile2 = Nothing
End If
If Len(ImgName3) > 0 Then
Dim imgFile3 As Byte() = System.IO.File.ReadAllBytes(ImgName3)
Dim myMedia3 = Upload.UploadImage(imgFile3)
ids.Add(myMedia3.MediaId)
imgFile3 = Nothing
End If
params.MediaIds = ids
Dim myTweet = Tweet.PublishTweet("blah, blah, blah", params)