Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C#从twitter上获取照片?_C#_Twitter_Twitterizer - Fatal编程技术网

用C#从twitter上获取照片?

用C#从twitter上获取照片?,c#,twitter,twitterizer,C#,Twitter,Twitterizer,我试图在.NETWPF应用程序中实现一个功能,当用户将twitpic的照片发布到我的标签上时,自动显示这些照片 我使用的是Twitterizer2API库,我搜索的所有推文都有t.co链接(我想这是来自Twitter的)。我不知道如何解析这些链接以获取图像并将其发送给用户。我不知道Twitterizer2 API是如何工作的,但我认为您可以通过两种方式解决问题: 在官方的Twitter API中搜索一些可以帮助你解析这些链接的东西(看看) 自己下载该URL的内容并对其进行解析 对于第二种方法,我

我试图在.NETWPF应用程序中实现一个功能,当用户将twitpic的照片发布到我的标签上时,自动显示这些照片


我使用的是Twitterizer2API库,我搜索的所有推文都有t.co链接(我想这是来自Twitter的)。我不知道如何解析这些链接以获取图像并将其发送给用户。

我不知道Twitterizer2 API是如何工作的,但我认为您可以通过两种方式解决问题:

  • 在官方的Twitter API中搜索一些可以帮助你解析这些链接的东西(看看)
  • 自己下载该URL的内容并对其进行解析 对于第二种方法,我建议使用如下函数(此解析基于我在跟踪的people推文中找到的第一张图片,因此它仅适用于TwitPic图像):


    您可以依赖Twitter返回的媒体实体数据

    您可以看到我不久前在这里发布的示例和解释:


    示例中没有包含它,但是有一个更新的TwitterMediaEntity类,它提供了有关图像和视频的信息。

    我使用了类似的东西(与)

    li.Text=tweet.Text;
    foreach(tweet.Entities中的Twitterizer.Entities.TwitterEntity te)
    {
    if(te.GetType()==(typeof(Twitterizer.Entities.TwitterMediaEntity)))
    {
    var b=(Twitterizer.Entities.TwitterMediaEntity)te;
    li.Text+=“”;
    }
    }
    
    任何推文中的所有附加媒体和音频URL都将位于entities\media中 如果您想获得第一个附加项目的路径,那么媒体将是附加在帖子上的项目数组,假设您的tweets保存在enumerableTwitts中 你可能会

    foreach (dynamic t in enumerableTwitts)
                {
     dynamic media = t["entities"]["media"];
                            string media_url = media[0]["media_url"].ToString();
    }
    

    您应该使用try-catch,因为某些推文没有附加文件

    这将起作用(对于twitpic),但请注意,您将对每个图像进行网络呼叫,这将需要时间和带宽来进行排序。如果不进行网络呼叫,您如何下载图像?我刚刚提出了一种从编码链接中提取它们的方法。他如何处理图像显示取决于他:)如果你计算下载图像数据的网络调用,那么你的代码将为每个图像执行2个网络调用。您所做的不是提取图像数据,而是提取图像的url,客户端必须再次调用该url才能下载该url。这就是我说的,你多打了一个网络电话。我发布了一个指向示例代码的链接,该代码将直接从twitter获取url。数据已经包含在结果中。感谢MediaEntity的更新,我没有意识到这已经是Twitterizer的一部分了!是否有完整源代码示例的最终解决方案?
    Uri imgUri = GetPicture("http://t.co/RQu9hZn8"); // this is a real image
    
    li.Text = tweet.text;
    foreach(Twitterizer.Entities.TwitterEntity te in tweet.Entities)
    {
        if(te.GetType() == (typeof(Twitterizer.Entities.TwitterMediaEntity)))
        {
            var b = (Twitterizer.Entities.TwitterMediaEntity) te;
            li.Text += "<img src=\"" + b.MediaUrl + "\" />";
        }
    }
    
    foreach (dynamic t in enumerableTwitts)
                {
     dynamic media = t["entities"]["media"];
                            string media_url = media[0]["media_url"].ToString();
    }