Showing
2 changed files
with
60 additions
and
75 deletions
1 | var readline=require('readline');//입력받기 위한 모듈 | 1 | var readline=require('readline');//입력받기 위한 모듈 |
2 | var r=readline.createInterface({input:process.stdin,output:process.stdout});//키보드 입출력 정의 | 2 | var r=readline.createInterface({input:process.stdin,output:process.stdout});//키보드 입출력 정의 |
3 | var rtfw1="http://www.rankedftw.com/search/?name=";//rtfw에서 기본 검색 url | 3 | var rtfw1="http://www.rankedftw.com/search/?name=";//rtfw에서 기본 검색 url |
4 | -var rtfw2="http://www.rankedftw.com/player/" | 4 | +var rtfw2="http://www.rankedftw.com/player/"//rtfw 번호 기반 특정 플레이어 검색 url |
5 | var league='silver_2'; | 5 | var league='silver_2'; |
6 | var region='KR'; | 6 | var region='KR'; |
7 | // | 7 | // |
... | @@ -9,51 +9,36 @@ var cheerio=require('cheerio');//cheerio모듈 사용 | ... | @@ -9,51 +9,36 @@ var cheerio=require('cheerio');//cheerio모듈 사용 |
9 | var request=require('request');//request모듈 사용 | 9 | var request=require('request');//request모듈 사용 |
10 | var fs=require('fs');//파일시스템 사용 | 10 | var fs=require('fs');//파일시스템 사용 |
11 | // | 11 | // |
12 | -//var client=require('cheerio-httpcli'); | 12 | +//request 1 variable |
13 | -//var param={}; | 13 | +var username='';//username문자열 선언 |
14 | -//var urltype=require('url'); | 14 | +var userleague='';//userleague 문자열 선언 |
15 | +var userregion='';//userregion 문자열 선언 | ||
16 | +var usernumber='';//usernumber 문자열 선언 | ||
17 | +// | ||
18 | +//request 2 variable | ||
19 | + | ||
20 | +// | ||
21 | +//request 3-1 variable | ||
22 | + | ||
23 | +// | ||
24 | +//request 3-2 variable | ||
25 | + | ||
26 | +// | ||
27 | +//request 3-3 variable | ||
28 | + | ||
29 | +// | ||
30 | +//system message | ||
31 | + | ||
15 | // | 32 | // |
16 | -//class MatchHistory{ | ||
17 | -// @SerializedName("matches") | ||
18 | -// public List<Matches> matches; | ||
19 | -//class Matches{ | ||
20 | -// @SerializedName("map") | ||
21 | -// public String map; | ||
22 | -// @SerializedName("type") | ||
23 | -// public String type; | ||
24 | -// @SerializedName("decision") | ||
25 | -// public String decision; | ||
26 | -//} | ||
27 | -//} | ||
28 | 33 | ||
29 | r.question("분석을 원하는 아이디를 입력하세요 : ",function(answer){//question메소드에서 callback함수 생성 | 34 | r.question("분석을 원하는 아이디를 입력하세요 : ",function(answer){//question메소드에서 callback함수 생성 |
30 | console.log("입력완료! 분석중...");//callback함수란 이벤트가 왔을 때 실행되는 함수이다. answer에 검색을 원하는 아이디가 담겨있다. | 35 | console.log("입력완료! 분석중...");//callback함수란 이벤트가 왔을 때 실행되는 함수이다. answer에 검색을 원하는 아이디가 담겨있다. |
31 | rtfw1=rtfw1+answer;//검색 url 구성 | 36 | rtfw1=rtfw1+answer;//검색 url 구성 |
32 | console.log(rtfw1);//테스트용 : 검색 url 확인 | 37 | console.log(rtfw1);//테스트용 : 검색 url 확인 |
33 | - // | 38 | +// |
34 | - //client.fetch(rtfw,param,function(err,$,res){ | 39 | +request(rtfw1,(error,response,body)=>{//rtfw url 불러오기 request 1 |
35 | - //if(err){console.log(err);return;} | ||
36 | - // var src=$(this).attr('src'); | ||
37 | - // src=urltype.resolve(url,src); | ||
38 | - //var filename=urltype.parse(src).pathname; | ||
39 | - // fname=savedir+'/'+fname.replace(/[^a-zA-Z0-9\.]+/g, '_'); | ||
40 | - // request(src).pipe(fs.createWriteStream(fname)); | ||
41 | - //}); | ||
42 | - // | ||
43 | -// var parsing_html=fs.readFile(rtfw,'utf8',(err,data)=>{//html reading fs 사용 | ||
44 | -//err? console.log(err) : console.log('okay cheerio!');//에러나면 에러출력, 이외엔 okay 메시지 | ||
45 | -var username='';//username문자열 선언 | ||
46 | -var userleague='';//userleague 문자열 선언 | ||
47 | -var userregion='';//userregion 문자열 선언 | ||
48 | -var usernumber='';//usernumber 문자열 선언 | ||
49 | -request(rtfw1,(error,response,body)=>{//rtfw url 불러오기 | ||
50 | if(error){throw error};//에러처리 | 40 | if(error){throw error};//에러처리 |
51 | let $ = cheerio.load(body);//rtfw가 body이다. $로 jquery방식으로 html탐색 | 41 | let $ = cheerio.load(body);//rtfw가 body이다. $로 jquery방식으로 html탐색 |
52 | -// try{//try_catch구문 | ||
53 | - //let username='';//username문자열 선언 | ||
54 | - //let userleague='';//userleague 문자열 선언 | ||
55 | - //let userregion='';//userregion 문자열 선언 | ||
56 | - //let usernumber='';//usernumber 문자열 선언 | ||
57 | $('ul').find('a').each(function(index,elem){//ul 태그 아래 a태그를 찾는다. | 42 | $('ul').find('a').each(function(index,elem){//ul 태그 아래 a태그를 찾는다. |
58 | username=$(this).find('.name').text().trim();//name클래스를 찾아 공백빼고 텍스트화 | 43 | username=$(this).find('.name').text().trim();//name클래스를 찾아 공백빼고 텍스트화 |
59 | userleague=$(this).find('.league').text().trim();//league클래스를 찾아 공백빼고 텍스트화 | 44 | userleague=$(this).find('.league').text().trim();//league클래스를 찾아 공백빼고 텍스트화 |
... | @@ -77,7 +62,7 @@ request(rtfw1,(error,response,body)=>{//rtfw url 불러오기 | ... | @@ -77,7 +62,7 @@ request(rtfw1,(error,response,body)=>{//rtfw url 불러오기 |
77 | });//ul a find문 종료 | 62 | });//ul a find문 종료 |
78 | 63 | ||
79 | var profileID=''; | 64 | var profileID=''; |
80 | - request(rtfw2,(error,response,body)=>{//rtfw2 url 불러오기 | 65 | + request(rtfw2,(error,response,body)=>{//rtfw2 url 불러오기 request 2 |
81 | if(error){throw error};//에러처리 | 66 | if(error){throw error};//에러처리 |
82 | console.log('request2 processing');//테스트용 : request2 실행여부 출력 | 67 | console.log('request2 processing');//테스트용 : request2 실행여부 출력 |
83 | let $ = cheerio.load(body);//rtfw2가 body이다. $로 jquery방식으로 html탐색 | 68 | let $ = cheerio.load(body);//rtfw2가 body이다. $로 jquery방식으로 html탐색 |
... | @@ -91,25 +76,13 @@ request(rtfw1,(error,response,body)=>{//rtfw url 불러오기 | ... | @@ -91,25 +76,13 @@ request(rtfw1,(error,response,body)=>{//rtfw url 불러오기 |
91 | });//a bnetlink 종료 | 76 | });//a bnetlink 종료 |
92 | //console.log(`${profileID}`);//테스트용 : profileID 출력 | 77 | //console.log(`${profileID}`);//테스트용 : profileID 출력 |
93 | 78 | ||
94 | -var match_history_1="https://kr.api.blizzard.com/sc2/legacy/profile/3/1/" | 79 | +var match_history_1="https://kr.api.blizzard.com/sc2/legacy/profile/3/1/"//매치히스토리 url 앞부분 |
95 | -var match_history_2="/matches?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi" | 80 | +var match_history_2="/matches?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"//매치히스토리 url 뒷부분 |
96 | -var match_history_url=match_history_1+profileID+match_history_2; | 81 | +var match_history_url=match_history_1+profileID+match_history_2;//매치히스토리 url 구성 |
97 | -console.log(match_history_url); | 82 | +console.log(match_history_url);//테스트용 : 매치히스토리 url 출력 |
98 | -request(match_history_url,(error,response,body)=>{ | 83 | +request(match_history_url,(error,response,body)=>{//match history request request 3-1 |
99 | - if(error){throw error}; | 84 | + if(error){throw error};//에러처리 |
100 | - console.log('request3-1 processing'); | 85 | + console.log('request3-1 processing');//테스트용 : request 작동여부 출력 |
101 | - //console.log(body); //테스트용: response body 출력 | ||
102 | - //JsonParser jsonParser=new JsonParser(); | ||
103 | - //JsonObject jsonObject=(JsonObject) jsonParser.parse(json); | ||
104 | - //JsonObject matches=(JsonObject) jsonObject.get("matches"); | ||
105 | - //System.out.print(matches.get("map")); | ||
106 | - | ||
107 | -//MatchHistory matchhistory=new Gson().fromJson(json,MatchHistory.class); | ||
108 | -//for(MatchHistory.Matches matches : matchhistory.matches){ | ||
109 | -// System.out.println(matches.map); | ||
110 | -// System.out.println(matches.type); | ||
111 | -// System.out.println(matches.decision); | ||
112 | -//} | ||
113 | 86 | ||
114 | var obj1=JSON.parse(body);//request 결과를 JSON object로 변환 | 87 | var obj1=JSON.parse(body);//request 결과를 JSON object로 변환 |
115 | //console.log(obj.matches [0].map);//테스트용 : 하나에 접근 | 88 | //console.log(obj.matches [0].map);//테스트용 : 하나에 접근 |
... | @@ -118,15 +91,13 @@ $(obj1.matches).each(function(index,match){//body에서 각각의 배열요소 m | ... | @@ -118,15 +91,13 @@ $(obj1.matches).each(function(index,match){//body에서 각각의 배열요소 m |
118 | console.log(index+":::",match.decision,match.map);//인덱스와 승패, 맵 표시 | 91 | console.log(index+":::",match.decision,match.map);//인덱스와 승패, 맵 표시 |
119 | };//if 1v1 종료 | 92 | };//if 1v1 종료 |
120 | });//each function 종료 | 93 | });//each function 종료 |
121 | -//var jsonstring=JSON.stringify(body);//json형식의 string으로 변환 | ||
122 | -//console.log(jsonstring);//테스트용 : jsontext에 바디가 적절히 들어가는지 검사 | ||
123 | - | ||
124 | });//request3-1종료 | 94 | });//request3-1종료 |
95 | + | ||
125 | var ladder_1="https://kr.api.blizzard.com/sc2/legacy/profile/3/1/" | 96 | var ladder_1="https://kr.api.blizzard.com/sc2/legacy/profile/3/1/" |
126 | var ladder_2="/ladders?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"; | 97 | var ladder_2="/ladders?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"; |
127 | var ladder_url=ladder_1+profileID+ladder_2; | 98 | var ladder_url=ladder_1+profileID+ladder_2; |
128 | console.log(ladder_url); | 99 | console.log(ladder_url); |
129 | -request(ladder_url,(error,response,body)=>{ | 100 | +request(ladder_url,(error,response,body)=>{//ladder request request 3-2 |
130 | if(error){throw error}; | 101 | if(error){throw error}; |
131 | console.log('request3-2 processing'); | 102 | console.log('request3-2 processing'); |
132 | var obj2=JSON.parse(body);//request 결과를 JSON object로 변환 | 103 | var obj2=JSON.parse(body);//request 결과를 JSON object로 변환 |
... | @@ -134,16 +105,16 @@ request(ladder_url,(error,response,body)=>{ | ... | @@ -134,16 +105,16 @@ request(ladder_url,(error,response,body)=>{ |
134 | var wins=obj2.currentSeason[1].ladder[0].wins; | 105 | var wins=obj2.currentSeason[1].ladder[0].wins; |
135 | var losses=obj2.currentSeason[1].ladder[0].losses; | 106 | var losses=obj2.currentSeason[1].ladder[0].losses; |
136 | var winrate=wins/(wins+losses); | 107 | var winrate=wins/(wins+losses); |
137 | - console.log(wins); | 108 | + //console.log(wins); |
138 | - console.log(losses); | 109 | + //console.log(losses); |
139 | - console.log(winrate); | 110 | + //console.log(winrate); |
140 | });//request3-2종료 | 111 | });//request3-2종료 |
141 | 112 | ||
142 | var profile_1="https://kr.api.blizzard.com/sc2/legacy/profile/3/1/"; | 113 | var profile_1="https://kr.api.blizzard.com/sc2/legacy/profile/3/1/"; |
143 | var profile_2="?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"; | 114 | var profile_2="?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"; |
144 | var profile_url=profile_1+profileID+profile_2; | 115 | var profile_url=profile_1+profileID+profile_2; |
145 | console.log(profile_url); | 116 | console.log(profile_url); |
146 | -request(profile_url,(error,response,body)=>{ | 117 | +request(profile_url,(error,response,body)=>{//profile request request 3-3 |
147 | if(error){throw error}; | 118 | if(error){throw error}; |
148 | console.log('request3-3 processing'); | 119 | console.log('request3-3 processing'); |
149 | var obj3=JSON.parse(body);//request 결과를 JSON object로 변환 | 120 | var obj3=JSON.parse(body);//request 결과를 JSON object로 변환 |
... | @@ -153,19 +124,14 @@ request(profile_url,(error,response,body)=>{ | ... | @@ -153,19 +124,14 @@ request(profile_url,(error,response,body)=>{ |
153 | var terran_level=obj3.swarmLevels.terran.level; | 124 | var terran_level=obj3.swarmLevels.terran.level; |
154 | var zerg_level=obj3.swarmLevels.zerg.level; | 125 | var zerg_level=obj3.swarmLevels.zerg.level; |
155 | var protoss_level=obj3.swarmLevels.protoss.level; | 126 | var protoss_level=obj3.swarmLevels.protoss.level; |
156 | - console.log(terran_level); | 127 | + //console.log(terran_level); |
157 | - console.log(zerg_level); | 128 | + //console.log(zerg_level); |
158 | - console.log(protoss_level); | 129 | + //console.log(protoss_level); |
159 | });//request3-3종료 | 130 | });//request3-3종료 |
160 | 131 | ||
161 | });//request2종료 | 132 | });//request2종료 |
162 | -// }catch(error){ | ||
163 | -// console.error(error); | ||
164 | -// }//try_catch구문 종료 | ||
165 | -});//request1 종료 | ||
166 | 133 | ||
167 | -// });//parsing_html 끝 | 134 | +});//request1 종료 |
168 | - // | ||
169 | 135 | ||
170 | r.close()//반드시 close를 해줘야 한다.사용이 다 끝난 후에. | 136 | r.close()//반드시 close를 해줘야 한다.사용이 다 끝난 후에. |
171 | });//r.question 끝 | 137 | });//r.question 끝 | ... | ... |
process3.txt
0 → 100644
1 | +<추가 구현 사항> | ||
2 | +-rtfw 다음페이지 검색 | ||
3 | +-rtfw 한글검색 utf8 | ||
4 | +-리그/region/realm 선택 | ||
5 | + | ||
6 | +<정보> | ||
7 | +상대 기세 : 최근 래더 10경기 결과로 추정 | ||
8 | +//맵별 승률 : 최근 래더 25경기 결과로 승률 50퍼센트가 넘는 맵 추정 | ||
9 | +종족별 숙련도 : 종족레벨 50 미만일경우 비숙련자 | ||
10 | +주 종족 : | ||
11 | +이번시즌 전체 승률 : | ||
12 | + | ||
13 | +<빌드추천 기준> | ||
14 | +하락세/비숙련자-운영 | ||
15 | +상승세/숙련자-올인 | ||
16 | +비등/이외-타이밍 | ||
17 | + | ||
18 | +<프로젝트 설명> | ||
19 | +편법 아니고 빠른시간에 제공가능하다는 점 부각 |
-
Please register or login to post a comment