Twitter bot を作る

参考サイト

  1. PerlによるTwitter botの作り方
  2. twitter botをつくってみる。(3) - botのプログラミング
  3. PerlでTwitterクライアント製作メモ その1
  4. CPAN string-similarity
  5. UTF-8のフラグ
  6. UTF-8のフラグ

Perl CPAN Net::Twitter を利用する OAuthを利用する

  1. twitter bot用の(捨て)アカウントを作成する
  2. OAuth に必要な情報を得る
  3. 参考サイトをコピペして,実行してみる
    	#!/usr/bin/perl
    	use strict;
    	use Net::Twitter;
    	use utf8;
    	binmode STDOUT, ":utf8";
    	
    	my $consumer_key = "<<<YOUR OWN consumer key>>>";
    	my $consumer_secret = "<<<YOUR OWN consumer secret>>>";
    	my $access_token = "<<<YOUR OWN access token>>>";
    	my $access_token_secret = "<<<YOUR OWN access token secret>>>";
    	
    	my $handle = Net::Twitter->new({
    	    traits => [qw/OAuth API::REST API::Search/],
    	    consumer_key => $consumer_key,
    	    consumer_secret => $consumer_secret,
    	    access_token => $access_token,
    	    access_token_secret => $access_token_secret});
    	
    	#do_search($_) foreach @ARGV;
    	
    	my $msg = "てすと投稿です";
    	my $handle = Net::Twitter->new({
    	    traits => [qw/OAuth API::REST/],
    	    consumer_key => $consumer_key,
    	    consumer_secret => $consumer_secret,
    	    access_token => $access_token,
    	    access_token_secret => $access_token_secret});
    	my $ret = $handle->update({status=>$msg});
    	print "Cannot post!!" unless $ret;
    	
    	sub do_search {
    	    my $term = shift;
    	
    	    my @results;
    	    my $rs = $handle->search({q=>$term, lang=>"ja", page=>1, rpp=>100});
    	    if (ref $rs eq 'HASH' && exists $rs->{results}) {
    	        if (@{$rs->{results}}) {
    	            print_post($_) foreach @{$rs->{results}};
    	        }
    	    }
    	}
    	
    	sub print_post {
    	    my $t = shift;
    	
    	    print "$t->{from_user} (on $t->{created_at})  $t->{text}\n";
    	}
  4. cron(定期的にコマンドやプログラムを実行する)

問題

  1. Wide character in ...

自分のボット

【今後】自分宛のツイートを取得して,解析して,返信ツイートをする

  1. 自分宛のツイートがあるのか定期的に確認する
    • $ ./twitter-search.pl "kmry_bot"
      • seana_bot (on Thu, 13 Dec 2012 04:49:00 +0000) @kmry_bot 今日は雪がたくさん積もっていたので雪かきをしてきました。
      • kmry_bot (on Thu, 13 Dec 2012 03:48:39 +0000) てすと投稿です
    • $ ./twitter-search.pl "@kmry_bot"
      • seana_bot (on Thu, 13 Dec 2012 04:49:00 +0000) @kmry_bot 今日は雪がたくさん積もっていたので雪かきをしてきました。
  2. 自分宛のツイートの内容があれば,内容を次のように分ける
    • 相手のアカウント名
    • 本文
    • URL
    • ハッシュタグ
  3. 上記から,本文のみを抽出し,形態素解析,構文解析を行う
  4. ○○手法を用いて,(相手のIDをつけて)返答する
    • ○○手法は,自分で考える
  5. 得られた情報をログに残す