[중간완성품]
[소스]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Browser;
using System.Diagnostics;
using System.Xml;
using System.Xml.Linq;
namespace Mantomangag
{
public partial class Page : UserControl
{
public readonly string APP_ID = “2704f87b1fdfa783b429adf96d026015”;
public readonly string[] people = new string[] {“people”, “singer”, “foreignsinger”,”talent”, “actor”, “foreignactor”, “entertainer”
, “broadcaster”, “comedian”,”sportsstar”, “soccer”, “foreignsoccer”};
public readonly string[] value = new string[] {“movie”, “schedulemovie”,”drama”, “broadcast”, “game”,”perform”, “book” };
public readonly string RANK = “ranktheme”;
public int i = 0;
public int j = 0;
static Random rand = new Random();
public Page()
{
InitializeComponent();
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
text.Text = “”;
for (i = 0; i < 3; i++)
{
Load_rank(i);
}
}
private void Load_rank(int i)
{
if (i == 0 || i == 1)
{
string rankUrlTemplate = “http://openapi.naver.com/search?key={0}&query={1}&target={2}”;
string rankUrl = string.Format(rankUrlTemplate, APP_ID, people[rand.Next(12)], RANK);
WebClient wc = new WebClient();
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
wc.DownloadStringAsync(new Uri(rankUrl, UriKind.Absolute));
}
if (i == 2)
{
string rankUrlTemplate = “http://openapi.naver.com/search?key={0}&query={1}&target={2}”;
string rankUrl = string.Format(rankUrlTemplate, APP_ID, value[rand.Next(7)], RANK);
WebClient wc = new WebClient();
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
wc.DownloadStringAsync(new Uri(rankUrl, UriKind.Absolute));
}
}
private void XmlToRank(string xml)
{
int randomNumber = rand.Next(1, 11);
string entityName = “R” + randomNumber.ToString();
XDocument xDoc = XDocument.Parse(xml);
var query = from result in xDoc.Descendants(“result”)
select new
{
data = result.Element(“item”).Element(entityName).Element(“K”).Value
};
foreach (var item in query)
{
DisplayGag(item.data);
}
}
void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Cancelled == true)
return;
if (e.Error != null)
{
Debug.WriteLine(e.Error.Message);
return;
}
XmlToRank(e.Result);
}
public void DisplayGag(string gag)
{
text.Text = text.Text + gag;
if (j == 0) {
text.Text += “는 “;
}
if (j == 1)
{
if (rand.Next(1, 3) == 1)
{
text.Text += “를 “;
}
else
{
text.Text += “과 “;
}
}
if (j == 2)
{
text.Text += “했다.”;
}
j++;
if (j == 3)
{
Ganji.Begin();
}
}
private void Ganji_Completed(object sender, EventArgs e)
{
j = 0;
text.Text = “”;
text.Foreground = new SolidColorBrush(Color.FromArgb(255, (byte)rand.Next(50,255), (byte)rand.Next(50,255), 255));
for (i = 0; i < 3; i++)
{
Load_rank(i);
}
}
private void text_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
text.Foreground = new SolidColorBrush(Color.FromArgb(255, 255, (byte)rand.Next(50, 255), (byte)rand.Next(50, 255)));
}
}
}
이번 Windows Live 매시업 캠프에서 만든 소스입니다.
간단하게 네이버의 실시간 검색어를 가수명 등의 인물과 영화, 공연 등의 두 가지 분류로 나누어 문장화 시켜
보여주는 파일입니다. 문장화를 완벽하게 하지 못한 것은 아쉽지만, 조그만 아이디어로 재미있는 것을 만들어 볼
수 있어서 좋았습니다. 물론, Windows Live OpenAPI를 사용한 것이 아니라서 상품을 티셔츠만 받아서 아쉽기도 했지만요.
나중에 현재 “했다” 라고만 나오는 것 등을 “보다, 사랑하다” 등으로 재미있게 만들어서 더 가다듬고 싶네요. 게다가 검색어를 누르면 바로 검색이 되고 좀더 트렌드에 다가갈 수 있도록 만들면 더 재미있을 것 같습니다.
+ 길버트님 감사합니다 :), 저번에 만든거에서 바뀐 부분을 찾아보세요~ ㅎㅎ…
답글 남기기