신기성

API requesting done

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 rtfw="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 league='silver_2'; 5 var league='silver_2';
5 var region='KR'; 6 var region='KR';
6 // 7 //
...@@ -14,8 +15,8 @@ var fs=require('fs');//파일시스템 사용 ...@@ -14,8 +15,8 @@ var fs=require('fs');//파일시스템 사용
14 // 15 //
15 r.question("분석을 원하는 아이디를 입력하세요 : ",function(answer){//question메소드에서 callback함수 생성 16 r.question("분석을 원하는 아이디를 입력하세요 : ",function(answer){//question메소드에서 callback함수 생성
16 console.log("입력완료! 분석중...");//callback함수란 이벤트가 왔을 때 실행되는 함수이다. answer에 검색을 원하는 아이디가 담겨있다. 17 console.log("입력완료! 분석중...");//callback함수란 이벤트가 왔을 때 실행되는 함수이다. answer에 검색을 원하는 아이디가 담겨있다.
17 - rtfw=rtfw+answer;//검색 url 구성 18 + rtfw1=rtfw1+answer;//검색 url 구성
18 - console.log(rtfw);//검색 url 확인 19 + console.log(rtfw1);//테스트용 : 검색 url 확인
19 // 20 //
20 //client.fetch(rtfw,param,function(err,$,res){ 21 //client.fetch(rtfw,param,function(err,$,res){
21 //if(err){console.log(err);return;} 22 //if(err){console.log(err);return;}
...@@ -28,14 +29,18 @@ r.question("분석을 원하는 아이디를 입력하세요 : ",function(answer ...@@ -28,14 +29,18 @@ r.question("분석을 원하는 아이디를 입력하세요 : ",function(answer
28 // 29 //
29 // var parsing_html=fs.readFile(rtfw,'utf8',(err,data)=>{//html reading fs 사용 30 // var parsing_html=fs.readFile(rtfw,'utf8',(err,data)=>{//html reading fs 사용
30 //err? console.log(err) : console.log('okay cheerio!');//에러나면 에러출력, 이외엔 okay 메시지 31 //err? console.log(err) : console.log('okay cheerio!');//에러나면 에러출력, 이외엔 okay 메시지
31 -request(rtfw,(error,response,body)=>{//rtfw url 불러오기 32 +var username='';//username문자열 선언
33 +var userleague='';//userleague 문자열 선언
34 +var userregion='';//userregion 문자열 선언
35 +var usernumber='';//usernumber 문자열 선언
36 +request(rtfw1,(error,response,body)=>{//rtfw url 불러오기
32 if(error){throw error};//에러처리 37 if(error){throw error};//에러처리
33 let $ = cheerio.load(body);//rtfw가 body이다. $로 jquery방식으로 html탐색 38 let $ = cheerio.load(body);//rtfw가 body이다. $로 jquery방식으로 html탐색
34 - try{//try_catch구문 39 +// try{//try_catch구문
35 - let username='';//username문자열 선언 40 + //let username='';//username문자열 선언
36 - let userleague='';//userleague 문자열 선언 41 + //let userleague='';//userleague 문자열 선언
37 - let userregion='';//userregion 문자열 선언 42 + //let userregion='';//userregion 문자열 선언
38 - let usernumber='';//usernumber 문자열 선언 43 + //let usernumber='';//usernumber 문자열 선언
39 $('ul').find('a').each(function(index,elem){//ul 태그 아래 a태그를 찾는다. 44 $('ul').find('a').each(function(index,elem){//ul 태그 아래 a태그를 찾는다.
40 username=$(this).find('.name').text().trim();//name클래스를 찾아 공백빼고 텍스트화 45 username=$(this).find('.name').text().trim();//name클래스를 찾아 공백빼고 텍스트화
41 userleague=$(this).find('.league').text().trim();//league클래스를 찾아 공백빼고 텍스트화 46 userleague=$(this).find('.league').text().trim();//league클래스를 찾아 공백빼고 텍스트화
...@@ -43,21 +48,50 @@ request(rtfw,(error,response,body)=>{//rtfw url 불러오기 ...@@ -43,21 +48,50 @@ request(rtfw,(error,response,body)=>{//rtfw url 불러오기
43 if((username===answer)&&(userregion===region)){//아직 리그 구현 안함-리그는 그림으로 비교 48 if((username===answer)&&(userregion===region)){//아직 리그 구현 안함-리그는 그림으로 비교
44 console.log(`${username}`);//테스트용 : 유저네임 출력 49 console.log(`${username}`);//테스트용 : 유저네임 출력
45 console.log(`${userregion}`);//테스트용 : 유저리전 출력 50 console.log(`${userregion}`);//테스트용 : 유저리전 출력
46 - var localnumber=$(this).toString().slice(29,43);//rtfw에서 사용하는 사용자번호를 문자열로 넉넉히 자름 51 + var usernumber=$(this).toString().slice(29,43);//rtfw에서 사용하는 사용자번호를 문자열로 넉넉히 자름
47 - var localindex1=localnumber.search('/');//첫번째 슬레시 발견하는 인덱스 검출 52 + var localindex1=usernumber.search('/');//첫번째 슬레시 발견하는 인덱스 검출
48 - localnumber=localnumber.slice(localindex1+1);//앞부분 슬래시 자른다. 53 + usernumber=usernumber.slice(localindex1+1);//앞부분 슬래시 자른다.
49 - var localindex2=localnumber.search('/')-localindex1+1;//두번째 슬레시 발견하는 인덱스 검출 54 + var localindex2=usernumber.search('/')-localindex1+1;//두번째 슬레시 발견하는 인덱스 검출
50 - localnumber=localnumber.slice(0,localindex2);//뒷부분 슬래시 자른다. 55 + usernumber=usernumber.slice(0,localindex2);//뒷부분 슬래시 자른다.
51 - console.log(`${localnumber}`);//테스트용 : 로컬넘버 출력 56 + console.log(`${usernumber}`);//테스트용 : 유저넘버 출력
52 - 57 + if(rtfw2.length>33){//하나라도 붙어있으면
58 + rtfw2=rtfw2;//아무것도 안한다.
59 + }else{//그렇지않고 아무것도 안붙어있으면
60 + rtfw2=rtfw2+usernumber+'/';//rtfw2 url갱신
53 } 61 }
62 + console.log(rtfw2);//테스트용 : rtfw2 출력
63 + }//이름서버리그비교if종료
64 + });//ul a find문 종료
54 65
66 + var profileID='';
67 + request(rtfw2,(error,response,body)=>{//rtfw2 url 불러오기
68 + if(error){throw error};//에러처리
69 + console.log('request2 processing');//테스트용 : request2 실행여부 출력
70 + let $ = cheerio.load(body);//rtfw2가 body이다. $로 jquery방식으로 html탐색
71 + $('.content').find('.bnet-link').each(function(index,elem){//content 클래스 안의 bnet-link클래스를 포함하는 요소를 찾는다.
72 + profileID=$(this).toString().slice(62,72);//얻고자 하는 profileID를 포함하여 앞뒤로 적당히 자른다.
73 + var localindex3=profileID.search('/');//첫번째 슬레시 발견하는 인덱스 검출
74 + profileID=profileID.slice(localindex3+1);//앞부분 슬래시 자른다.
75 + var localindex4=profileID.search('/')-localindex3;//두번째 슬레시 발견하는 인덱스 검출
76 + profileID=profileID.slice(0,localindex4);//뒷부분 슬래시 자른다.
77 + console.log(`${profileID}`);//테스트용 : profileID 출력
78 + });//a bnetlink 종료
79 +console.log(`${profileID}`);//테스트용 : profileID 출력
55 80
56 - }); 81 +var match_history_1="https://kr.api.blizzard.com/sc2/legacy/profile/3/1/"
57 - }catch(error){ 82 +var match_history_2="/matches?access_token=US0q3wV6W1fIYZmRnEBbNvUrRHYZhwANIi"
58 - console.error(error); 83 +var match_history_url=match_history_1+profileID+match_history_2;
59 - } 84 +console.log(match_history_url);
60 -}); 85 +request(match_history_url,(error,response,body)=>{
86 + if(error){throw error};
87 + console.log('request3 processing');
88 + //console.log(body); //테스트용: response body 출력
89 +});//request3종료
90 +});//request2종료
91 +// }catch(error){
92 +// console.error(error);
93 +// }//try_catch구문 종료
94 +});//request1 종료
61 95
62 // });//parsing_html 끝 96 // });//parsing_html 끝
63 // 97 //
......
...@@ -5,5 +5,5 @@ ...@@ -5,5 +5,5 @@
5 5. a.player에서 profileID를 추출한다. ->플레이어 페이지나 프로필 페이지 등등 활용 가능 5 5. a.player에서 profileID를 추출한다. ->플레이어 페이지나 프로필 페이지 등등 활용 가능
6 6. profileID로 API에서 필요정보 요청 6 6. profileID로 API에서 필요정보 요청
7 7
8 -주의사항 : 한명을 특정해야함. 특정번호는 꼭 7자리가 아닐수 있다. 8 +주의사항 : 한명을 특정해야함. 특정번호는 꼭 7자리가 아닐수 있다. 맨 처음 뜬 사람 기준
9 없애야 할 철자 : y e r / " 5가지 9 없애야 할 철자 : y e r / " 5가지
......