Delicious BookmarkのエクスポートをEvernoteへ
Delicious BookmarkでエクスポートしたファイルをEvernoteにとりこむことにしました。
本当のところはJSON形式のファイルに加工しなおして再利用してみようかとおもったんですが、Evernoteでもいいかとおもってそのようにすることとしました。
取り込むときにDeliciousのエクスポートファイルはHTML形式ですが、Netscape Bookmark File Formatにより、そのままHTMLとして出力したものだとちょっと物足りないものがあります。
そこで、一旦落としてきたエクスポートファイルを以下のように加工したものをEvernoteに保存しています。
Perlで加工する
Web::Scraperを使ってタグと登録時刻の情報を追加して以下のようなかんじに。
時間の情報を取り込もうとしていたら、add_dateという属性の値がエポック秒というものらしくて、これを変換するのにDateTimeを使う事にしました。
#!/usr/bin/perl -w use strict; use Web::Scraper; use URI; use CGI; use utf8; use Encode; use DateTime; print CGI->header(-charset=>'utf-8', -type=>'text/html'); my $url = "http://localhost/cgi-bin/bookmark.html"; my $scraper = scraper { process "dt>a", 'results[]' => { 'link' => '@href' , 'title' => 'TEXT' , 'tags' => '@tags' , 'time' =>'@add_date' , }; }; my $res = $scraper->scrape( URI->new($url)); my $header = <<"HERE"; <!DOCTYPE html> <meta charset="utf-8"> <title>Bookmarks</title> HERE open (OUT, ">bookmarklist.html"); print OUT $header; print OUT '<ul>'; for my $bookmark (@{$res->{results}}) { print OUT '<li><a href="' . $bookmark->{link}. '">'; print OUT encode('utf-8', $bookmark->{title}) .'</a>'; print OUT ' : ' . $bookmark->{tags} . ' : '; print OUT DateTime->from_epoch(epoch => $bookmark->{time} , time_zone => 'local' ); print OUT '</li>' . "\n"; } print OUT '</ul>'; print $header; print '<P><A HREF="bookmarklist.html">TEST</A></P>';
mtVicunaSimpleでSitemapテンプレートのタグに関するエラーの件
つかわせてもらってるmtVicuna SimpleでSiteMap 0.9のところで、テンプレートタグのエラーがでていたのでちょっと回避技をやってみました。
エラーのメッセージは、<MTGoogleSitemapsPing>は存在しません(3行目)
といったものです。
これはそのタグを提供する、MTGoogleSitemapsPingというプラグイン自体がないもので、MTIfタグでタグの値の有無の判断がプラグインがないためできないみたいです。
以下のMTQでやりとりがありまして、プラグインをいれるというのが解決策のようです。
それでは、プラグインは使わないけどメッセージが鬱陶しいので出さないようにするようなときの改造です。
理屈からいうと、知らないタグだといわれたタグをダミーで登録してしまうというものです。バッドノウハウなのですけども、ローカル環境での作業ならこれでも十分な感じです。(実際にプラグインをいれてテンプレート更新すると無駄にPing送信されてしまうので)
config.yamlの修正
mtVicuna Simpleはテーマセットですが、プラグインによって提供されています。その設定はconfig.yamlにほとんどが集約されています。
tags:
function:のところに、以下を追加してダミーのファンクションタグとして登録しておきます。修正には空白のインデント位置に注意します。
GoogleSitemapsPing: $mtVicunaSimple::mtVicunaSimple::Plugin::_google_site_map_ping
これだけでタグが登録されていちおうはテンプレート編集でエラーメッセージはでなくなります。
きちんとやろうとすれば、_google_site_map_pingのサブルーチンをvicunaのPlugin.pmにでもおけばいいのですが、ここにGoogleにPing送信するコードがあればそのような動作も可能でしょう。しかしながらテンプレートセットがそこまでサポートするほどでもないのかなとは思っています(別のプラグインが必要だったとしてバンドルするのにライセンスとかも考えないといけないだろうし)。あるプラグインがはいっているかどうかの判断が容易であればいいような気もしますね