ユーザーがハッシュタグに投稿したときに twitpic から写真を自動的に表示する機能を .Net WPF アプリケーションに実装しようとしています。
私は Twitterizer2 API ライブラリを使用しています。検索からのすべてのツイートには、t.co リンクとしてリンクがあります (これは Twitter からのものだと思います)。これらのリンクを解析して画像を取得し、ユーザーに送信する方法がわかりません。
ユーザーがハッシュタグに投稿したときに twitpic から写真を自動的に表示する機能を .Net WPF アプリケーションに実装しようとしています。
私は Twitterizer2 API ライブラリを使用しています。検索からのすべてのツイートには、t.co リンクとしてリンクがあります (これは Twitter からのものだと思います)。これらのリンクを解析して画像を取得し、ユーザーに送信する方法がわかりません。
Twitter から返されるメディア エンティティ データを利用できます。
ここにしばらく前に投稿したサンプルと説明を見ることができます: http://www.twitterizer.net/528/finding-urls-hashtags-and-mentions-using-entities/
サンプルには含まれていませんが、TwitterMediaEntity
画像とビデオに関する情報を提供する新しいクラスがあります。
Twitterizer2 API の仕組みはわかりませんが、次の 2 つの方法で問題を解決できると思います。
2 番目のアプローチでは、以下の関数のようなものを提案します (この解析は、フォローしている人のツイートで見つけた最初の画像に基づいているため、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パッケージを使用)
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 + "\" />";
}
}