Toggle navigation
Toggle navigation
This project
Loading...
Sign in
2019-2-OpenSourceSW
/
StarCraft2 Build Recommendation
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
신기성
2018-12-09 19:34:34 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
962c002c33817fa533e5cd8d09b6c4e23afe33c8
962c002c
1 parent
2d8b9a05
FindUser.js 주석 정리, 추가구현사항과 알고리즘 계획 포함한 process3.txt 추가
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
60 additions
and
75 deletions
FindUser.js
process3.txt
FindUser.js
View file @
962c002
var
readline
=
require
(
'readline'
);
//입력받기 위한 모듈
var
r
=
readline
.
createInterface
({
input
:
process
.
stdin
,
output
:
process
.
stdout
});
//키보드 입출력 정의
var
rtfw1
=
"http://www.rankedftw.com/search/?name="
;
//rtfw에서 기본 검색 url
var
rtfw2
=
"http://www.rankedftw.com/player/"
var
rtfw2
=
"http://www.rankedftw.com/player/"
//rtfw 번호 기반 특정 플레이어 검색 url
var
league
=
'silver_2'
;
var
region
=
'KR'
;
//
...
...
@@ -9,51 +9,36 @@ var cheerio=require('cheerio');//cheerio모듈 사용
var
request
=
require
(
'request'
);
//request모듈 사용
var
fs
=
require
(
'fs'
);
//파일시스템 사용
//
//var client=require('cheerio-httpcli');
//var param={};
//var urltype=require('url');
//request 1 variable
var
username
=
''
;
//username문자열 선언
var
userleague
=
''
;
//userleague 문자열 선언
var
userregion
=
''
;
//userregion 문자열 선언
var
usernumber
=
''
;
//usernumber 문자열 선언
//
//request 2 variable
//
//request 3-1 variable
//
//request 3-2 variable
//
//request 3-3 variable
//
//system message
//
//class MatchHistory{
// @SerializedName("matches")
// public List<Matches> matches;
//class Matches{
// @SerializedName("map")
// public String map;
// @SerializedName("type")
// public String type;
// @SerializedName("decision")
// public String decision;
//}
//}
r
.
question
(
"분석을 원하는 아이디를 입력하세요 : "
,
function
(
answer
){
//question메소드에서 callback함수 생성
console
.
log
(
"입력완료! 분석중..."
);
//callback함수란 이벤트가 왔을 때 실행되는 함수이다. answer에 검색을 원하는 아이디가 담겨있다.
rtfw1
=
rtfw1
+
answer
;
//검색 url 구성
console
.
log
(
rtfw1
);
//테스트용 : 검색 url 확인
//
//client.fetch(rtfw,param,function(err,$,res){
//if(err){console.log(err);return;}
// var src=$(this).attr('src');
// src=urltype.resolve(url,src);
//var filename=urltype.parse(src).pathname;
// fname=savedir+'/'+fname.replace(/[^a-zA-Z0-9\.]+/g, '_');
// request(src).pipe(fs.createWriteStream(fname));
//});
//
// var parsing_html=fs.readFile(rtfw,'utf8',(err,data)=>{//html reading fs 사용
//err? console.log(err) : console.log('okay cheerio!');//에러나면 에러출력, 이외엔 okay 메시지
var
username
=
''
;
//username문자열 선언
var
userleague
=
''
;
//userleague 문자열 선언
var
userregion
=
''
;
//userregion 문자열 선언
var
usernumber
=
''
;
//usernumber 문자열 선언
request
(
rtfw1
,(
error
,
response
,
body
)
=>
{
//rtfw url 불러오기
//
request
(
rtfw1
,(
error
,
response
,
body
)
=>
{
//rtfw url 불러오기 request 1
if
(
error
){
throw
error
};
//에러처리
let
$
=
cheerio
.
load
(
body
);
//rtfw가 body이다. $로 jquery방식으로 html탐색
// try{//try_catch구문
//let username='';//username문자열 선언
//let userleague='';//userleague 문자열 선언
//let userregion='';//userregion 문자열 선언
//let usernumber='';//usernumber 문자열 선언
$
(
'ul'
).
find
(
'a'
).
each
(
function
(
index
,
elem
){
//ul 태그 아래 a태그를 찾는다.
username
=
$
(
this
).
find
(
'.name'
).
text
().
trim
();
//name클래스를 찾아 공백빼고 텍스트화
userleague
=
$
(
this
).
find
(
'.league'
).
text
().
trim
();
//league클래스를 찾아 공백빼고 텍스트화
...
...
@@ -77,7 +62,7 @@ request(rtfw1,(error,response,body)=>{//rtfw url 불러오기
});
//ul a find문 종료
var
profileID
=
''
;
request
(
rtfw2
,(
error
,
response
,
body
)
=>
{
//rtfw2 url 불러오기
request
(
rtfw2
,(
error
,
response
,
body
)
=>
{
//rtfw2 url 불러오기
request 2
if
(
error
){
throw
error
};
//에러처리
console
.
log
(
'request2 processing'
);
//테스트용 : request2 실행여부 출력
let
$
=
cheerio
.
load
(
body
);
//rtfw2가 body이다. $로 jquery방식으로 html탐색
...
...
@@ -91,25 +76,13 @@ request(rtfw1,(error,response,body)=>{//rtfw url 불러오기
});
//a bnetlink 종료
//console.log(`${profileID}`);//테스트용 : profileID 출력
var
match_history_1
=
"https://kr.api.blizzard.com/sc2/legacy/profile/3/1/"
var
match_history_2
=
"/matches?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"
var
match_history_url
=
match_history_1
+
profileID
+
match_history_2
;
console
.
log
(
match_history_url
);
request
(
match_history_url
,(
error
,
response
,
body
)
=>
{
if
(
error
){
throw
error
};
console
.
log
(
'request3-1 processing'
);
//console.log(body); //테스트용: response body 출력
//JsonParser jsonParser=new JsonParser();
//JsonObject jsonObject=(JsonObject) jsonParser.parse(json);
//JsonObject matches=(JsonObject) jsonObject.get("matches");
//System.out.print(matches.get("map"));
//MatchHistory matchhistory=new Gson().fromJson(json,MatchHistory.class);
//for(MatchHistory.Matches matches : matchhistory.matches){
// System.out.println(matches.map);
// System.out.println(matches.type);
// System.out.println(matches.decision);
//}
var
match_history_1
=
"https://kr.api.blizzard.com/sc2/legacy/profile/3/1/"
//매치히스토리 url 앞부분
var
match_history_2
=
"/matches?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"
//매치히스토리 url 뒷부분
var
match_history_url
=
match_history_1
+
profileID
+
match_history_2
;
//매치히스토리 url 구성
console
.
log
(
match_history_url
);
//테스트용 : 매치히스토리 url 출력
request
(
match_history_url
,(
error
,
response
,
body
)
=>
{
//match history request request 3-1
if
(
error
){
throw
error
};
//에러처리
console
.
log
(
'request3-1 processing'
);
//테스트용 : request 작동여부 출력
var
obj1
=
JSON
.
parse
(
body
);
//request 결과를 JSON object로 변환
//console.log(obj.matches [0].map);//테스트용 : 하나에 접근
...
...
@@ -118,15 +91,13 @@ $(obj1.matches).each(function(index,match){//body에서 각각의 배열요소 m
console
.
log
(
index
+
":::"
,
match
.
decision
,
match
.
map
);
//인덱스와 승패, 맵 표시
};
//if 1v1 종료
});
//each function 종료
//var jsonstring=JSON.stringify(body);//json형식의 string으로 변환
//console.log(jsonstring);//테스트용 : jsontext에 바디가 적절히 들어가는지 검사
});
//request3-1종료
var
ladder_1
=
"https://kr.api.blizzard.com/sc2/legacy/profile/3/1/"
var
ladder_2
=
"/ladders?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"
;
var
ladder_url
=
ladder_1
+
profileID
+
ladder_2
;
console
.
log
(
ladder_url
);
request
(
ladder_url
,(
error
,
response
,
body
)
=>
{
request
(
ladder_url
,(
error
,
response
,
body
)
=>
{
//ladder request request 3-2
if
(
error
){
throw
error
};
console
.
log
(
'request3-2 processing'
);
var
obj2
=
JSON
.
parse
(
body
);
//request 결과를 JSON object로 변환
...
...
@@ -134,16 +105,16 @@ request(ladder_url,(error,response,body)=>{
var
wins
=
obj2
.
currentSeason
[
1
].
ladder
[
0
].
wins
;
var
losses
=
obj2
.
currentSeason
[
1
].
ladder
[
0
].
losses
;
var
winrate
=
wins
/
(
wins
+
losses
);
console
.
log
(
wins
);
console
.
log
(
losses
);
console
.
log
(
winrate
);
//
console.log(wins);
//
console.log(losses);
//
console.log(winrate);
});
//request3-2종료
var
profile_1
=
"https://kr.api.blizzard.com/sc2/legacy/profile/3/1/"
;
var
profile_2
=
"?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"
;
var
profile_url
=
profile_1
+
profileID
+
profile_2
;
console
.
log
(
profile_url
);
request
(
profile_url
,(
error
,
response
,
body
)
=>
{
request
(
profile_url
,(
error
,
response
,
body
)
=>
{
//profile request request 3-3
if
(
error
){
throw
error
};
console
.
log
(
'request3-3 processing'
);
var
obj3
=
JSON
.
parse
(
body
);
//request 결과를 JSON object로 변환
...
...
@@ -153,19 +124,14 @@ request(profile_url,(error,response,body)=>{
var
terran_level
=
obj3
.
swarmLevels
.
terran
.
level
;
var
zerg_level
=
obj3
.
swarmLevels
.
zerg
.
level
;
var
protoss_level
=
obj3
.
swarmLevels
.
protoss
.
level
;
console
.
log
(
terran_level
);
console
.
log
(
zerg_level
);
console
.
log
(
protoss_level
);
//
console.log(terran_level);
//
console.log(zerg_level);
//
console.log(protoss_level);
});
//request3-3종료
});
//request2종료
// }catch(error){
// console.error(error);
// }//try_catch구문 종료
});
//request1 종료
// });//parsing_html 끝
//
});
//request1 종료
r
.
close
()
//반드시 close를 해줘야 한다.사용이 다 끝난 후에.
});
//r.question 끝
...
...
process3.txt
0 → 100644
View file @
962c002
<추가 구현 사항>
-rtfw 다음페이지 검색
-rtfw 한글검색 utf8
-리그/region/realm 선택
<정보>
상대 기세 : 최근 래더 10경기 결과로 추정
//맵별 승률 : 최근 래더 25경기 결과로 승률 50퍼센트가 넘는 맵 추정
종족별 숙련도 : 종족레벨 50 미만일경우 비숙련자
주 종족 :
이번시즌 전체 승률 :
<빌드추천 기준>
하락세/비숙련자-운영
상승세/숙련자-올인
비등/이외-타이밍
<프로젝트 설명>
편법 아니고 빠른시간에 제공가능하다는 점 부각
Please
register
or
login
to post a comment