진재영

melon chart crawling file updated

...@@ -15,29 +15,92 @@ const url_newage = "https://www.melon.com/genre/song_list.htm?gnrCode=GN1800#par ...@@ -15,29 +15,92 @@ const url_newage = "https://www.melon.com/genre/song_list.htm?gnrCode=GN1800#par
15 const url_classic = "" 15 const url_classic = ""
16 const url_jazz = "https://www.melon.com/genre/jazz_list.htm?gnrCode=GN1700#params%5BgnrCode%5D=GN1700&params%5BdtlGnrCode%5D=GN1701&params%5BorderBy%5D=POP&params%5BsteadyYn%5D=&po=pageObj&startIndex=1" 16 const url_jazz = "https://www.melon.com/genre/jazz_list.htm?gnrCode=GN1700#params%5BgnrCode%5D=GN1700&params%5BdtlGnrCode%5D=GN1701&params%5BorderBy%5D=POP&params%5BsteadyYn%5D=&po=pageObj&startIndex=1"
17 17
18 - 18 +const getHTML = async(genre) => {
19 -const getHTML = async() => { 19 + try{
20 - try{ 20 + return await axios.get(genre)
21 - return await axios.get(url_hiphop_us)
22 }catch(err) { 21 }catch(err) {
23 console.log(err); 22 console.log(err);
24 } 23 }
25 } 24 }
25 +// parsing() 함수는 한가지 파라미터를 가집니다. 파라미터에 각 장르이름 변수를 넣으면 각 장르별 5곡이 리턴됩니다.
26 +// 장르별 변수명은 다음과 같습니다.
27 +// url_ballad
28 +// url_hiphop_kr
29 +// url_hiphop_us
30 +// url_dance
31 +// url_rock_kr
32 +// url_rock_us
33 +// url_pop
34 +// url_RNB_kr
35 +// url_RNB_us
36 +// url_indie
37 +// url_newage
38 +// url_jazz
39 +// parsing_exception()은 한가지 파라미터를 가집니다. 그 인자는 'snow' 또는 'classic'으로 해야 합니다.
40 +// 'classic' 이나 'snow'를 인자로 주면 각각 배열에 저장되어있는 노래 중 랜덤으로 5개가 출력됩니다.
41 +// classic
42 +// snow
26 43
27 -const parsing = async() => { 44 +const parsing = async(genre) => {
28 - const html = await getHTML(); 45 + const html = await getHTML(genre);
29 const $ = cheerio.load(html.data); 46 const $ = cheerio.load(html.data);
30 const $TitleList = $("div.ellipsis.rank01"); 47 const $TitleList = $("div.ellipsis.rank01");
48 +
31 49
32 let Titles = []; 50 let Titles = [];
33 - $TitleList.each((inx, node) => { 51 + $TitleList.each((index, node) => {
34 const title = $(node).find("a").text(); 52 const title = $(node).find("a").text();
35 - console.log(title); 53 + Titles[Titles.length] = title;
36 }); 54 });
37 55
56 + let Titles5 = [];
57 + for(i = 0; i <= 4; i++){
58 + Titles5.push(Titles[i])
59 + };
60 +
61 + console.log(Titles5);
62 + return(Titles5);
38 } 63 }
39 64
40 -parsing(); 65 +const parsing_exception = (genre) => { // 'snow' 또는 'classic' 에만 작동합니다.
66 + snow = ['눈사람', '십이월 이십오일의 고백', '첫 눈', '첫눈처럼 너에게 가겠다', '겨울사랑', '눈꽃', '사월의 눈', '코끝에 겨울', '눈이 내린다', '새겨울', '공드리',
67 +'눈이 오네', '이번 겨울', 'I Miss You', '나의 옛날 이야기', '너의 모든 순간', '내 생에 아름다운', '너를', '눈의꽃', '야생화'];
68 +
69 + classic = ['G선상의 아리아', '트로이메라이', '무언가', '백조', '세레나데', '울게하소서', '카발레리아 루스티카나', '사랑의 인사', '보칼리제', '뱃노래',
70 +'안단테 칸타빌레', '월광의 소나타', '미뉴엣 G장조', '엘리제를 위하여', '로망스'];
71 +
72 + function shuffleArray(array) {
73 + array.sort(() => Math.random() - 0.5);
74 + }
75 + shuffleArray(snow);
76 + shuffleArray(classic);
77 +
78 + let snow5 = [];
79 + let classic5 = [];
80 + for(i = 0; i <= 4; i++){
81 + snow5.push(snow[i])
82 + };
83 +
84 + for(i = 0; i <= 4; i++){
85 + classic5.push(classic[i])
86 + };
87 +
88 + if(genre == 'snow'){
89 + console.log(snow5); // console.log() 는 값 시험용으로 우선 넣어두었습니다.
90 + return(snow5);
91 + }else if(genre == 'classic'){
92 + console.log(snow5); //
93 + return(classic5);
94 + }else{
95 + console.log("input value error(The input value is snow or classic)");
96 + }
97 +}
98 +
99 +parsing(url_ballad);
100 +parsing_exception('snow');
101 +
102 +
103 +
41 104
42 105
43 106
......