ハブ君の寝言

日記のような何か

Net::Twitter::Lite

UbuntuにNet::Twitterがインストールできなかったから人生あきらめてNet::Twitter::Liteに乗り換え
Ubuntuのインストール系がまじ意味不明sudoとかめんどうなんでやめてください

頭の部分

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use Net::Twitter::Lite;
my $consumer_key = 'xxxxxx';
my $consumer_key_secret = 'xxxx';
my $access_token = 'xxxxx';
my $access_token_secret = 'xxxxxxxx';
my $nt = Net::Twitter::Lite->new(
  consumer_key    => $consumer_key,
  consumer_secret => $consumer_key_secret,
);
$nt->access_token($access_token);
$nt->access_token_secret($access_token_secret);


使うであろう主要関数

# 発言
&my_post($nt,$post);
sub my_post{
  my $nt = $_[0];
  my $post = $_[1];
  eval{
    $nt->update({ status =>$post });
  };
}

# ふぁぼり
&my_fav($nt,$status_id)
sub my_fav{
  my $nt = $_[0];
  my $fav = $_[1];
  eval{
    $nt->create_favorite($fav);
  };
}

# りぷらい
&my_rep($nt,$post,$status_id);
sub my_rep{
  my $nt = $_[0];
  my $rep = $_[1];
  my $rep_id = $_[2];
  eval{
    $nt->update({ status =>$rep, in_reply_to_status_id => $rep_id });
  };
}

# こーしきあーるてぃー
&my_rt($nt,$status_id);
sub my_rt{
  my $nt = $_[0];
  my $rt = $_[1];
  eval{
    $nt->retweet($rt);
  };
}

各変数の説明
$ntは自分のOAuth認証した情報がうんたら
$postは発言する内容がうんたら
$status_idは相手の発言のIDがうんたら
以上

情報をゲットする系の関数

# 自分のTLを取得($since_id_homeまで)
eval{
  $home = $nt->home_timeline({since_id => $since_id_home});
  $since_id_home = @{$home}[0]->{'id'};
};

# 検索結果を取得($since_id_serchまで)
eval{
  $r = $nt->search({q => $search_term, since_id => $since_id_search});
  $sr = $r->{results};
  $since_id_search = @{$sr}[0]->{id};
};

具体的に使ってみる

# TLの発言に対してリプライを送る
  eval{
    $home = $nt->home_timeline({since_id => $since_id_home});
    $since_id_home = @{$home}[0]->{id};
  };
  foreach my $list(@{$home}){
    my $txt = $list->{text};
    my $id = $list->{id};
    my $name = $list->{user}{screen_name};
    my $rep = "@".$name." お前が死ね";
    if($txt =~ /死ね/){
      &my_rep($nt,$rep,$id);
    }
  }
 }

# 検索してその発言を全てふぁぼる
  eval{
    $r = $nt->search({q => $search_term, since_id => $since_id_search});
    $sr = $r->{results};
    $since_id_search = @{$sr}[0]->{id};
  };
  foreach my $list(@{$sr}){
    my $id = $list->{id};
    &my_fav($nt,$id);
  }

検索の時の注意
なぜか$list->{user}{screen_name};が存在しない
他の方法で出せるかもしれないけど私は知りません


参考URL:Net::Twitter::Lite
http://search.cpan.org/dist/Net-Twitter-Lite/lib/Net/Twitter/Lite.pm