w3m の Local-CGI で RSSアグリゲータの RNA を使えるか試してみる
インストールと設定
Local CGI で使える用に書き換え。認証は無しにする
~/cgi-bin/rna/lib/RNA/Config.pm
my $auth_configure_cgi = 1; my $auth_clip_cgi = 1; my $main_index_page = 'index.html'; RNAClipRSSURI => $base_uri . $clip_list_rss, RNAClipHTMLURI => $base_uri . $clip_list_html, ↓ my $auth_configure_cgi = 0; my $auth_clip_cgi = 0; my $main_index_page = 'rnaindex.html'; RNAClipRSSURI => $clip_list_rss, RNAClipHTMLURI => $clip_list_html,
~/cgi-bin/rna/template/conf_clip_template
<a href="<$RNAClipRSSURI$>"><span class="file">RSS</span></a> <a href="<$RNAClipHTMLURI$>"><span class="file">HTML</span></a> ↓ <a href="file:///home/username/cgi-bin/rna/<$RNAClipRSSURI$>"><span class="file">RSS</span></a> <a href="file:///home/username/cgi-bin/rna/<$RNAClipHTMLURI$>"><span class="file">HTML</span></a>
~/cgi-bin/rna/template/rna_template
<span class="rnacategory" name="<$RNACategoryName$>" id="<$RNACategoryName$>"><$RNACategoryName$></span> ↓ <a class="rnacategory" name="<$RNACategoryName$>" id="<$RNACategoryName$>"><$RNACategoryName$></a>
~/cgi-bin/rna/plugins/sample/sample.pl
'RNAPluginSampleHTMLURI' => $view_uri . $html_file, ↓ 'RNAPluginSampleHTMLURI' => "$view_dir_name/" . $html_file,
使用感
全部 w3m 上で済むのは便利
購読しているサイトやクリップした話題を消去する操作が JavaScript に依存しているため、w3m でやろうとするとややこしくなる。
- Site を選ぶ
- URI, Title など空にして Update
- Site のリストが 0001. : - のように変わるので、それを選んで Delete
クリップを消すのも大体同じ
追記購読サイト修正用 Local-CGI
購読サイトの情報を修正する操作が JavaScript 依存なのでややこしくなる。それをちょっと楽にするための Local-CGI を作ってみた。~/cgi-bin/rna/template/conf_template を書き換える
<-- サイトリストの更新 --> <div class="rnaconfigitem">の下あたりに以下を追加する。
<form action="なんたら.cgi" method="GET" name="適当に"> <select name="select"> <option value="none"> -- select -- </option> <$__RNAUpdateSiteListOptions__$> </select> <input type="submit" alt="Set" /> </form>
~/cgi-bin/ に置くスクリプト "なんたら.cgi"
#!/usr/bin/perl -w use strict; use lib qw(rna/lib rna/extlib); use RNA::RSS; use Encode; my $home=$ENV{"HOME"}; my $tmppreform="$home/cgi-bin/tmppreform"; my $sitelist="rna/site.rdf"; open(CONF,"< $home/.w3m/config") or die "Can't open w3m config file"; my $todayspreform="~/.w3m/pre_form"; while (<CONF>) { if($_ =~ /^pre_form_file (.*)/){ $todayspreform=$1; } } close CONF; my $url = $ENV{"QUERY_STRING"}; $url =~ s/select=(.*)/$1/; $url =~ s/%([0-9a-f][0-9a-f])/pack("C",hex($1))/egi; my $e_url = RNA::RSS::html_encode($url); my $list_rss = new RNA::RSS; $list_rss->parsefile($sitelist); my $i = &getnumber($e_url); sub getnumber { my $uri = shift; my $listnum = @{$list_rss->{items}}; for(my $i=0; $i < $listnum; $i++) { if($list_rss->{items}[$i]->{link} eq $uri) { return $i; } } return 0; } my $link = $url; my $title = &toeuc($list_rss->{items}[$i]->{title}); my $description = &toeuc($list_rss->{items}[$i]->{description}); my $creator = &toeuc($list_rss->{items}[$i]->{dc}->{creator}); my $subject = &toeuc($list_rss->{items}[$i]->{dc}->{subject}); sub toeuc { my $from = shift; Encode::from_to($from,'UTF8','EUC-JP'); return $from; } open(FH, ">$tmppreform") or die "Can't open temporary pre_form"; print FH <<"END"; url file:///cgi-bin/rna-conf.cgi? form update_site_list file:///cgi-bin/rna-conf.cgi text link $link text title $title text description $description text creator $creator text subject $subject END close FH; chmod 0600, $tmppreform; print <<"END"; w3m-control: SET_OPTION pre_form_file=$tmppreform w3m-control: GOTO file:///cgi-bin/rna-conf.cgi? w3m-control: DELETE_PREVBUF w3m-control: SET_OPTION pre_form_file=$todayspreform END