URL からtitle を取得してくれるirc bot
irc-net の#koedolug:*.jp でURL からtitle を取得してくれるbot がいたらいいのにという話が出たので書いてみました.
nick は内田美奈子「BOOM TOWN」のゼラから.
#!/usr/bin/perl use strict; use warnings; use Net::IRC; use LWP::Simple; use utf8; use Encode; use Encode::Guess qw/euc-jp shiftjis 7bit-jis/; my %conf = ( Nick => 'zerra_xyz-P', Username => 'IRC-Bot', Server => 'irc.ircnet.ne.jp', Port => 6667, Ircname => 'IRC-Bot', ); my $channel = '#koedolug:*.jp'; my $enc_to = 'ISO-2022-JP'; sub on_connect { my ($self, $event) = @_; $self->join($channel); } sub on_public { my ($self, $event) = @_; my $nick = $event->nick; my $type = $event->type; my ($arg) = $event->args; Encode::from_to($arg, $enc_to, 'UTF-8'); if ($type eq 'public' && $arg =~ /(s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)/) { my $url = $1; print "url > [$url]\n"; my $line = decode( 'Guess', get($url)); $line =~s/\n//go; my $pattern = "<title.*>(.+)</title>"; if($line =~ m/$pattern/i) { $line = $1; } else { $line = ''; } print"title > [$line]\n"; Encode::_utf8_off($line); Encode::from_to($line, 'UTF-8', $enc_to); $self->notice($channel, $line); } } my $irc = Net::IRC->new; my $conn = $irc->newconn(%conf); $conn->add_handler('endofmotd', \&on_connect); $conn->add_handler('public', \&on_public); $irc->start;
ザクッと書いただけなのでまだまだバグ居そう.
てか,perl 5.8 まともに書いたことないので日本語周りで嵌りまくりです.モダンPerl 読まねば…#積んである X-(
追記)
修正版 > URL からtitle を取得してくれるirc bot 修正(0.71) - matoken’s meme -hatena-
- WORKSHOP-AO
http://jlpowder.com/aoashi/
- AO_boomtown_01
http://jlpowder.com/aoashi/html-files/rooms/boomtown-01.html
- zerra01.jpg (JPEG 画像, 400x427 px)
http://jlpowder.com/aoashi/html-files/rooms/boomtown_room/bt_gallery/zerra01.jpg
- hoka/ゼラ
http://www.geocities.co.jp/Playtown/4230/zerra.html
- マンガ「BOOM TOWN」内田美奈子 - オタクなオイラの時々徒然怠慢日記 - Yahoo!ブログ
http://blogs.yahoo.co.jp/lesefeal/22659202.html
- 積ん読パラダイスinBlog:『BOOM TOWN 全第4巻』(内田美奈子、竹書房、各880円)
http://blog.livedoor.jp/kha02604/archives/18006002.html
- BOOM TOWN(1〜4巻) 内田美奈子 復刊リクエスト投票
http://www.fukkan.com/fk/VoteDetail?no=11567