Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Google trends to_irc

1.533 Aufrufe

Veröffentlicht am

  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

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>

×