Upload
naver-d2
View
365
Download
12
Embed Size (px)
Citation preview
트위터 봇 만들기짹짹이의 기분이 되는거에요 !제로페이지 24 기 권준혁ZeroPage X CAUCSE Steamers
강사 소개• 제로페이지 24 기• 현재 스티머즈 회장• 병특노예 희망중 (2 학기 휴학하고 싶다 )
• 게임 제외한 프로젝트 진행 사실상 없음• java 에서 외부 라이브러리도 이번에 처음 가져다 씀 ,,,
진행 내용• 실습 , 코드 그런거 없습니다 ( 준비할 시간이 없었음 ,,, 그리고 1 시간 ,,,)
• 코드를 보며 자세한 설명 그런거 없습니다 ( 까먹고 스샷을 안찍어둠 ,,,)
• 대충 어떤 식으로 봇을 만들면 되는지에 대한 내용 ? 입니다
트위터 봇이란 ?
• 트위터의 Robot
• 기능은 제각각• 프로그램이 트위터를 돌리고 있으면 일단 Bot
• 수동 Bot 은 그냥 컨셉놀이계정
대표적인 봇
데빌스캠프도 있으니 만들어보자• 언젠가는 만들려고 했는데 이번기회에 만들어보기로 했습니다 .
• 뭔가 인터넷 통신하고 그러니까 서버지식 있어야 하나 하고 이때까지 미뤄뒀습니다 . ( 아니더라고요 )
• 이렇게 귀차니즘이 무섭습니다
그래서 만들어진 과정• 수요일 - 세션을 하기로 결정이 남• ???• JDP 가동
JDP 가 돕니다• 목요일 - 조사 및 개발 시작• 금요일 - 생각보다 어렵다 + 원래 일정이 있었음• 토요일 - ^^;;;;
• 어떻게든 되긴 함• https://twitter.com/princess_yutki
그래서 어떻게 만드나요• 1. 프로그램을 짠다• 2. 자신의 컴퓨터에서 돌린다• 3. 끝• 서버지식 X, 트위터 API 전부 읽을 필요 X
• 툭 까놓고 말해서 C 언어만 할 수 있어도 만들수있음• 왜냐면 라이브러리가 있거든요 !
여기서 잠깐봇을 만드려면 ?• 이미 프로그램 안짜도 봇을 만들어주는 사이트가 많음• 그러나 추가기능은 유료고 , 제한도 걸려있음• 자신이 기능 추가하는게 불가• 그래서 그냥 내가 만들기로 함 ( 공부도 하는셈치고 )
• http://matome.naver.jp/odai/2133695904966289401
1. 라이브러리 조사• 최근 자바를 손대보고 있어서 자바로 하기로 함• http://stackoverflow.com/questions/851767/b
est-java-twitter-library
• Twitter4J 를 사용하기로 함• 업데이트를 잘 해주고 , 초보자가 사용하기 쉬움 , 튜토리얼 풍부 ( 한국어 튜토리얼도 있음 )
예제를 보면서 공부한다
• http://twitter4j.org/ko/code-examples.html
2. 어플리케이션 등록
여기서 얻은 정보를 어플리케이션에 등록하면 끝• 어플리케이션은 이 정보를 이용해서 내가 어떤 어플리케이션인지 트위터 API 에 알린다• 유저의 토큰 키를 사용해서 이 어플리케이션이 유저에게 접근 할 수 있다• Twitter4J 는 properties 파일로 저장해두면 편함
이 정보만으로도 간단한 프로그램이 가능• 이제 Twitter4J 로 프로그램을 짭니다• TwitterFactory 에서 Twitter 객체를 찍어내서 그걸 하나의 계정으로 취급하는 방식인듯하였습니다• 참고한 사이트 -
http://d.hatena.ne.jp/redcat_prog/20120315/1331780805
• BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
• String tweet = "";
• while(tweet.isEmpty()) {
• System.out.print(" 今何してる ? : ");
• tweet = br.readLine();
• if(tweet.length() > 140) {
• System.out.println(" 字数制限を超えています。 ");
• tweet = "";
• continue;
• }
• }
• Twitter twitter = new TwitterFactory().getInstance();
• Status status = twitter.updateStatus(tweet);
• System.out.println(status.getUser().getScreenName() + " として投稿しました : " + status.getText());
기능을 생각해봄- 정기 트윗- 타임라인 분석해서 특정 키워드에 반응하기- 멘션이 오면 그것에 반응하기- 멘션이 오면 맞는 이미지를 합성해서 반환
기능을 생각해봄- 정기 트윗- 타임라인 분석해서 특정 키워드에 반응하기- 멘션이 오면 그것에 반응하기- 멘션이 오면 맞는 이미지를 합성해서 반환
기능을 생각해봄- 정기 트윗- 타임라인 분석해서 특정 키워드에 반응하기- 멘션이 오면 그것에 반응하기- 멘션이 오면 맞는 이미지를 합성해서 반환
기능을 생각해봄- 정기 트윗- 타임라인 분석해서 특정 키워드에 반응하기- 멘션이 오면 그것에 반응하기- 멘션이 오면 맞는 이미지를 합성해서 반환에휴 왜그랬지 ? ㅜㅜ
다른 계정을 인증하는 법• 1. 어플리케이션에서 토큰 요청 URL 을 생성• 2. 들어감• 3. 인증하고 싶은 계정으로 로그인 후 앱 승인• 4. 인증• 저같은 경우는 핀으로 인증 진행
이렇게 인증하면 다른 계정에도 됨 ㅎ
정시 알림도 성공 ㅎ
주의 할 점• 트위터는 짧은 간격으로 비슷한 문장을 던질 수 없다 (문장 유사도 검사를 내부에서 하는듯 )
• 그래서 테스트 할 때 짧은 간격으로 날리려면 일일히 다른 문장으로 해서 날려줘야됨 ( 실제로 만들때도 생각해야됨 )
• 시간 알림 폼도 숫자만 바꿔서는 중복 트윗이라고 막음
결론• 봇만들기 어렵지 않다 . 트잉여는 해보자• 직접 만들면 이런저런 기능 섞을 수 있어서 재밌는 걸 만들 수 있다• 라이브러리 짱짱인 것• 남은 기능은 프로젝트로 돌려서 데빌스 끝나고 만드는걸로 ,,,