C# TweetInvi不检索tweet';s图片

C# TweetInvi不检索tweet';s图片,c#,twitter,tweetinvi,C#,Twitter,Tweetinvi,我使用以下代码阅读推文,它工作正常,但媒体对象始终为空,即使推文有图片,但如果推文有视频而不是图片,它工作正常 var stream = userClient.Streams.CreateFilteredStream(); stream.TweetMode = Tweetinvi.TweetMode.Extended; var twitterUser = await userClient.Users.GetUserAsync

我使用以下代码阅读推文,它工作正常,但媒体对象始终为空,即使推文有图片,但如果推文有视频而不是图片,它工作正常

            var stream = userClient.Streams.CreateFilteredStream();
            stream.TweetMode = Tweetinvi.TweetMode.Extended;
            var twitterUser = await userClient.Users.GetUserAsync(username);
            stream.AddFollow(twitterUser);
            stream.MatchingTweetReceived += (sender, eventReceived) =>
            {
                
                if(!eventReceived.Tweet.Retweeted)
                    Console.WriteLine(eventReceived.Tweet);
            };

            await stream.StartMatchingAllConditionsAsync();
我调试了每条推文,并验证每条推文在twitter网站上都有图片


ITweet的
媒体
成员是一个
列表
。此列表可能为空。使用下面的代码,我能够通过他们的
媒体
成员接收包含对象的推文:

控制台输出:

您可以检查
IMediaEntity.MediaType
成员,查看它是什么类型的媒体。我还没有找到可以设置为什么值的文档,但到目前为止,我看到了:

  • photo
  • 视频
  • gif动画

请注意,
IMediaEntity
对象的
URL
成员是指向tweet本身的链接。如果您要查看图片本身,
MediaURL
MediaURLHttps
将只包含指向图片的链接(对于视频和动画GIF,这些成员是指向缩略图图片的链接)。

您的媒体对象是什么?0个项目?我可以让它正常工作,唯一的区别是我使用了
stream.AddTrack(string)
。@TimothyG。当tweet有图片时,它是空的,如果tweet有视频,它工作正常。我完全使用了你的代码,但我使用了AddTrack的“Khaberni”而不是“SomeTrack”。我得到了tweet,但没有他们的图片@卡西尼我不知所措。例如,你在
IMediaEntity.MedialURL
中没有任何链接?没有,我没有任何链接。@Cassini你能发布你的空媒体对象和tweet对象的截图吗?我在问题中添加了截图。
static async Task Main(string[] args)
{
    Task task = Task.Run(() => BeginTweetStream());
    await task;
}

public static async Task BeginTweetStream()
{
    string userName = "SomeName";
    int i = 0;
    TwitterClient userClient = new TwitterClient("string", "string", "string", "string"); //where the strings are credentials
    var stream = userClient.Streams.CreateFilteredStream();
    stream.TweetMode = Tweetinvi.TweetMode.Extended;
    var twitterUser = await userClient.Users.GetUserAsync(userName);
    stream.AddTrack("SomeTrack");
    stream.MatchingTweetReceived += (sender, eventReceived) =>
    {
        if (eventReceived.Tweet.Media != null && eventReceived.Tweet.Media.Any() && !eventReceived.Tweet.Retweeted)
        {
            Console.WriteLine($"Tweet with {eventReceived.Tweet.Media.Count()} media found!");

            foreach (Tweetinvi.Models.Entities.IMediaEntity media in eventReceived.Tweet.Media)
            {
                Console.WriteLine($"Media type: {media.MediaType} Link: {media.URL}");
            }

            ++i;
        }

        if (i == 99) //stop after 100 tweets with media
        {
            stream.Stop();
            Console.WriteLine("Complete! Press any key to exit.");
            Console.Read(); 
        }
    };

    await stream.StartMatchingAllConditionsAsync();
}