글 작성자: 써니루루

 

iTunes 현재 선택한 노래의 가사 검색 프로그램 개발

 

이번 내용에서는 iTunes에서 선택한 노래 제목을 검색해오는 프로그램을 만들어 볼겁니다.

 

 

 

1. iTunes 참조 추가

 

 

Visual Studio Window Form 프로젝트를 생성해서

 

프로젝트에 참조를 추가합니다.

 

 

추가할 참조는 iTunes를 제어할거니깐..

 

iTunes 설치된 폴더의 iTunes.exe 파일을 참조로 추가해주셔도 되고,

 

COM에 노출되어 있는 ' iTunes 1.13 Type Library ' 를 찾아서 참조에 추가하셔도 됩니다.

 

 

CoClass로 제어가능하도록 노출되어 있어서 플러그인이나

 

이 게시글에 적힌대로 제어가 가능해지는 것이죠.

 

http://dot-totally.co.uk/software/itunescon/javadoc-0.2/com/dt/iTunesController/iTunesEventsInterface.html

 

 

 

2. 가사 웹 서비스 웹 참조 추가

 

 

 

프로젝트에 두번째 참조해야 할 내용은

 

가사를 검색하기 위한 웹 서비스를 참조하는 일입니다.

 

 

국내 웹 서비스는 못 찾았고,

 

Loop 문으로 다양한 가사 서비스로 호출을 던지고,

 

조합하는 구조로 변경하면 더 완벽해지지 않을까 싶네요.

 

이하 URL 주소를 복사해서 웹 참조로 추가해주시면 됩니다.

 

웹 참조 URL : http://lyrics.wikia.com/server.php?wsdl

 

웹 서비스의 API 정보를 보시려면 아래 링크를 확인하세요.

http://samuelhaddad.com/2009/03/22/c-net-and-lyricwiki-to-lookup-lyrics/

 

 

3. C# 코드

 

 

내용은 길어 보이진만 상당히 간단한 코드입니다.

 

우선 윈폼에 RichTextbox를 가져다 두고 rtxtLyrics 으로 명명했고요.

 

프로그램이 실행될 때 iTunes 객체를 CoClass로 받아오고,

 

iTunes가 실행되지 않았으면 실행시켜 주겠죠??

 

그리고 iTunes에서 선택한 음악이 있으면,

 

노래 제목과 가수를 웹 서비스에 넘겨서 가사 정보를 받아옵니다.

 

 

가장 좋은건 직접 코드를 작성해보시는게 제일 좋을겁니다.

 

필요하신 분에게 도움이 되었으면 하네요 ^^

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;
    using System.Text;
    using System.Windows.Forms;
 
    using iTunesLib;
 
 
    public partial class RuruLyrix : Form
    {
        private iTunesApp iTunesApp = null;
 
        public RuruLyrix()
        {
            this.InitializeComponent();
 
            this.iTunesApp = new iTunesAppClass();
            this.iTunesApp.BrowserWindow.Visible = true;
            this.iTunesApp.BrowserWindow.Minimized = false;
        }
 
        private void RuruLyrix_Load(object sender, EventArgs e)
        {
            if (this.iTunesApp.CurrentTrack != null && string.IsNullOrEmpty(this.iTunesApp.CurrentTrack.Artist) == false)
            {
                using (com.wikia.lyrics.LyricWiki service = new com.wikia.lyrics.LyricWiki())
                {
                    com.wikia.lyrics.LyricsResult result = new com.wikia.lyrics.LyricsResult();
                    string artist = this.iTunesApp.CurrentTrack.Artist;
                    string song = this.iTunesApp.CurrentTrack.Name;
 
                    if (service.checkSongExists(artist, song))
                    {
                        result = service.getSong(artist, song);
                        Encoding iso8859 = Encoding.GetEncoding("ISO-8859-1");
                        rtxtLyrics.Text = Encoding.UTF8.GetString(iso8859.GetBytes(result.lyrics));
                    }
                    else
                    {
                        rtxtLyrics.Text = "Lyrics not found in database";
                    }
                } 
            }
        }
    }
 
cs