我正在尝试在一个.Net WPF应用程序中实现一个功能,当用户将照片发布到我的标签上时,自动显示来自twitpic的照片。
我使用的是Twitterizer2 API库,所有从搜索中获得的推文都有它们的链接作为t.co链接(我认为这是来自Twitter)。我不知道如何解析这些链接以获取图像并将它们发送给用户。
我使用的是Twitterizer2 API库,所有从搜索中获得的推文都有它们的链接作为t.co链接(我认为这是来自Twitter)。我不知道如何解析这些链接以获取图像并将它们发送给用户。
TwitterMediaEntity
类,可提供有关图像和视频的信息。我不知道Twitterizer2 API是如何工作的,但我认为您可以用两种方式解决问题:
对于第二种方法,我建议使用下面这个函数(这个解析基于我在关注的人的推文中找到的第一张图片,所以它仅适用于TwitPic图片):
private static Uri GetPicture(string twitterUri)
{
using (var webClient = new WebClient())
{
string html = webClient.DownloadString(twitterUri);
int imgIndex = html.IndexOf("<img class=\"photo\" id=\"photo-display\"");
int srcStartIndex = html.IndexOf("src", imgIndex) + 5;
int srcEndIndex = html.IndexOf("\"", srcStartIndex);
string imgSrc = html.Substring(srcStartIndex, srcEndIndex - srcStartIndex);
return new Uri(imgSrc);
}
}
正如你所能想象的那样,它的用法是:
Uri imgUri = GetPicture("http://t.co/RQu9hZn8"); // this is a real image
我使用了类似这样的代码(使用 Twitterizer nuget package)
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 + "\" />";
}
}
所有附加的媒体和音频链接将在entities\media中,如果您想获取第一个附加项的路径,假设您已将推文保存在enumerableTwitts中,则您的代码将是:
foreach (dynamic t in enumerableTwitts)
{
dynamic media = t["entities"]["media"];
string media_url = media[0]["media_url"].ToString();
}
你应该使用 try-catch,因为有些推文没有附加文件