2017-05-15 12 views
0

次のコードは動作し、Twitterに投稿しますが、3つの画像が送信された場合でも、1つの画像しかアカウントに送信しません。Tweetsharp Twitter API - 複数の画像を投稿

これらは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) 

答えて

0

そのTweetSharpメソッドによって呼び出されるAPIエンドポイントは、複数の画像をサポートしていません(私はそれが今までやったとは思いませんが、現在のドキュメントはノーと言うのいずれかの方法; https://dev.twitter.com/rest/reference/post/statuses/update_with_media)。

あなたがする必要があるのは、UploadMediaエンドポイントを使用してイメージをアップロードし、それぞれのIDを取得し、IDリストでツイートを送信することです。

あなたが使用しているTweetSharpの変種がわかりません。公式の/元のものはNugetパッケージのバグを知っていますが、リポジトリのソースには修正されたものがありますが、新しいAPIサポートが欠けています。

私はこれが新しいエンドポイントをサポートしていると思うので、TweetMoaSharp(主に私が管理している)を試すことができます。 Nugetにはtweetsharp-alternativeとその周辺に浮かんでいるいくつかの他のものがあります。

+0

感謝。何時間もオンラインで検索したところ、あなたと同じ理由がありました。コードではなくAPIでした。私はTweetMoaSharpを試しましたが、最初に画像をアップロードし、IDを取得するためのヘルプ例は見つかりませんでした。私はTweetInviでそれをやっている。乾杯。 –

1

私はそれが(Nuget経由でインストール)TweetInvi https://github.com/linvi/tweetinviを使用して作業を取得するために使用されるコードは次のようになります。応答のための

(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) 
関連する問題