Google trends to_irc

1,432 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,432
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Google trends to_irc

  1. 1. Perl つかって 簡単な何かを作ってみた。 @rarere
  2. 2. <ul>一応自己紹介 </ul><ul><ul><li>なまえ:られれ
  3. 3. 今年 4 月から札幌の会社に就職
  4. 4. 今まであんまりプログラムはやった事無い
  5. 5. Perl は個人でちょっと使ってるぐらい </li></ul></ul>
  6. 6. <ul>Google Trends を  IRC へ送る物を Perl で作ってみました </ul><ul>それ Pla(ry じゃない </ul>
  7. 7. <ul>Google Trends って? </ul>
  8. 8. <ul>iGoogle にあるこれ </ul>
  9. 9. <ul>http://www.google.co.jp/trends でも同じものが見られる </ul><ul>トレンドのトップ </ul><ul>日付指定してみたりも </ul>
  10. 10. IRCって 匿名じゃない2chみたいなもん。 くわしくはぐぐって。
  11. 11. <ul>とある日の #LUCK での会話 </ul><ul>2ch のスレみたいなもん <li>#LUCK: L inux U sers group C hugo K u </li></ul>
  12. 12. <ul>xxxxxx> http://www.nikkansports.com/entertainment/news/f-et-tp0-20100731-660250.html xxxxxx> 愛内里菜引退 rarere< Google 急上昇ワードに入ってると思ったらそういうことだったのですね xxxxxx> 急上昇ワードが流れるツールって何かあるかしら rarere< iGoogle のガジェットで見てるだけでナガス方法はしらんですなぁ xxxxxx> twitter の人がいた rarere< あ、ほんとだ rarere< でも 1 位しかわかんないのかぁ ←勘違い xxxxxx> そうか, iGoogle て忘れてたなぁ rarere< Plagger でメールにながすとか xxxxxx> られれちゃんにつぶやいてもらうに 1 票 </ul>
  13. 13. <ul>たいぎーけぇ いやじゃ </ul><ul>訳:面倒だから嫌だ たいぎー:広島弁。疲れた、だるい、面倒 ~けぇ : ~だから ~じゃ : ~だ、~です </ul>
  14. 14. <ul>RSS とか HTML のデータ取得して必要な部分を抜き出して IRC に書き込めば良いだけだから簡単にできそう </ul>
  15. 15. <ul>ということで Google 急上昇キーワードを IRC へ投稿するやつを Perl で書いてみました。 </ul>
  16. 16. <ul>いるもの、つかったもの </ul><ul><ul><li>ぐーぐるせんせい
  17. 17. Google 急上昇キーワードの HTML
  18. 18. Perl
  19. 19. CPAN モジュールいくつか
  20. 20. やる気 ( 取りかかるまで 1 ヶ月。作成に 3 日 ) </li></ul></ul>
  21. 21. <ul>#/usr/bin/perl -w </ul><ul>use strict; use warnings; use Time::Piece (); use Time::Seconds; use LWP::UserAgent; use POE qw(Component::IRC); use Encode qw(from_to); <li>ぐぐってみたり、すでに入っていたものを使用。 </li></ul>
  22. 22. <ul>Google 急上昇キーワード </ul><ul>http://www.google.co.jp/trends/hottrends?sa=X&date= 2010-9-29 </ul><ul>  赤文字 の部分を変えれば、 </ul><ul>任意の日付の物を取得できる。 最新のだと 2 時間ごとに 変わるみたいだから、 昨日のやつを取得しよう。 ※ RSS は最新のみ。   </ul>
  23. 23. 昨日の日付は、 Perl5.10 だと、 Time::Piece Time::Seconds を使えばいけるみたい。
  24. 24. 昨日の日付 use Time::Piece (); use Time::Seconds; my $t = Time::Piece::localtime(); # 1 日前に設定 $t -= ONE_DAY; my $year = $t->year; my $mon = $t->mon; my $mday = $t->mday; my $url = &quot;http://www.google.co.jp/trends/hottrends?sa=X&date=$year-$mon-$mday&quot;;
  25. 25. HTMLはこんな感じ
  26. 26. この辺を正規表現でぬきだそう
  27. 27. HTMLの取得は LWP::UserAgent; # HTML を取得 my $ua = LWP::UserAgent->new; my $response = $ua->get($url); my $content; if ($response->is_success) { $content = $response->content; } else { die($response->status_line); }
  28. 28. # HTML を解析 my @html = split( / /, $content); my $i = 0; foreach my $line (@html) { if ($line =~ m/<td   class=num>(d+.)</td>.*<td><a href=&quot;.*&quot;>(.*)</a>/) { push(@trends, $1.$2); $i++; } if ( $i == 10 ) { last; } } 適当に抜き出し 20 個あるうち 10 個分だけ抜き出し
  29. 29. IRC 部分は CPAN の POE::Component::IRC を参考にほぼそのままで sub irc_001 { my $sender = $_[SENDER]; my $irc = $sender->get_heap(); print &quot;Connected to &quot;, $irc->server_name(), &quot; &quot;; $irc->yield( join => $_ ) for @channels; my $msg = join(' ', @trends); $msg = &quot; 昨日の Google Trends: &quot;.$msg; from_to($msg, 'utf-8', 'iso-2022-jp'); $irc->yield( notice => @channels[0] => $msg ); $irc->yield( shutdown => $server ); return ; } この辺で IRC 用に use Encode qw(from_to);
  30. 30. <ul>というのを組み合わせたらできた </ul>
  31. 31. <ul>cron に登録して、毎朝 8 時に書き込みするようにしてみました。 </ul><ul>たまたま反応があった時のキャプチャ </ul>
  32. 32. <ul>あたった問題とか </ul><ul><ul><li>IRC で文字化け </li></ul></ul><ul>use Encode qw(from_to); で、 from_to($msg, 'utf-8', 'iso-2022-jp'); ってやって対応。 </ul><ul><ul><li>IRC の文字数制限 (512 文字 ) </li></ul></ul><ul>取得したキーワードを全部表示しようとすると後半が切れる。 ↓ 10 位まででいいや。 </ul>
  33. 33. <ul>おわり </ul>

×