• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Google trends to_irc
 

Google trends to_irc

on

  • 1,347 views

 

Statistics

Views

Total Views
1,347
Views on SlideShare
1,347
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Google trends to_irc Google trends to_irc Presentation Transcript

    • Perl つかって 簡単な何かを作ってみた。 @rarere
      • 一応自己紹介
        • なまえ:られれ
        • 今年 4 月から札幌の会社に就職
        • 今まであんまりプログラムはやった事無い
        • Perl は個人でちょっと使ってるぐらい
      • Google Trends を  IRC へ送る物を Perl で作ってみました
        それ Pla(ry じゃない
      • Google Trends って?
      • iGoogle にあるこれ
      • http://www.google.co.jp/trends でも同じものが見られる
        トレンドのトップ
        日付指定してみたりも
    • IRCって 匿名じゃない2chみたいなもん。 くわしくはぐぐって。
      • とある日の #LUCK での会話
        2ch のスレみたいなもん
      • #LUCK: L inux U sers group C hugo K u
      • 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 票
      • たいぎーけぇ いやじゃ
        訳:面倒だから嫌だ たいぎー:広島弁。疲れた、だるい、面倒 ~けぇ : ~だから ~じゃ : ~だ、~です
      • RSS とか HTML のデータ取得して必要な部分を抜き出して IRC に書き込めば良いだけだから簡単にできそう
      • ということで Google 急上昇キーワードを IRC へ投稿するやつを Perl で書いてみました。
      • いるもの、つかったもの
        • ぐーぐるせんせい
        • Google 急上昇キーワードの HTML
        • Perl
        • CPAN モジュールいくつか
        • やる気 ( 取りかかるまで 1 ヶ月。作成に 3 日 )
      • #/usr/bin/perl -w
        use strict; use warnings; use Time::Piece (); use Time::Seconds; use LWP::UserAgent; use POE qw(Component::IRC); use Encode qw(from_to);
      • ぐぐってみたり、すでに入っていたものを使用。
      • Google 急上昇キーワード
        http://www.google.co.jp/trends/hottrends?sa=X&date= 2010-9-29
          赤文字 の部分を変えれば、
        任意の日付の物を取得できる。 最新のだと 2 時間ごとに 変わるみたいだから、 昨日のやつを取得しよう。 ※ RSS は最新のみ。  
    • 昨日の日付は、 Perl5.10 だと、 Time::Piece Time::Seconds を使えばいけるみたい。
    • 昨日の日付 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;;
    • HTMLはこんな感じ
    • この辺を正規表現でぬきだそう
    • 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); }
    • # 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 個分だけ抜き出し
    • 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);
      • というのを組み合わせたらできた
      • cron に登録して、毎朝 8 時に書き込みするようにしてみました。
        たまたま反応があった時のキャプチャ
      • あたった問題とか
        • IRC で文字化け
        use Encode qw(from_to); で、 from_to($msg, 'utf-8', 'iso-2022-jp'); ってやって対応。
        • IRC の文字数制限 (512 文字 )
        取得したキーワードを全部表示しようとすると後半が切れる。 ↓ 10 位まででいいや。
      • おわり