ITは遊び

毎日パソコンのことばかり考えてる

オンラインブックマークスクリプト 74th Bookmark

ネットにさえ繋がっていれば利用できるブックマークが欲しかった

多くのブラウザを、多くのパソコンで使うようになってから、ブックマークの共有が問題になっていた。オンラインブックマークのようなサービスであれば、既にはてなブックマークと言う物があるが、あれは既にウェブページに対するニコニコ動画(コメント環境)的な意味合いが強くなっているので、どうも実用にはむかない。

さらに、ブックマークたるもの、検索機能は無くても良いから多段カテゴリ機能は欲しかった。それも、カテゴリを開くたびに逐一ページが変わるのではなく、JavaScriptなんかでサクサク動いて欲しかった。

ということで、昨晩作ってみた。

ポチエスを見習って、URL入力はテキストベースに

関連づけで、ポチエスを使ってみる - ITで遊ぶ

以前ポチエスで設定ファイルをテキストファイルで書いてみて、テキストファイルで設定できることの便利さを痛感したため、このスクリプトもそのようにした。

http://www.google.co.jp/ Google
http://mail.google.co.jp/ Gmail

*俺関係
http://74street.ddo.jp/ 74番通り
http://d.hatena.ne.jp/j74th/ パソコンの使い方を日夜考えてる
**自宅サーバ
http://74street.ddo.jp/wiki/ 74th wiki
http://74street.ddo.jp/74thbbs/74th/74thbbs.html 掲示板

*友人サイト
**文芸部
http://d.hatena.ne.jp/tgi/ ぶたごや
http://fugudoku.blog41.fc2.com/ 河豚の気ままな読書館
http://d.hatena.ne.jp/strains-e/ 「鳥たちはまた飛んだ」
http://d.hatena.ne.jp/suesawa/ 魔界日和。
http://d.hatena.ne.jp/midsuki/ midsukiの日記
**高校
http://www11.plala.or.jp/train_pokeka/ silent shimmer.....
http://heartrium.petit.cc/ heartrium
***休止中?
http://piecewell18.web.fc2.com/ Piece Well 18
http://www2.pf-x.net/~chilly-act/ 塵芥[chilly-act]

このように、多段カテゴリを設けたかったので、"*"の数を増やすことで対応した。この設定ファイルの表示例はこちら。このサクサク感は一度使ってみて欲しい。

http://74street.ddo.jp/74thbookmark/] ←試しにおいてみた

f:id:j74th:20080403104625j:image

早速、ブラウザのホームページをこのブックマークにした。昨日の「多ウィンドウブラウザ」化と合わて、新しいウィンドウを開くとすぐお気に入りが表示される形になって便利になる。

[多ウィンドウブラウザに求めるもの - ITで遊ぶ

スクリプトはたったの97行

一晩で書いた単純なスクリプトなので、PHPライセンス扱いで、ここにおいておきます。

<?php
$fp = fopen('./bookmark.dat','r');
$bookmark = array();
$bookmark[0]=array();
$refere = array();
$refere[0]=0;
$category = array();
$j=0;
$depth=0;
while( $line = fgets($fp) ){
   if( mb_ereg('^(\*+)(.+)$',$line,$result) ){
      $j++;
      $depth = strlen($result[1]);
      $refere[$depth]=$j;
      $category[$j][0]=$refere[$depth-1];
      $category[$j][1]=trim($result[2]);
      $category[$j][2]=$depth;
      $bookmark[$j]=array();
   }else if( mb_ereg('^(\S+) (.+)$',$line,$result)){
      $link[0]=$result[1];
      $link[1]=trim($result[2]);
      array_push($bookmark[$j],$link);
   }
}
?>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<script language="JavaScript">
var beforecategory='m0';
function OpenCategory(category) {
   if( document.all['c'+category] ){
      if( document.all['c'+category].style.display == "none" ){
         if( document.all['b'+category] ){
            document.all['b'+beforecategory].style.display = "none";
            document.all['b'+category].style.display = "block";
            beforecategory=category;
         }
         document.all['c'+category].style.display = "block";
      }else{
         document.all['c'+category].style.display = "none";
      }
   }else{
      if( document.all['b'+category] ){
         document.all['b'+beforecategory].style.display = "none";
         document.all['b'+category].style.display = "block";
         beforecategory=category;
      }
   }
}
</script>
</head><body>
<table width="100%"><tr><td width="40%" align="left" valign="top">
<?php
echo("<a href=\"javaScript:OpenCategory('m0')\">トップ</a><br />\n");
$see=1;
$mark='';
for($i=1;isset($category[$i]);$i++){
   if($category[$i][2] > $see){
      echo("<div id=\"cm".$category[$i][0]."\" style=\"display:none\">\n");
      $mark='';
      for($j=1;$j<$category[$i][2];$j++){
         $mark.='*';
      }
      $see = $category[$i][2];
   }else{
      for($j=0;$j<($see - $category[$i][2]);$j++){
         echo("</div>\n");
      }
      $mark='';
      for($j=1;$j<$category[$i][2];$j++){
         $mark.='*';
      }
      $see = $category[$i][2];
   }
   echo($mark."<a href=\"javaScript:OpenCategory('m".$i."')\">".$category[$i][1]."</a><br />\n");
}
?>
</td><td align="left" valign="top">
<?php
for($i=0;isset($bookmark[$i]);$i++){
   if(count($bookmark[$i])!=0){
      if($i==0){
         echo("<div id=\"bm0\" style=\"display:block\">\n");
      }else{
         echo("<div id=\"bm".$i."\" style=\"display:none\">\n");
      }
      foreach($bookmark[$i] as $one){
         echo('<a href="'.$one[0].'">'.$one[1]."</a><br />\n");
      }
      echo("</div>\n");
   }
}
?>
</td></table>
</body></html>

今後追加できたらいいなぁって事

  • 利便性を失わない程度に認証機能を付加。人に見られたくないブックマークもあるでしょう。
  • ブラウザのホームページとしての機能の拡充。検索窓は欲しい。できれば、RSSリーダーも欲しい。