[실버라이트] 실시간 검색어를 이용한 간단한 Mantoman 개그

[중간완성품]
Get Microsoft Silverlight

[소스]



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를 사용한 것이 아니라서 상품을 티셔츠만 받아서 아쉽기도 했지만요.

 나중에 현재 “했다” 라고만 나오는 것 등을 “보다, 사랑하다” 등으로 재미있게 만들어서 더 가다듬고 싶네요. 게다가 검색어를 누르면 바로 검색이 되고 좀더 트렌드에 다가갈 수 있도록 만들면 더 재미있을 것 같습니다.

+ 길버트님 감사합니다 :), 저번에 만든거에서 바뀐 부분을 찾아보세요~ ㅎㅎ…


게시됨

카테고리

작성자

댓글

“[실버라이트] 실시간 검색어를 이용한 간단한 Mantoman 개그”에 대한 9개의 응답

  1. 요건 실버라이트로 만든 실시간 검색어 API를 이용한 맨투맨 개그..거창한 건 아니고… ㅎㅎ

  2. 길버트 아바타

    노래가 지금은 한번 밖에 안나오니 Media_Ended 이벤트에서

    media.Stop();
    media.Play();

    한번 해줍시다!

    1. 정상범(cube) 아바타
      정상범(cube)

      해보겠습니다!

  3. 건태 아바타

    은/는 이/가 만 구분해주면 아주 좋을 것같은데요^^

    1. 정상범(cube) 아바타
      정상범(cube)

      음… 노력해보겠습니다.
      좋을 것 같다니 감사합니다 ㅠㅠ

  4. 길버트 아바타

    저번과 바뀐 부분은…

    글자 색상이 수시로 바뀌고, 클릭해도 바뀐다!
    이쁘군요. ^^

    1. 정상범(cube) 아바타
      정상범(cube)

      헤헤~ 맞아요!!
      역시 🙂

  5. 이근화 아바타

    휴즈플로우의 이근화 입니다(지난번 식사할때 앞에앉았었던….)

    길버트님이 알려주셔서 보러 왔는데…

    요거 저도 모르게 계속 보게 되네요 ㅎㅎ 재밌어요!!! ㅎㅎ

    1. 정상범(cube) 아바타
      정상범(cube)

      우와~ 방문해주셔서 감사합니다.
      방금 들어왔다가 댓글이 많아서 놀랐어요 +_+
      감사합니다~@_@

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다