twitpic の画像をダウンロードしてファイルで保存するところまで
// text に保存された文字列から twitpic の URL を抽出。 // その後 URL から画像の識別番号を取り出し return する関数 string ExtensionTwitpic(string text) { Regex r = new Regex("http://twitpic.com/(?<abc>.*)", RegexOptions.Compiled); if (!r.IsMatch(text)) { return ""; } Match m = r.Match(text); return m.Groups["abc"].Value; } private void button1_Click(object sender, EventArgs e) { WebClient wc = new WebClient(); wc.Encoding = Encoding.UTF8; // textBox1 に記入されたユーザのtweetを取り出す API を作成し、呼び出す。 string apiurl; apiurl = "http://api.twitter.com/1/statuses/user_timeline/" + textBox1.Text + ".xml"; Stream st = wc.OpenRead(apiurl); // strXML に wc からの読み込んだ文字列を格納 StreamReader sr = new StreamReader(st); //, Encoding.GetEncoding("shift_jis")); string strXML = sr.ReadToEnd(); sr.Close(); st.Close(); tbBox.Text = ""; // tbBox.Text = strXML; // strXML に読み込まれた XML の解析 XmlDocument xml = new XmlDocument(); xml.LoadXml(strXML); XmlNodeList nodes = xml.SelectNodes("//statuses/status"); int lineNo = 1; foreach (XmlNode node in nodes) { XmlNode xmlText = node.SelectSingleNode("text"); XmlNode xmlName = node.SelectSingleNode("user/screen_name"); // 取り出した twitpic の識別番号を格納 string TwitpicABC = ExtensionTwitpic(xmlText.InnerText); if (TwitpicABC != "") { // ユーザ名と tweet を表示 tbBox.Text += lineNo.ToString() + ":(" + xmlName.InnerText + ") " + xmlText.InnerText + "\r\n"; // Twitpic の画像を DL する URL を作成 (full は裏技らしい) string TwitpicURL = "http://twitpic.com/show/full/" + TwitpicABC; // Twitpic の画像を DL する URL を表示 tbBox.Text += TwitpicURL + "\r\n"; // ダウンロードしてファイルで保存 WebClient c2 = new WebClient(); c2.DownloadFile(TwitpicURL, TwitpicABC + ".jpg"); } lineNo++; } }
参考にしたところ
正規表現で、URLを取り出すために
http://blogs.wankuma.com/ch3cooh/archive/2008/07/27/150558.aspx
Twitpic の画像の URL 表現について
http://soudan1.biglobe.ne.jp/qa5821394.html
URL の画像をダウンロードして、ファイルに保存
http://www.woodensoldier.info/computer/csharptips/153.htm
URL の画像をプログラム内の bitmap に格納