Showing
2 changed files
with
56 additions
and
22 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 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가지 | ... | ... |
-
Please register or login to post a comment