2011/04/23

付箋紙アップレットのデータを抽出する

Ubuntu Desktopに標準でインストールされるアップレット"付箋紙"(Sticky Notes)のデータは、~/.gnome2/stickynotes_applet にXML形式で保存されている。

これを抽出して一覧で出力するスクリプトを作った。

こんな感じ。

$ list-stickynotes
2011年04月20日 猫の餌を買う
2011年04月21日 4/23 食事会 大宮 12:00


1つの付箋が"タイトル<タブ文字>内容"の1行で出力される。
付箋の内容に改行がある場合はスペースに変換。エンコーディングはUTF8。
"付箋紙"は内容を記述してから10秒ぐらいしないと、ファイルに保存されないことに注意。

list-stickynotes:

#!/usr/bin/perl
package StickyNotesHandler;
use base qw(XML::SAX::Base);

my $elm;

sub start_element {
    my ($self, $data) = @_;
    $elm = $data->{Name};
    return if ($elm ne 'note');
    my $na = $data->{Attributes};
    my $t = $na->{'{}title'}->{Value};
    print "${t}\t";
}

sub end_element {
    return if ($elm ne 'note');
    print "\n";
    $elm = undef;
}

sub characters {
    my ($self, $data) = @_;
    return if ($elm ne 'note');
    my $c = $data->{Data};
    if ($c eq "\n") { $c = ' '; }
    print "$c";
}

#-----------------------------------
package main;

use HTML::Entities;
use XML::SAX;
use Env qw(HOME);

binmode STDOUT => "utf8";

my $fi = "${HOME}/.gnome2/stickynotes_applet";
my $p = XML::SAX::ParserFactory->parser(
    Handler => StickyNotesHandler->new);

$p->parse_uri($fi);

0 件のコメント:

コメントを投稿