はてなグループにキーワードを登録する準備

30分プログラム、その630。はてなグループに大量にキーワードを登録したくなったので、その準備をしてみた。

はてなグループにはCSV形式でキーワードをインポートできる。
CSVファイルは

word,body
"リンク集","- [http://g.hatena.ne.jp/:title]
- [http://g.hatena.ne.jp/help:title=ヘルプ]
"

みたいな形になっていて、改行が含まれていることを除けばそれほど難しくない。

難しくはないんだけど、練習がてらPerlでクラスを作ってみた。

使い方

my $keyword = HatenaKeyword->new();

# hogeの登録
$keyword->add('hoge',"hogeの説明");

# 説明は省略できる
$keyword->add('hoge2');

# CSVの出力
print $keyword->to_string,"\n";

これで、パイプでキーワード一覧を受け取って、CSVファイルを作るスクリプトが簡単に作れる。

my $keyword = HatenaKeyword->new();
while(<>){
    chop;
    $keyword->add("$_","[[AVM2 Opcode]]\n$_の説明を書く");
}

print $keyword->to_string,"\n";

ソースコード

#! /usr/bin/perl
# -*- mode:perl; coding:utf-8 -*-
#
# hatena_keyword.pl -
#
# Copyright(C) 2009 by mzp
# Author: MIZUNO Hiroki / mzpppp at gmail dot com
# http://howdyworld.org
#
# Timestamp: 2009/07/31 22:07:35
#
# This program is free software; you can redistribute it and/or
# modify it under MIT Lincence.
#


use strict;
use warnings;
use Data::Dumper;

{
    package HatenaKeyword;

    sub new{
	my $class = shift;
	return bless {},$class;
    }

    sub add{
	my ($self,$word,$body) = @_;
	$body ||= $word;
	$self->{$word} = $body;
    }

    sub to_string{
	my ($self) = @_;
	join "\n","word,body",map { qq($_,"$self->{$_}") }
	  keys %$self;
    }
}

sub example{
    my $keyword = HatenaKeyword->new();
    $keyword->add('hoge',"foo\nbar");
    $keyword->add('hoge2');
    print $keyword->to_string,"\n";
}

my $keyword = HatenaKeyword->new();
while(<>){
    chop;
    $keyword->add("$_","$_の説明を書く");
}

print $keyword->to_string,"\n";