« Google Deskbarのプラグイン公開! | メイン | 続々:Google Deskbarで遊んでみる »

2004年12月30日 (木)

続:Google Deskbarで遊んでみる



 先ほどとは違って、あまり危なくない上に、そこそこ使える物を……ということで。

 とりあえずはC#のソースを。前回よりもさらに@ITの記事を参考にしています。例によって、ネストは全角スペースで行っております。


using System;
using System.Text;
using System.IO;
using System.Web;
using Google.Desktop;

namespace Kbukulo
{

 /// <summary>
 /// HTML生成クラス……
 /// </summary>
 public class HTMLcoder
 {
  public static string makeHTML(string keyword, string haURL, string wkURL)
  {
   string template = @"
<html>
<head>
<meta http-equiv='content-type' content='text/html; charset=SHIFT_JIS'>
<title>単語意味検索:「{0}」</title>
</head>
<body style='background-color:#EEEEEE'>
<br />
<br />
<h1 style='font-size: 120%'>単語意味検索:「{0}」</h1>
<ul>
<li><a href='{1}'>はてなキーワード</a></li>
<li><a href='{2}'>Wikipedia</a></li>
</ul>
<br />
</body>
</html>";

   return String.Format(template, keyword, haURL, wkURL);
  }
 }

 /// <summary>
 /// Kbukulo の概要の説明です。
 /// 入力された文字列をURLエンコードして、所定のURLと組み合わせる。
 /// web辞書へ直接アクセスするURLが出来たら、それを元にローカルのHTMLファイルを作成。
 /// そして、そのHTMLファイルを開く。
 /// データファイルを別に分けないとなぁ……。
 /// </summary>
 public class Kbukulo :ICustomSearch
 {
  public string Title()
  {
   //プラグイン名
   return "単語意味検索";
  }

  public OutputType GetOutputType()
  {
   //ミニviewerで開く
   return OutputType.kViewer;
  }

  public string Run(string query, OutputType browser_type)
  {
   //ImiKensaku()の戻り値を渡す
   return ImiKensaku(query);
  }

  string ImiKensaku(string query)
  {
   string keyword = query;
   //はてなとWikipediaのURIを文字列型で
   string khatena = "http://d.hatena.ne.jp/keyword/";
   string kpedia = "http://ja.wikipedia.org/wiki/";


   //URLエンコード
   string sjiskey = HttpUtility.UrlEncode(keyword, Encoding.GetEncoding(932));
   string utf8key = HttpUtility.UrlEncode(keyword);
//   string eucjpkey = HttpUtility.UrlEncode(keyword, Encoding.GetEncoding(51932));
   //はてなはShift-JIS
   //wikipediaはUTF-8
   string haURL = khatena + sjiskey;
   string wkURL = kpedia + utf8key;

   //出力用HTMLソース
   string output = HTMLcoder.makeHTML(keyword, haURL, wkURL);

   //テンポラリに.htmlを出力するためのパス指定
   string path = Path.Combine(Path.GetTempPath(), "Kbukulo.html");

   //HTML書き出し
   StreamWriter sw = new StreamWriter(path, false, Encoding.GetEncoding("Shift_JIS"));
   sw.WriteLine(output);
   sw.Close();

   //書き出したファイルへのパスを戻り値に
   return path;
  }
 }
}


 どういう動作をするかというと……サマリにも書いていますけど、入力された単語をURLエンコードして、はてなダイアリーやWikipediaのページが直接開けるようなURLを作成する、と。そして、それをリストにしたHTMLをローカルに作って開く、という仕組みです。

 ソースコード内に直接あれこれ入っているのが下品だけれど、もう少し項目を増やせば、そこそこ実用になりそうな気配はしますね。

 もしかしたらリリース版を作るかも知れません(今のところは、先のプラグインと同様に自分専用)。


トラックバック

このページのトラックバックURL:
http://www.typepad.jp/t/trackback/6878215

このページへのトラックバック一覧 続:Google Deskbarで遊んでみる:

コメント

コメントを投稿