トップ «前の日記(2005-01-17(Mon)) 最新 次の日記(2005-01-19(Wed))» 編集

猿も叩けば日記


2005-01-18(Tue)

_ [net] RSS を吐くボット

自分で勝手に言い出しっぺの法則を適用して書いてみた.

ホントに最低限の機能しか備わってない.チャンネルにログインして,誰かのメッセージに 「memo http://のURI 見出し」とスペース区切りであった場合に,URI と見出しを RSS にして出力する. 一応,吐き出された RSS が風博士で読めることは確認した. IRC::Bot を使うとボットのdaemon化ができるらしいので,暇があったらやってみよう.

使ってみたいという奇特な人は持ってってください.エラーチェックとか一切やってないウンコプログラムです.

use strict;
use Net::IRC;
use Encode qw/decode encode/;
use Encode::JP;
use utf8;
use XML::RSS;
#諸定数
my $Server = 'irc.yourserver.com';
my $Port = 6667;
my $Name = 'My bot';
my $Nick = 'my_bot';
my $Password = 'passwd';
my $Channel = '#ch';
my $irc = new Net::IRC;
my $conn = $irc->newconn(
	Nick    => $Nick,
	Server  => $Server,
	Port    =>  $Port,
	Ircname => $Name,
	Password => $Password
);
$conn->join($Channel);
$conn->add_handler('public' , \&on_public);
sub on_public
{
	my ($self , $event) = @_;
	my $nick = $event->nick;
	my @msg = $event->args;
	my $utf8msg = decode('iso-2022-jp' , $msg[0]);
	if($msg[0] =~ /^memo/)
	{
		my ($uri , $title) = (split /\s+/ , $utf8msg)[1,2];
		if($uri && $title && $uri =~ /^http:\/\//)
		{
			&write_rdf($uri , $title);
			$uri = encode('iso-2022-jp' , $uri);
			$title = encode('iso-2022-jp' , $title);
			my $send_msg = "で登録しました";
			$send_msg = encode('iso-2022-jp' , $send_msg);
			$self->privmsg($Channel , "$title -> $uri $send_msg");
		}
	}
}
sub write_rdf
{
	my($uri , $title) = @_;
	my $rss = new XML::RSS (version => '1.0');
	$rss->channel(
		title        => "RSS from IRC",
		link         => "http://furyo.on-air.ne.jp/",
		description  => "RSSを吐き出すボット",
		dc => {
			date       => '2005-01-17T07:00+00:00',
			subject    => "IRC BOT",
			creator    => 'furyo@on-air.ne.jp',
			publisher  => 'furyo@on-air.ne.jp',
			rights     => 'Copyright 2005, Ryo SHIMIZU',
			language   => 'ja-JP',
		}
	);
	$rss->add_item(title => $title , link => $uri,); 
	my $old = new XML::RSS (version => '1.0');
	$old->parsefile("index.rdf");
	my $i = 0;
	foreach my $item (@{$old->{'items'}})
	{
		$i++;
		$rss->add_item(title => $item->{'title'} , link => $item->{'link'} , mode => 'append');
		last if $i == 9;
	}
	$rss->save("index.rdf");
}
$irc->start;

_ [life] いいツモ

今年度は大分いいツモをしてるような気がする.かなり正解を引いてる.

これは偶然なのか,状況分析によるものなのか.

本日のツッコミ(全1件) [ツッコミを入れる]
_ Nsazxkib (2010-02-26(Fri) 06:18)

GLUlDa この間も俊太郎の詩をお http://www.stlouisbusinesslist.com/business/5021837.htm?info=viagra viagra, 541418448,


2003|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|05|06|07|08|09|10|11|12|
2008|01|