Showing
3 changed files
with
207 additions
and
161 deletions
| ... | @@ -46,26 +46,26 @@ app.engine('html', require('ejs').renderFile); | ... | @@ -46,26 +46,26 @@ app.engine('html', require('ejs').renderFile); |
| 46 | var server=app.listen(3000,function(){ | 46 | var server=app.listen(3000,function(){ |
| 47 | console.log("Express server has started on port 3000"); | 47 | console.log("Express server has started on port 3000"); |
| 48 | 48 | ||
| 49 | - });//app listen 꿑 | 49 | + });//app listen L |
| 50 | 50 | ||
| 51 | // | 51 | // |
| 52 | /* | 52 | /* |
| 53 | -var readline=require('readline');//입력받기 위한 모듈 | 53 | +var readline=require('readline');//입력받기 위한 모듈 |
| 54 | -var r=readline.createInterface({input:process.stdin,output:process.stdout});//키보드 입출력 정의 | 54 | +var r=readline.createInterface({input:process.stdin,output:process.stdout});//키보드 입출력 정의 |
| 55 | -var rtfw1="http://www.rankedftw.com/search/?name=";//rtfw에서 기본 검색 url | 55 | +var rtfw1="http://www.rankedftw.com/search/?name=";//rtfw에서 기본 검색 url |
| 56 | -var rtfw2="http://www.rankedftw.com/player/"//rtfw 번호 기반 특정 플레이어 검색 url | 56 | +var rtfw2="http://www.rankedftw.com/player/"//rtfw 번호 기반 특정 플레이어 검색 url |
| 57 | var league='silver_2'; | 57 | var league='silver_2'; |
| 58 | var region='KR'; | 58 | var region='KR'; |
| 59 | // | 59 | // |
| 60 | -var cheerio=require('cheerio');//cheerio모듈 사용 | 60 | +var cheerio=require('cheerio');//cheerio모듈 사용 |
| 61 | -var request=require('request');//request모듈 사용 | 61 | +var request=require('request');//request모듈 사용 |
| 62 | -var fs=require('fs');//파일시스템 사용 | 62 | +var fs=require('fs');//파일시스템 사용 |
| 63 | // | 63 | // |
| 64 | //request 1 variable | 64 | //request 1 variable |
| 65 | -var username='';//username문자열 선언 | 65 | +var username='';//username문자열 선언 |
| 66 | -var userleague='';//userleague 문자열 선언 | 66 | +var userleague='';//userleague 문자열 선언 |
| 67 | -var userregion='';//userregion 문자열 선언 | 67 | +var userregion='';//userregion 문자열 선언 |
| 68 | -var usernumber='';//usernumber 문자열 선언 | 68 | +var usernumber='';//usernumber 문자열 선언 |
| 69 | // | 69 | // |
| 70 | //request 2 variable | 70 | //request 2 variable |
| 71 | 71 | ||
| ... | @@ -83,82 +83,82 @@ var usernumber='';//usernumber 문자열 선언 | ... | @@ -83,82 +83,82 @@ var usernumber='';//usernumber 문자열 선언 |
| 83 | 83 | ||
| 84 | // | 84 | // |
| 85 | //delivering variable | 85 | //delivering variable |
| 86 | -var momentum;//기세 | 86 | +var momentum;//기세 |
| 87 | -var terran_proficiency;//테란 숙련도 | 87 | +var terran_proficiency;//테란 숙련도 |
| 88 | -var zerg_proficiency;//저그 숙련도 | 88 | +var zerg_proficiency;//저그 숙련도 |
| 89 | -var protoss_proficiency;//프로토스 숙련도 | 89 | +var protoss_proficiency;//프로토스 숙련도 |
| 90 | -var primary_race;//주 종족 | 90 | +var primary_race;//주 종족 |
| 91 | -var win_rate;//시즌 전체 승률 | 91 | +var win_rate;//시즌 전체 승률 |
| 92 | 92 | ||
| 93 | -var myrace;//내 종족 | 93 | +var myrace;//내 종족 |
| 94 | -var enemyrace;//상대 종족 | 94 | +var enemyrace;//상대 종족 |
| 95 | -var recommend;//추천빌드(운영/타이밍/올인) | 95 | +var recommend;//추천빌드(운영/타이밍/올인) |
| 96 | // | 96 | // |
| 97 | 97 | ||
| 98 | -r.question("분석을 원하는 아이디를 입력하세요 : ",function(answer){//question메소드에서 callback함수 생성 | 98 | +r.question("분석을 원하는 아이디를 입력하세요 : ",function(answer){//question메소드에서 callback함수 생성 |
| 99 | - //question은 에러 제어 만들면 안된다. | 99 | + //question은 에러 제어 만들면 안된다. |
| 100 | - console.log("r.question processing");//callback함수란 이벤트가 왔을 때 실행되는 함수이다. answer에 검색을 원하는 아이디가 담겨있다. | 100 | + console.log("r.question processing");//callback함수란 이벤트가 왔을 때 실행되는 함수이다. answer에 검색을 원하는 아이디가 담겨있다. |
| 101 | - rtfw1=rtfw1+answer;//검색 url 구성 | 101 | + rtfw1=rtfw1+answer;//검색 url 구성 |
| 102 | - console.log(rtfw1);//테스트용 : 검색 url 확인 | 102 | + console.log(rtfw1);//테스트용 : 검색 url 확인 |
| 103 | // | 103 | // |
| 104 | -request(rtfw1,(error,response,body)=>{//rtfw url 불러오기 request 1 | 104 | +request(rtfw1,(error,response,body)=>{//rtfw url 불러오기 request 1 |
| 105 | - if(error){throw error};//에러처리 | 105 | + if(error){throw error};//에러처리 |
| 106 | console.log("request 1 processing"); | 106 | console.log("request 1 processing"); |
| 107 | - let $ = cheerio.load(body);//rtfw가 body이다. $로 jquery방식으로 html탐색 | 107 | + let $ = cheerio.load(body);//rtfw가 body이다. $로 jquery방식으로 html탐색 |
| 108 | - $('ul').find('a').each(function(index,elem){//ul 태그 아래 a태그를 찾는다. | 108 | + $('ul').find('a').each(function(index,elem){//ul 태그 아래 a태그를 찾는다. |
| 109 | - username=$(this).find('.name').text().trim();//name클래스를 찾아 공백빼고 텍스트화 | 109 | + username=$(this).find('.name').text().trim();//name클래스를 찾아 공백빼고 텍스트화 |
| 110 | - userleague=$(this).find('.league').text().trim();//league클래스를 찾아 공백빼고 텍스트화 | 110 | + userleague=$(this).find('.league').text().trim();//league클래스를 찾아 공백빼고 텍스트화 |
| 111 | - userregion=$(this).find('.region').text().trim();//region클래스를 찾아 공백빼고 텍스트화 | 111 | + userregion=$(this).find('.region').text().trim();//region클래스를 찾아 공백빼고 텍스트화 |
| 112 | - if((username===answer)&&(userregion===region)){//아직 리그 구현 안함-리그는 그림으로 비교 | 112 | + if((username===answer)&&(userregion===region)){//아직 리그 구현 안함-리그는 그림으로 비교 |
| 113 | - console.log(`${username}`);//테스트용 : 유저네임 출력 | 113 | + console.log(`${username}`);//테스트용 : 유저네임 출력 |
| 114 | - console.log(`${userregion}`);//테스트용 : 유저리전 출력 | 114 | + console.log(`${userregion}`);//테스트용 : 유저리전 출력 |
| 115 | - var usernumber=$(this).toString().slice(29,43);//rtfw에서 사용하는 사용자번호를 문자열로 넉넉히 자름 | 115 | + var usernumber=$(this).toString().slice(29,43);//rtfw에서 사용하는 사용자번호를 문자열로 넉넉히 자름 |
| 116 | - var localindex1=usernumber.search('/');//첫번째 슬레시 발견하는 인덱스 검출 | 116 | + var localindex1=usernumber.search('/');//첫번째 슬레시 발견하는 인덱스 검출 |
| 117 | - usernumber=usernumber.slice(localindex1+1);//앞부분 슬래시 자른다. | 117 | + usernumber=usernumber.slice(localindex1+1);//앞부분 슬래시 자른다. |
| 118 | - var localindex2=usernumber.search('/')-localindex1+1;//두번째 슬레시 발견하는 인덱스 검출 | 118 | + var localindex2=usernumber.search('/')-localindex1+1;//두번째 슬레시 발견하는 인덱스 검출 |
| 119 | - usernumber=usernumber.slice(0,localindex2);//뒷부분 슬래시 자른다. | 119 | + usernumber=usernumber.slice(0,localindex2);//뒷부분 슬래시 자른다. |
| 120 | - console.log(`${usernumber}`);//테스트용 : 유저넘버 출력 | 120 | + console.log(`${usernumber}`);//테스트용 : 유저넘버 출력 |
| 121 | - if(rtfw2.length>33){//하나라도 붙어있으면 | 121 | + if(rtfw2.length>33){//하나라도 붙어있으면 |
| 122 | - rtfw2=rtfw2;//아무것도 안한다. | 122 | + rtfw2=rtfw2;//아무것도 안한다. |
| 123 | - }else{//그렇지않고 아무것도 안붙어있으면 | 123 | + }else{//그렇지않고 아무것도 안붙어있으면 |
| 124 | - rtfw2=rtfw2+usernumber+'/';//rtfw2 url갱신 | 124 | + rtfw2=rtfw2+usernumber+'/';//rtfw2 url갱신 |
| 125 | } | 125 | } |
| 126 | - console.log(rtfw2);//테스트용 : rtfw2 출력 | 126 | + console.log(rtfw2);//테스트용 : rtfw2 출력 |
| 127 | - }//이름서버리그비교if종료 | 127 | + }//이름서버리그비교if종료 |
| 128 | - });//ul a find문 종료 | 128 | + });//ul a find문 종료 |
| 129 | 129 | ||
| 130 | var profileID=''; | 130 | var profileID=''; |
| 131 | - request(rtfw2,(error,response,body)=>{//rtfw2 url 불러오기 request 2 | 131 | + request(rtfw2,(error,response,body)=>{//rtfw2 url 불러오기 request 2 |
| 132 | - if(error){throw error};//에러처리 | 132 | + if(error){throw error};//에러처리 |
| 133 | - console.log('request2 processing');//테스트용 : request2 실행여부 출력 | 133 | + console.log('request2 processing');//테스트용 : request2 실행여부 출력 |
| 134 | - let $ = cheerio.load(body);//rtfw2가 body이다. $로 jquery방식으로 html탐색 | 134 | + let $ = cheerio.load(body);//rtfw2가 body이다. $로 jquery방식으로 html탐색 |
| 135 | - $('.content').find('.bnet-link').each(function(index,elem){//content 클래스 안의 bnet-link클래스를 포함하는 요소를 찾는다. | 135 | + $('.content').find('.bnet-link').each(function(index,elem){//content 클래스 안의 bnet-link클래스를 포함하는 요소를 찾는다. |
| 136 | - profileID=$(this).toString().slice(62,72);//얻고자 하는 profileID를 포함하여 앞뒤로 적당히 자른다. | 136 | + profileID=$(this).toString().slice(62,72);//얻고자 하는 profileID를 포함하여 앞뒤로 적당히 자른다. |
| 137 | - var localindex3=profileID.search('/');//첫번째 슬레시 발견하는 인덱스 검출 | 137 | + var localindex3=profileID.search('/');//첫번째 슬레시 발견하는 인덱스 검출 |
| 138 | - profileID=profileID.slice(localindex3+1);//앞부분 슬래시 자른다. | 138 | + profileID=profileID.slice(localindex3+1);//앞부분 슬래시 자른다. |
| 139 | - var localindex4=profileID.search('/')-localindex3;//두번째 슬레시 발견하는 인덱스 검출 | 139 | + var localindex4=profileID.search('/')-localindex3;//두번째 슬레시 발견하는 인덱스 검출 |
| 140 | - profileID=profileID.slice(0,localindex4);//뒷부분 슬래시 자른다. | 140 | + profileID=profileID.slice(0,localindex4);//뒷부분 슬래시 자른다. |
| 141 | - console.log(`${profileID}`);//테스트용 : profileID 출력 | 141 | + console.log(`${profileID}`);//테스트용 : profileID 출력 |
| 142 | - //profileID=encodeURI(encodeURIComponent(profileID));//한글처리부 | 142 | + //profileID=encodeURI(encodeURIComponent(profileID));//한글처리부 |
| 143 | - });//a bnetlink 종료 | 143 | + });//a bnetlink 종료 |
| 144 | -//console.log(`${profileID}`);//테스트용 : profileID 출력 | 144 | +//console.log(`${profileID}`);//테스트용 : profileID 출력 |
| 145 | 145 | ||
| 146 | -var match_history_1="https://kr.api.blizzard.com/sc2/legacy/profile/3/1/"//매치히스토리 url 앞부분 | 146 | +var match_history_1="https://kr.api.blizzard.com/sc2/legacy/profile/3/1/"//매치히스토리 url 앞부분 |
| 147 | -var match_history_2="/matches?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"//매치히스토리 url 뒷부분 | 147 | +var match_history_2="/matches?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"//매치히스토리 url 뒷부분 |
| 148 | -var match_history_url=match_history_1+profileID+match_history_2;//매치히스토리 url 구성 | 148 | +var match_history_url=match_history_1+profileID+match_history_2;//매치히스토리 url 구성 |
| 149 | -console.log(match_history_url);//테스트용 : 매치히스토리 url 출력 | 149 | +console.log(match_history_url);//테스트용 : 매치히스토리 url 출력 |
| 150 | 150 | ||
| 151 | request(match_history_url,(error,response,body)=>{//match history request request 3 | 151 | request(match_history_url,(error,response,body)=>{//match history request request 3 |
| 152 | - if(error){throw error};//에러처리 | 152 | + if(error){throw error};//에러처리 |
| 153 | - console.log('request3 processing');//테스트용 : request 작동여부 출력 | 153 | + console.log('request3 processing');//테스트용 : request 작동여부 출력 |
| 154 | 154 | ||
| 155 | -var obj1=JSON.parse(body);//request 결과를 JSON object로 변환 | 155 | +var obj1=JSON.parse(body);//request 결과를 JSON object로 변환 |
| 156 | -//console.log(obj.matches [0].map);//테스트용 : 하나에 접근 | 156 | +//console.log(obj.matches [0].map);//테스트용 : 하나에 접근 |
| 157 | -$(obj1.matches).each(function(index,match){//body에서 각각의 배열요소 match들과 인덱스 사용 | 157 | +$(obj1.matches).each(function(index,match){//body에서 각각의 배열요소 match들과 인덱스 사용 |
| 158 | - if(match.type=='1v1'){//경기타입이 1대1인 경우에만 관심있다. | 158 | + if(match.type=='1v1'){//경기타입이 1대1인 경우에만 관심있다. |
| 159 | - console.log(index+":::",match.decision,match.map);//인덱스와 승패, 맵 표시 | 159 | + console.log(index+":::",match.decision,match.map);//인덱스와 승패, 맵 표시 |
| 160 | -};//if 1v1 종료 | 160 | +};//if 1v1 종료 |
| 161 | -});//each function 종료 | 161 | +});//each function 종료 |
| 162 | 162 | ||
| 163 | var ladder_1="https://kr.api.blizzard.com/sc2/legacy/profile/3/1/" | 163 | var ladder_1="https://kr.api.blizzard.com/sc2/legacy/profile/3/1/" |
| 164 | var ladder_2="/ladders?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"; | 164 | var ladder_2="/ladders?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"; |
| ... | @@ -167,8 +167,8 @@ console.log(ladder_url); | ... | @@ -167,8 +167,8 @@ console.log(ladder_url); |
| 167 | request(ladder_url,(error,response,body)=>{//ladder request request 4 | 167 | request(ladder_url,(error,response,body)=>{//ladder request request 4 |
| 168 | if(error){throw error}; | 168 | if(error){throw error}; |
| 169 | console.log('request4 processing'); | 169 | console.log('request4 processing'); |
| 170 | - var obj2=JSON.parse(body);//request 결과를 JSON object로 변환 | 170 | + var obj2=JSON.parse(body);//request 결과를 JSON object로 변환 |
| 171 | -// console.log(obj2.currentSeason [2].ladder[0].wins);//테스트용 : 하나에 접근 | 171 | +// console.log(obj2.currentSeason [2].ladder[0].wins);//테스트용 : 하나에 접근 |
| 172 | var wins=obj2.currentSeason[2].ladder[0].wins; | 172 | var wins=obj2.currentSeason[2].ladder[0].wins; |
| 173 | var losses=obj2.currentSeason[2].ladder[0].losses; | 173 | var losses=obj2.currentSeason[2].ladder[0].losses; |
| 174 | win_rate=wins/(wins+losses); | 174 | win_rate=wins/(wins+losses); |
| ... | @@ -183,8 +183,8 @@ console.log(profile_url); | ... | @@ -183,8 +183,8 @@ console.log(profile_url); |
| 183 | request(profile_url,(error,response,body)=>{//profile request request 5 | 183 | request(profile_url,(error,response,body)=>{//profile request request 5 |
| 184 | if(error){throw error}; | 184 | if(error){throw error}; |
| 185 | console.log('request5 processing'); | 185 | console.log('request5 processing'); |
| 186 | - var obj3=JSON.parse(body);//request 결과를 JSON object로 변환 | 186 | + var obj3=JSON.parse(body);//request 결과를 JSON object로 변환 |
| 187 | - //console.log(obj2.currentSeason [1].ladder[0].wins);//테스트용 : 하나에 접근 | 187 | + //console.log(obj2.currentSeason [1].ladder[0].wins);//테스트용 : 하나에 접근 |
| 188 | primary_race=obj3.career.primaryRace; | 188 | primary_race=obj3.career.primaryRace; |
| 189 | //console.log(primary_race); | 189 | //console.log(primary_race); |
| 190 | var terran_level=obj3.swarmLevels.terran.level; | 190 | var terran_level=obj3.swarmLevels.terran.level; |
| ... | @@ -196,70 +196,70 @@ primary_race=obj3.career.primaryRace; | ... | @@ -196,70 +196,70 @@ primary_race=obj3.career.primaryRace; |
| 196 | //console.log(protoss_level); | 196 | //console.log(protoss_level); |
| 197 | 197 | ||
| 198 | //build recommend algorithm | 198 | //build recommend algorithm |
| 199 | -var matchresults=[];//매치결과 담을 배열 선언 | 199 | +var matchresults=[];//매치결과 담을 배열 선언 |
| 200 | -var momentum_win=0;//최근 10경기 중 승수 초기화 | 200 | +var momentum_win=0;//최근 10경기 중 승수 초기화 |
| 201 | -for (var i=0;i<25;i++){//매치히스토리는 최대 25개 | 201 | +for (var i=0;i<25;i++){//매치히스토리는 최대 25개 |
| 202 | - if(obj1.matches[i].type=='1v1'){//1v1에만 관심있다. | 202 | + if(obj1.matches[i].type=='1v1'){//1v1에만 관심있다. |
| 203 | - matchresults.push(obj1.matches[i].decision);//배열 끝에 결과 삽입 | 203 | + matchresults.push(obj1.matches[i].decision);//배열 끝에 결과 삽입 |
| 204 | - if((matchresults.length<11)&&(obj1.matches[i].decision=='Win')){//최근 10경기에서 승리한 경우 | 204 | + if((matchresults.length<11)&&(obj1.matches[i].decision=='Win')){//최근 10경기에서 승리한 경우 |
| 205 | - momentum_win=momentum_win+1;//그 승수를 카운트한다. | 205 | + momentum_win=momentum_win+1;//그 승수를 카운트한다. |
| 206 | - }//if length11 종료 | 206 | + }//if length11 종료 |
| 207 | -}//obj1 1v1 종료 | 207 | +}//obj1 1v1 종료 |
| 208 | -}//for i 25 종료 | 208 | +}//for i 25 종료 |
| 209 | -//console.log(matchresults);//테스트용 : matchresults 출력 | 209 | +//console.log(matchresults);//테스트용 : matchresults 출력 |
| 210 | -//console.log(momentum_win);//테스트용 : momentum_win 출력 | 210 | +//console.log(momentum_win);//테스트용 : momentum_win 출력 |
| 211 | -if(momentum_win>=7){//7승 이상이면 상승세 | 211 | +if(momentum_win>=7){//7승 이상이면 상승세 |
| 212 | -momentum='상승세'; | 212 | +momentum='상승세'; |
| 213 | } | 213 | } |
| 214 | -if((momentum_win<7)&&(momentum_win>=4)){//4승이상 7승미만이면 정체 | 214 | +if((momentum_win<7)&&(momentum_win>=4)){//4승이상 7승미만이면 정체 |
| 215 | -momentum='정체중'; | 215 | +momentum='정체중'; |
| 216 | } | 216 | } |
| 217 | -if(momentum_win<4){//4승 미만이면 하락세 | 217 | +if(momentum_win<4){//4승 미만이면 하락세 |
| 218 | -momentum='하락세'; | 218 | +momentum='하락세'; |
| 219 | } | 219 | } |
| 220 | -//console.log(momentum);//테스트용 : 기세 출력 | 220 | +//console.log(momentum);//테스트용 : 기세 출력 |
| 221 | 221 | ||
| 222 | -if(terran_level<50){//테란 레벨 50 안되면 | 222 | +if(terran_level<50){//테란 레벨 50 안되면 |
| 223 | - terran_proficiency='비숙련자'//테란 비숙련자 | 223 | + terran_proficiency='비숙련자'//테란 비숙련자 |
| 224 | } else{ | 224 | } else{ |
| 225 | - terran_proficiency='숙련자' | 225 | + terran_proficiency='숙련자' |
| 226 | } | 226 | } |
| 227 | -if(zerg_level<50){//저그 레벨 50 안되면 | 227 | +if(zerg_level<50){//저그 레벨 50 안되면 |
| 228 | - zerg_proficiency='비숙련자'//저그 비숙련자 | 228 | + zerg_proficiency='비숙련자'//저그 비숙련자 |
| 229 | } else{ | 229 | } else{ |
| 230 | - zerg_proficiency='숙련자' | 230 | + zerg_proficiency='숙련자' |
| 231 | } | 231 | } |
| 232 | -if(protoss_level<50){//프로토스 레벨 50 안되면 | 232 | +if(protoss_level<50){//프로토스 레벨 50 안되면 |
| 233 | - protoss_proficiency='비숙련자'//프로토스 비숙련자 | 233 | + protoss_proficiency='비숙련자'//프로토스 비숙련자 |
| 234 | } else{ | 234 | } else{ |
| 235 | - protoss_proficiency='숙련자' | 235 | + protoss_proficiency='숙련자' |
| 236 | } | 236 | } |
| 237 | // | 237 | // |
| 238 | //system message part | 238 | //system message part |
| 239 | -console.log("최근 10경기 분석 결과 현재 상대는 '"+momentum+"'입니다."); | 239 | +console.log("최근 10경기 분석 결과 현재 상대는 '"+momentum+"'입니다."); |
| 240 | -console.log("상대는 테란 '"+terran_proficiency+"'입니다."); | 240 | +console.log("상대는 테란 '"+terran_proficiency+"'입니다."); |
| 241 | -console.log("상대는 저그 '"+zerg_proficiency+"'입니다."); | 241 | +console.log("상대는 저그 '"+zerg_proficiency+"'입니다."); |
| 242 | -console.log("상대는 프로토스 '"+protoss_proficiency+"'입니다."); | 242 | +console.log("상대는 프로토스 '"+protoss_proficiency+"'입니다."); |
| 243 | -console.log("상대의 주 종족은 '"+primary_race+"'입니다."); | 243 | +console.log("상대의 주 종족은 '"+primary_race+"'입니다."); |
| 244 | -console.log("상대의 이번 시즌 전체 승률은 '"+win_rate+"'입니다."); | 244 | +console.log("상대의 이번 시즌 전체 승률은 '"+win_rate+"'입니다."); |
| 245 | // | 245 | // |
| 246 | //build recommend command | 246 | //build recommend command |
| 247 | 247 | ||
| 248 | // | 248 | // |
| 249 | 249 | ||
| 250 | console.log('request5 done'); | 250 | console.log('request5 done'); |
| 251 | -});//request5종료 | 251 | +});//request5종료 |
| 252 | console.log('request4 done'); | 252 | console.log('request4 done'); |
| 253 | -});//request4종료 | 253 | +});//request4종료 |
| 254 | console.log('request3 done'); | 254 | console.log('request3 done'); |
| 255 | -});//request3종료 | 255 | +});//request3종료 |
| 256 | console.log('request2 done'); | 256 | console.log('request2 done'); |
| 257 | -});//request2종료 | 257 | +});//request2종료 |
| 258 | console.log('request1 done'); | 258 | console.log('request1 done'); |
| 259 | -});//request1 종료 | 259 | +});//request1 종료 |
| 260 | 260 | ||
| 261 | console.log('r.question done'); | 261 | console.log('r.question done'); |
| 262 | //console.log(terran_level); | 262 | //console.log(terran_level); |
| 263 | -r.close()//반드시 close를 해줘야 한다.사용이 다 끝난 후에. | 263 | +r.close()//반드시 close를 해줘야 한다.사용이 다 끝난 후에. |
| 264 | -});//r.question 끝 | 264 | +});//r.question 끝 |
| 265 | */ | 265 | */ | ... | ... |
| 1 | { | 1 | { |
| 2 | - "requires": true, | 2 | + "name": "starcraft2", |
| 3 | + "version": "1.0.0", | ||
| 3 | "lockfileVersion": 1, | 4 | "lockfileVersion": 1, |
| 5 | + "requires": true, | ||
| 4 | "dependencies": { | 6 | "dependencies": { |
| 5 | "@types/node": { | 7 | "@types/node": { |
| 6 | "version": "10.12.14", | 8 | "version": "10.12.14", |
| ... | @@ -117,6 +119,16 @@ | ... | @@ -117,6 +119,16 @@ |
| 117 | "qs": "6.5.2", | 119 | "qs": "6.5.2", |
| 118 | "raw-body": "2.3.3", | 120 | "raw-body": "2.3.3", |
| 119 | "type-is": "~1.6.16" | 121 | "type-is": "~1.6.16" |
| 122 | + }, | ||
| 123 | + "dependencies": { | ||
| 124 | + "iconv-lite": { | ||
| 125 | + "version": "0.4.23", | ||
| 126 | + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", | ||
| 127 | + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", | ||
| 128 | + "requires": { | ||
| 129 | + "safer-buffer": ">= 2.1.2 < 3" | ||
| 130 | + } | ||
| 131 | + } | ||
| 120 | } | 132 | } |
| 121 | }, | 133 | }, |
| 122 | "boolbase": { | 134 | "boolbase": { |
| ... | @@ -150,6 +162,16 @@ | ... | @@ -150,6 +162,16 @@ |
| 150 | "htmlparser2": "^3.9.1", | 162 | "htmlparser2": "^3.9.1", |
| 151 | "lodash": "^4.15.0", | 163 | "lodash": "^4.15.0", |
| 152 | "parse5": "^3.0.1" | 164 | "parse5": "^3.0.1" |
| 165 | + }, | ||
| 166 | + "dependencies": { | ||
| 167 | + "parse5": { | ||
| 168 | + "version": "3.0.3", | ||
| 169 | + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", | ||
| 170 | + "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", | ||
| 171 | + "requires": { | ||
| 172 | + "@types/node": "*" | ||
| 173 | + } | ||
| 174 | + } | ||
| 153 | } | 175 | } |
| 154 | }, | 176 | }, |
| 155 | "combined-stream": { | 177 | "combined-stream": { |
| ... | @@ -538,9 +560,9 @@ | ... | @@ -538,9 +560,9 @@ |
| 538 | } | 560 | } |
| 539 | }, | 561 | }, |
| 540 | "iconv-lite": { | 562 | "iconv-lite": { |
| 541 | - "version": "0.4.23", | 563 | + "version": "0.4.24", |
| 542 | - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", | 564 | + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", |
| 543 | - "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", | 565 | + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", |
| 544 | "requires": { | 566 | "requires": { |
| 545 | "safer-buffer": ">= 2.1.2 < 3" | 567 | "safer-buffer": ">= 2.1.2 < 3" |
| 546 | } | 568 | } |
| ... | @@ -606,13 +628,6 @@ | ... | @@ -606,13 +628,6 @@ |
| 606 | "whatwg-url": "^7.0.0", | 628 | "whatwg-url": "^7.0.0", |
| 607 | "ws": "^6.1.0", | 629 | "ws": "^6.1.0", |
| 608 | "xml-name-validator": "^3.0.0" | 630 | "xml-name-validator": "^3.0.0" |
| 609 | - }, | ||
| 610 | - "dependencies": { | ||
| 611 | - "parse5": { | ||
| 612 | - "version": "5.1.0", | ||
| 613 | - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", | ||
| 614 | - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" | ||
| 615 | - } | ||
| 616 | } | 631 | } |
| 617 | }, | 632 | }, |
| 618 | "json-schema": { | 633 | "json-schema": { |
| ... | @@ -743,12 +758,9 @@ | ... | @@ -743,12 +758,9 @@ |
| 743 | } | 758 | } |
| 744 | }, | 759 | }, |
| 745 | "parse5": { | 760 | "parse5": { |
| 746 | - "version": "3.0.3", | 761 | + "version": "5.1.0", |
| 747 | - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", | 762 | + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", |
| 748 | - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", | 763 | + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" |
| 749 | - "requires": { | ||
| 750 | - "@types/node": "*" | ||
| 751 | - } | ||
| 752 | }, | 764 | }, |
| 753 | "parseurl": { | 765 | "parseurl": { |
| 754 | "version": "1.3.2", | 766 | "version": "1.3.2", |
| ... | @@ -813,6 +825,16 @@ | ... | @@ -813,6 +825,16 @@ |
| 813 | "http-errors": "1.6.3", | 825 | "http-errors": "1.6.3", |
| 814 | "iconv-lite": "0.4.23", | 826 | "iconv-lite": "0.4.23", |
| 815 | "unpipe": "1.0.0" | 827 | "unpipe": "1.0.0" |
| 828 | + }, | ||
| 829 | + "dependencies": { | ||
| 830 | + "iconv-lite": { | ||
| 831 | + "version": "0.4.23", | ||
| 832 | + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", | ||
| 833 | + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", | ||
| 834 | + "requires": { | ||
| 835 | + "safer-buffer": ">= 2.1.2 < 3" | ||
| 836 | + } | ||
| 837 | + } | ||
| 816 | } | 838 | } |
| 817 | }, | 839 | }, |
| 818 | "readable-stream": { | 840 | "readable-stream": { |
| ... | @@ -850,6 +872,22 @@ | ... | @@ -850,6 +872,22 @@ |
| 850 | "tough-cookie": "~2.4.3", | 872 | "tough-cookie": "~2.4.3", |
| 851 | "tunnel-agent": "^0.6.0", | 873 | "tunnel-agent": "^0.6.0", |
| 852 | "uuid": "^3.3.2" | 874 | "uuid": "^3.3.2" |
| 875 | + }, | ||
| 876 | + "dependencies": { | ||
| 877 | + "punycode": { | ||
| 878 | + "version": "1.4.1", | ||
| 879 | + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", | ||
| 880 | + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" | ||
| 881 | + }, | ||
| 882 | + "tough-cookie": { | ||
| 883 | + "version": "2.4.3", | ||
| 884 | + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", | ||
| 885 | + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", | ||
| 886 | + "requires": { | ||
| 887 | + "psl": "^1.1.24", | ||
| 888 | + "punycode": "^1.4.1" | ||
| 889 | + } | ||
| 890 | + } | ||
| 853 | } | 891 | } |
| 854 | }, | 892 | }, |
| 855 | "request-promise-core": { | 893 | "request-promise-core": { |
| ... | @@ -927,7 +965,8 @@ | ... | @@ -927,7 +965,8 @@ |
| 927 | "source-map": { | 965 | "source-map": { |
| 928 | "version": "0.6.1", | 966 | "version": "0.6.1", |
| 929 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", | 967 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", |
| 930 | - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" | 968 | + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", |
| 969 | + "optional": true | ||
| 931 | }, | 970 | }, |
| 932 | "sshpk": { | 971 | "sshpk": { |
| 933 | "version": "1.15.2", | 972 | "version": "1.15.2", |
| ... | @@ -969,19 +1008,12 @@ | ... | @@ -969,19 +1008,12 @@ |
| 969 | "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" | 1008 | "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" |
| 970 | }, | 1009 | }, |
| 971 | "tough-cookie": { | 1010 | "tough-cookie": { |
| 972 | - "version": "2.4.3", | 1011 | + "version": "2.5.0", |
| 973 | - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", | 1012 | + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", |
| 974 | - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", | 1013 | + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", |
| 975 | "requires": { | 1014 | "requires": { |
| 976 | - "psl": "^1.1.24", | 1015 | + "psl": "^1.1.28", |
| 977 | - "punycode": "^1.4.1" | 1016 | + "punycode": "^2.1.1" |
| 978 | - }, | ||
| 979 | - "dependencies": { | ||
| 980 | - "punycode": { | ||
| 981 | - "version": "1.4.1", | ||
| 982 | - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", | ||
| 983 | - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" | ||
| 984 | - } | ||
| 985 | } | 1017 | } |
| 986 | }, | 1018 | }, |
| 987 | "tr46": { | 1019 | "tr46": { |
| ... | @@ -1094,16 +1126,6 @@ | ... | @@ -1094,16 +1126,6 @@ |
| 1094 | "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", | 1126 | "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", |
| 1095 | "requires": { | 1127 | "requires": { |
| 1096 | "iconv-lite": "0.4.24" | 1128 | "iconv-lite": "0.4.24" |
| 1097 | - }, | ||
| 1098 | - "dependencies": { | ||
| 1099 | - "iconv-lite": { | ||
| 1100 | - "version": "0.4.24", | ||
| 1101 | - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", | ||
| 1102 | - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", | ||
| 1103 | - "requires": { | ||
| 1104 | - "safer-buffer": ">= 2.1.2 < 3" | ||
| 1105 | - } | ||
| 1106 | - } | ||
| 1107 | } | 1129 | } |
| 1108 | }, | 1130 | }, |
| 1109 | "whatwg-mimetype": { | 1131 | "whatwg-mimetype": { | ... | ... |
package.json
0 → 100644
| 1 | +{ | ||
| 2 | + "name": "starcraft2", | ||
| 3 | + "version": "1.0.0", | ||
| 4 | + "description": "< 스타크래프트2 빌드 추천 프로젝트 >\r 설명 : 대전 상대의 실력 정도에 따라 빌드를 추천해줌", | ||
| 5 | + "main": "app.js", | ||
| 6 | + "scripts": { | ||
| 7 | + "test": "echo \"Error: no test specified\" && exit 1" | ||
| 8 | + }, | ||
| 9 | + "repository": { | ||
| 10 | + "type": "git", | ||
| 11 | + "url": "http://khuhub.khu.ac.kr/2013104051/OSS_StarCraft2_Project.git" | ||
| 12 | + }, | ||
| 13 | + "author": "", | ||
| 14 | + "license": "ISC", | ||
| 15 | + "dependencies": { | ||
| 16 | + "body-parser": "^1.18.3", | ||
| 17 | + "cheerio": "^1.0.0-rc.2", | ||
| 18 | + "ejs": "^2.6.1", | ||
| 19 | + "express": "^4.16.4", | ||
| 20 | + "jquery": "^3.3.1", | ||
| 21 | + "jsdom": "^13.0.0", | ||
| 22 | + "request": "^2.88.0" | ||
| 23 | + } | ||
| 24 | +} |
-
Please register or login to post a comment