コマネタ帳(旧) by iyoupapa

PCや土いじりやゲームやオモチャ、思いつくまま細切れネタを書き散らかす日記

Creative Commons Licenseiyoupapaが書いたコマネタ帳の文章は「Creative Commons 表示-継承 2.1 日本」ライセンスです。写真については私のFlickrで配布しています。新しい「コマネタ帳」に移転しました。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[プログラミング]TwitterのBotをOAuth対応にする

第15回北海道開発オフ@JRHokkaidoSapをOAuth対応に修正したときのメモ。

1.アプリケーションの登録

  • アプリケーション作成者のアカウント(この場合@iyoupapa)でTwitterにログインして「Twitter / アプリケーション」から「Register a new application」を選択する。
  • 「Application Icon」を設定する。
  • 「Application Name」にアプリケーション名を適当に入れる。
  • 「Description」に最低30文字を入れる。
  • 「Application Website」にこのブログのURLを入力する。
  • 「Application Type」を「Client」にする。
  • 「Default Access Type」を「Read & Write」にする。
  • 個人なので、「Organization」、「サイト」は空欄にする。
  • 「Use Twitter for login」はチェックしない。
  • CAPTCHAを入力して登録する。
  • 登録後の「Consumer key」と「Consumer secret」をコピペ保存する。

2.アクセストークンの取得

  • Net::Twitterを準備する。Windows の ActivePerlの時はPPM(Perl Package Manager)からNet-Twitterをインストールする。
  • Twitterに「Botが動作するアカウント(この場合@JRHokkaidoSap)」でログインする。
  • 以下のコードにConsumer keyとConsumer secretを書き込んで実行する。
  • 表示されたURLにアクセスして、アクセスを許可する。
  • 数字が大きく表示されるので、その数字を先ほどのスクリプトに入力する。
  • 「Access token」と「Access token secret」が表示されるのでコピペ保存する。
#!/user/bin/perl
use strict;
use warnings;

use utf8;
use Encode;
use Net::Twitter;

binmode STDOUT, ':encoding(shiftjis)';
binmode STDERR, ":encoding(shiftjis)";

my $nt = Net::Twitter->new(
  traits      => ['API::REST', 'OAuth'],
  consumer_key  => "CONSUMERKEY",    # ←
  consumer_secret  => "CONSUMERSECRET", # ←
);

my $access_token;
my $access_token_secret;

unless ( $nt->authorized ) {
  # The client is not yet authorized: Do it now
  print "Authorize this app at ",
   $nt->get_authorization_url,
   " and enter the PIN#\n";

  my $pin = <STDIN>; # wait for input
  chomp $pin;

  my($access_token, $access_token_secret, $user_id, $screen_name) = $nt->request_access_token(verifier => $pin);
  #  save_tokens($access_token, $access_token_secret); # if necessary
  print "Access token: ", $access_token, "\n";
  print "Access token secret: ", $access_token_secret, "\n";
}

3.本体スクリプトの修正

  • ログイン部を修正する。
sub initTwitter
{
  $bot = new Net::Twitter( 
    traits           => ['API::REST', 'OAuth'],
    consumer_key     => $CONSUMER_KEY,
    consumer_secret  => $CONSUMER_SECRET,
  );
  $bot->access_token($ACCESS_TOKEN);
  $bot->access_token_secret($ACCESS_TOKEN_SECRET);
}

4.多分OK!

お疲れ様でした。…いやまだ実環境に適用していないんだけどw。

5.おまけ

PPMもNet::Twitterもプロクシを超えるときは環境変数HTTP_PROXYに”http://proxyhost:8080/”などと設定しておけばいい。LWP::UserAgentは環境変数だけでは認識しないので、env_proxyを呼び出す。

  my $ua = LWP::UserAgent->new;
  $ua->env_proxy;

これまでプロクシのない環境ばかりだったので、こんな基本も知らないのさ><。

6.Thanks

スポンサーサイト

[プログラミング]ついカッとして @JHWHokkaido を作った。

2/23~2/24の荒天は凄かったですね。被害に遭われた方々にお見舞い申し上げます。

幸いにして俺は外出する予定もなく、いつも通りに過ごしていました。とはいえ、 JR の状況は @JRHokkaidoSap で随時チェック。「これなら JR 以外の情報も欲しくね?」と思い始めまして、勢いで北海道の高速道路状況を配信する @JHWHokkaido なる物を作ったのでした。 JH+HighWay で JHW などと考えていたのですが、 JH なんて既にねぇよ、バカだね俺ヽ(`Д´)ノ 。

今回はダイスロールボットのソースを流用したので、「@」を投げると最新状況を「@」で返信してくれます。調整不足で5分に1回 Update しているようですから、 Follow しないで「@」を使うのも手かも知れません。

情報のフォーマットが汚いのですが、どうすればいいか思いつきません。ご意見募集中ですm(_ _)m。

2008/2/26 追記

@hadzimmeさんから指摘していただいたので、方面毎にポストを分けました。道央道(旭川方面)、道央道(室蘭方面)、札樽道、道東道の別です。深川留萌道は情報が出てくるのか不明です><。旭川紋別自動車道は対象外です><。

「@」での問い合わせの時に「道央」とか「樽」と付けてあげると、一致する高速の分だけ返信します。該当する高速が無いときは全道路分返しますので諦めてください。

続きを読む

[プログラミング]Twitter Botの続き

[プログラミング]北海道開発オフでTwitter botを作ったよ | コマネタ帳」での残務をこなします。かなり日数が空いてしまいましたが、少しは進捗したところをお見せしないと、前回の記事をブックマークしたりはてなスターつけたりして頂いた値がなくなります><。Perl用語がかなり不自由なんで、突っ込みどころ満載のエントリですが良しなにお願いします。

続きを読む

[プログラミング]北海道開発オフでTwitter botを作ったよ

第1回の北海道開発オフ部に参加してきました。オフの状況は別途レポートするとして、作っていたサイコロ振りボットがここまでできたよ、という「作業報告」をしたいと思います。あれだけ黙々と作業してて、何もできてないってのもあれなんで。

今回はユーザーと対話できるBotを考えていました。内容はともかく、とりあえずテンプレートとして使える方向を目指します。

2008/02/16 追記

[プログラミング]Twitter Botの続き | コマネタ帳」に続きを書きました。

続きを読む

[ネット]@JRHokkaidoSapがまとめWikiに載ったよ

News Twitter まとめ Wiki」の「天気・交通情報系」ページで@JRHokkaidoSapを紹介していただきました。ついったー部新年会@道民部でも「中の人」が定着していたようで、くすぐったいことと言ったらありません。重要なことは「Net::Twitter」と「Web::Scraper」がやってくれてますからね。

肝心の@JRHokkaidoSapですが、前回のエントリの後でエンコードが間違っていたことに気付きました(大汗)。波ダッシュが化けるので、全角チルダに強制置換する処置も含めて最新のコードを置いておきます。

続きを読む

[プログラミング]JR北海道の札幌近郊の運行状況をTwitterにポストする

関東のJR運行状況botはTwitterにいるのに、札幌圏のbotはなんでいないのかなと思ってTwitterしたら、highness(smokeymonkey)さんが「[-*煙猴*-]: JR北海道の運行情報をお知らせするJRHokkaido」として反応してくれました。しかし、残念ながら現在は@JRHokkaidoは削除されています。

せっかくなので、これを元ネタに、何とかTwitterにポストしてやろうと粘ってみました。最初はYahoo PipesでHTMLからRSS Feedに変換しようとしたのですが、Yahoo Pipesはキャッシュが利くようで、何時間経ってもRSSが更新されません。仕方がないので他力本願は諦めて、Perlでプログラムすることにしました。

札幌圏の運行状況を10分ごとにチェックしています。全道一括なども可能ですが、いきなり手を広げるのは面倒なんでごめんなさい。

ごく普通のWindows XPで動いているので、多分きっと転けます。間違った情報を流すかも知れませんので、自己責任でご利用ください。

続きを読む

skin presented by myhurt : BLOG | SKIN

FC2Ad

  
copyright © 2005 コマネタ帳(旧) some rights reserved. Powered by FC2ブログ