perlでtwitter。
最近perlを書くことになり、練習がてらtwitterAPI叩いてみた。
tokenいれてよしなにするだけだと思っていたら地味に躓いたので覚書程度に。
対象
- perlって何?
- perl触ってみたい
という方。
tool
- plenv
- Net::Twitter::Lite::WithAPIv1_1
- YAML(token扱うために使いました 他に良い方法あればご教授願います><)
Let's Hack.
環境作るところからしたいと思います。
plenv install
まずはplenv本体とperl-buildをgit clone。
git clone git://github.com/tokuhirom/plenv.git ~/.plenv
git clone git://github.com/tokuhirom/Perl-Build.git ~/.plenv/plugins/perl-build/
pathを通します。
.bash_profileにでも追記してください。
export PATH="$HOME/.plenv/bin:$PATH"
eval "$(plenv init -)"
追記後、反映させます。
exec $SHELL -l
perl install
plenv install -l
とするといろいろバージョンが表示されます。
好きなものをinstallしましょう。
plenv install 5.27.2
plenv rehash
plenv global 5.27.2
perlのバージョンが変わったかと思います。
ついでにcpanもinstallします。
plenv install-cpanm
coding
Net::Twitter::Lite::WithAPIv1_1というものを使います。
参考記事を探すとNet::TwitterやNet::Twitter::Liteとなっているのですが、Twitter API 1.0が廃止されたことによって、これらも使えなくなってしまったのでNet::Twitter::Lite::WithAPIv1_1を使います。
cpan install Net::Twitter::Lite::WithAPIv1_1
cpan install YAML::Tiny
installできました。
use strict;
use warnings;
use utf8;
use Net::Twitter::Lite::WithAPIv1_1;
use YAML::Tiny;
my $data = YAML::Tiny->new;
$data = YAML::Tiny->read('./secret_key.yml');
my $key = $data->[0];
my $nt = Net::Twitter::Lite::WithAPIv1_1->new(
consumer_key => $key->{'consumer_key'},
consumer_secret => $key->{'consumer_secret'},
access_token => $key->{'access_token'},
access_token_secret => $key->{'access_token_secret'},
legacy_lists_api => 1,
ssl => 1
);
eval {
$nt->update('わふー');
};
access tokenは別ファイルに切り出してます。
consumer_key: 'こんしゅーまーきー'
consumer_secret: 'こんしゅーまーしーくれっと'
access_token: 'あくせすとーくん'
access_token_secret: 'あくせすとーくんしーくれっと'
あとは perl twitter.pl
とすれば動くと思います。
Net::Twitter::Liteとかじゃだめ。インスタンス生成するときに ssl => 1
がないとだめ。というところにきづかずちょっと手こずってしまった。。。
最後に
ドキュメントをちゃんと読めば詰まることはなかった。。。