☆bookmark.htm(bookmarks.html)をWebkit用に変換

IEのお気に入りを[ファイル]メニューからエクスポートするとbookmark.htmができます。
このファイル、"<!DOCTYPE NETSCAPE-Bookmark-file-1>"と宣言されてますが、なんだか良くわからない規格です。
"<html>"も"<head>"も"<body>"もない、"<p>"や"<DT>"は閉じていませんし、
タグは大文字だったり小文字だったりします。

それでも文字コードさえ指定しなおせばWebkitベースのブラウザでも一応表示できます。べったり左寄せになりますが。
(短い間ですがMidoriをメインで使っていました。起動時間が改善された気がするので最近はFirefox3.6メインです。)
Operaも同じような状態です。

そこで下記のようなperlのスクリプトを使って変換をしてやります。(conv_bm.pl)
CSSを使ってレイアウトを整えるのが主目的です。<DL>や<DT>は使ったほうが良いのかもしれませんが、よく理解していないので取り除きました。
<A> タグは小文字にすべきかもしれませんが、やってません。
Firefoxから出力したBookmarkも扱えるように文字コード変換はnkfに任せてしまいます。
nkfが入っていない場合は sudo apt-get install nkf で導入します。
(Firefox 3.6はWindows版もbookmarks.htmlをUTF-8でエクスポートするようです。)

WindowsのIEから出力したbookmark.htmの場合は
nkf -w8 bookmark.htm | ./conv_bm.pl > bookmarks-normal.html

Firefoxから出力したbookmark.htmの場合は
./conv_bm.pl bookmarks.html | bookmarks-normal.html

のようにして使用します。

conv_bm.pl
#!/usr/bin/perl

while(<>){
    last if m#<TITLE>.*</TITLE>#i;
}

print <<EOF;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
div {
    margin-top:0.5em;
    margin-bottom:1.0em;
    margin-left:2.0em;
}
h3 {
    margin:0.0em;
    margin-top:1.0em;
}
</style>
<title>Bookmarks</title>
</head>
<body>
EOF

while(<>){
    s#<DL><p>#<div>#ig;
    s#</DL><p>#</div>#ig;
    s#<DT>##g;
    s#</A>#</A><br />#ig;
    print;
}

print <<EOF;
</body>
</html>
EOF

0 件のコメント:

コメントを投稿