#24-01 [PSP,RSS]RSSチャンネルを保存しているファイルの解析
抗うつ剤の副作用で土曜からずっと具合が悪かったが、今日の夕方に復活した。薬減らさないと…。
明日PSPのファームが2.70に上がると いうことで、RSSチャンネルが保存されているファイル
\PSP\SYSTEM\RSSCH\CHANNELS\CHLISTの解析をしてみた。けっこう単純だったので、外部編集を可能にするのは簡単だな。2.70で構造が 変わらなければの話だが。
PSPで登録するのが面倒なのはなんとかならないものだろうか…。
#!/usr/bin/perl
use strict;
use Jcode;
my $FILENAME = "CHLIST";
my $buffer;
my $chan_length;
my $read_length;
my $len;
open(FD, $FILENAME);
read(FD, $buffer, 8);
while (!eof(FD)) {
my ($url, $title, $desc, $copy, $image);
read(FD, $buffer, 4);
if ($buffer eq "CHAN") {
read(FD, $buffer, 4);
$chan_length = unpack("L", $buffer);
$read_length = 0;
while ($chan_length != $read_length) {
read(FD, $buffer, 4); $read_length += 4;
if ($buffer eq "URL ") {
read(FD, $buffer, 4); $read_length += 4;
$len = unpack("L", $buffer);
read(FD, $buffer, $len); $read_length += $len;
$url = $buffer;
} elsif ($buffer eq "TITL") {
read(FD, $buffer, 4); $read_length += 4;
$len = unpack("L", $buffer);
read(FD, $buffer, $len); $read_length += $len;
$title = jcode($buffer)->sjis;
} elsif ($buffer eq "DESC") {
read(FD, $buffer, 4); $read_length += 4;
$len = unpack("L", $buffer);
read(FD, $buffer, $len); $read_length += $len;
$desc = jcode($buffer)->sjis;
} elsif ($buffer eq "COPY") {
read(FD, $buffer, 4); $read_length += 4;
$len = unpack("L", $buffer);
read(FD, $buffer, $len); $read_length += $len;
$copy = jcode($buffer)->sjis;
} elsif ($buffer eq "IMAG") {
read(FD, $buffer, 4); $read_length += 4;
$len = unpack("L", $buffer);
read(FD, $buffer, $len); $read_length += $len;
$image = $buffer;
} else {
print "unknown section '$buffer'\n";
}
}
}
print "$title\n";
print "\t$url\n";
# print "$desc\n";
# print "$copy\n";
# print "$image\n";
}
close(FD);
適当にでっち上げたので、参考になるかどうかは不明。IMAGというセクションもあるのだが、未サポート。