Home > 2009年05月

2009年05月

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • Comments (Close): -
  • TrackBack (Close): -

Amazonの URL

  • 2009-05-27 (Wed)
  • web

Amazonの URLは種類が多いから、自分が使いそうなものだけをメモした。

Amazonの商品の URL

短い URL
http://www.amazon.co.jp/dp/(ASINコード)/
(例)http://www.amazon.co.jp/dp/B00000BKI1/
アソシエイトIDをつけた URL
よく見かける URL
http://www.amazon.co.jp/exec/obidos/ASIN/(ASINコード)/(アソシエイトID)/ref=nosim/
(例)http://www.amazon.co.jp/exec/obidos/ASIN/B00013EV1A/karafuto50-22/ref=nosim/
Amazonで作成した URL
http://www.amazon.co.jp/dp/(ASINコード)?tag=(アソシエイトID)&camp=XXXX&creative=XXXX&linkCode=(リンクタイプ?)&creativeASIN=(ASINコード)&adid=XXXXXXXXXXXXXXXXXXXX&
(例)http://www.amazon.co.jp/dp/B00013EV1A?tag=karafuto50-22&camp=1027&creative=7407&linkCode=as4&creativeASIN=B00013EV1A&adid=09RMHWVE7HEJE016NEZH&

リンクの動作確認ツール(Amazon アソシエイト・プログラムにログインする必要がある。)で試してみるとどちらでもいいようだ。

Amazonの商品画像の URL

http://images.amazon.com/images/P/(ASINコード).(国別コード).(画像の形式).jpg

日本の国別コードは 09、アメリカとカナダは 01。(?)

画像の形式はいろいろ指定できる(傾き、影、割引率、その他)が、ここでは画像のサイズだけ。省略するとMZZZZZZZの指定になる。小さい方から、THUMBZZZ、TZZZZZZZ、MZZZZZZZ、LZZZZZZZ。

THUMBZZZTZZZZZZZMZZZZZZZ

左から THUMBZZZ、TZZZZZZZ、MZZZZZZZ(http://images.amazon.com/images/P/B001OIZAL6.09.THUMBZZZ.jpg、http://images.amazon.com/images/P/B001OIZAL6.09.TZZZZZZZ.jpg、http://images.amazon.com/images/P/B001OIZAL6.09.MZZZZZZZ.jpg)。

複数の画像がある時

http://images.amazon.com/images/P/(ASINコード).(国別コード).(追加コード).(画像の形式).jpg

追加コードに番号を入れる。省略すると 'MAIN'を指定したことになる。(追加コードにはアングルの指定もある。)

  • 書籍の場合は IN + 数字。(IN01, IN02, IN03, IN04, IN05...)
  • 書籍以外は PT + 数字。(PT01, PT02, PT03, PT04, PT05...)

MAINPT01PT02PT03

左から MAIN、PT01、PT02、PT03(http://images.amazon.com/images/P/B0016AN68G.09.MAIN.MZZZZZZZ.jpg、http://images.amazon.com/images/P/B0016AN68G.09.PT01.MZZZZZZZ.jpg、http://images.amazon.com/images/P/B0016AN68G.09.PT02.MZZZZZZZ.jpg、http://images.amazon.com/images/P/B0016AN68G.09.PT03.MZZZZZZZ.jpg)。

複数の画像(その他のイメージ)がある音楽、本は少ないから、使わないかな。

参考にしたページ

Google AJAX Language APIを読みこむブックマークレット

Karafuto Blog - Google AJAX Language APIで翻訳する User JavaScriptではRESTful形式を使ったが、今回は Google AJAX Language APIを読みこみ、作成されたオブジェクトのメソッドを使う。RESTful形式よりは少し面倒だが、やれることは多い。

Google AJAX Language APIを読みこみ、使う手順

  1. Google AJAX API スクリプトを読みこむ。
    http://www.google.com/jsapi?callback=(関数名)
  2. 1で指定したコールバック関数で、googleオブジェクトの loadメソッドを使い、Google AJAX Language APIを読みこむ。
    google.load('language', '1', {'callback': (関数)});
  3. 2のコールバック関数で、languageオブジェクト(google.language)のメソッドを実行する。例えば、translateメソッドで文章を翻訳する。
    google.language.translate('こんにちは', 'ja', 'en', function (result){ alert(result.translation);});

Google AJAX Language APIで使える言語を列挙するブックマークレット

Google AJAX Language APIで使える言語を列挙するブックマークレット

ブックマークレットを実行すると、Google AJAX Language APIで使える言語を警告ダイアログに表示する。言語名の後の括弧に入っているのは、Google AJAX Language APIで言語を指定する時に使うパラメータ。

Google AJAX Language APIで使える言語を列挙するブックマークレット

ブックマークレットの内容

javascript:(function() {
  // Google AJAX Language APIの読みこみ
  loadLanguage = function() {
    google.load('language', '1', {
      'callback': enumerateLanguage
    });
  };
  // 言語を列挙
  enumerateLanguage = function() {
    var list = '';
    var num = 0;
    for (var i in google.language.Languages) {
      if (i != 'UNKNOWN') {
        num++;
        list += i + ' (' + google.language.Languages[i] + '), ';
      }
    }
    list = list.substring(0, list.length - 2) + '\n\n' + num;
    alert(list);
  };

  // Google AJAX APIの読みこみ
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = 'http://www.google.com/jsapi?callback=loadLanguage';
  document.body.appendChild(script);
})();

google.language.Languagesは、Google AJAX Language APIで扱うことができる言語の名前と言語のパラメータをプロパティと値にしたオブジェクト。

選択した文字列の言語を判定するブックマークレット

選択した文字列の言語を判定するブックマークレット

文字列を選択して、ブックマークレットを実行すると、Google AJAX Language APIが特定した言語と信頼度を警告ダイアログに表示する。

選択した文字列の言語を判定するブックマークレット

ブックマークレットの内容

javascript:(function() {
  // Google AJAX Language APIの読みこみ
  loadLanguage = function() {
    google.load('language', '1', {
      'callback': googleDetect
    });
  };
  // 言語を判定
  googleDetect = function() {
    google.language.detect(text, function(result) {
      if (result.language){
        for (var i in google.language.Languages) {
          var lang = result.language;
          if (result.language == google.language.Languages[i]) {
            lang = i;
            break;
          }
        }
        var percent = result.confidence < 0.01 ? result.confidence * 100 : Math.round(result.confidence * 100);
        alert('テキストの言語は、' + lang + 'です。\n判定の信頼度は、' + percent + '%です。');
      } else {
        alert('テキストの言語を判定できませんでした。');
      }
    })
  };

  var text = window.getSelection ? window.getSelection().toString() : document.selection.createRange().text;
  if (! text){
    alert('文字列を選択してください');
    return;
  }
  if (text.length > 200){
    text = text.substring(0, 200);
  }
  // Google AJAX APIの読みこみ
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = 'http://www.google.com/jsapi?callback=loadLanguage';
    document.body.appendChild(script);
})();

google.language.detectは、文字列の言語を判定するメソッド。コールバック関数の引数に結果の入ったオブジェクトを返す。

google.language.detect(文字列, 関数)

返すオブジェクト
{
    status: {
        code: (ステータスコード)
    }
    language: (特定した言語)
    isReliable: (判定が信頼できるか表す真偽値、信頼できるなら true)
    confidence: (判定の信頼度を 0~1.0の数字で表す)
}
    

参考にしたページ

フォームにスタイルを適用

YouTube

OperaYouTubeを開いたら、上のようにページに白い四角が出てきて、画像が壊れたのかと思ったが、Operaの設定 > コンテンツ > スタイルオプション > 表示設定(または、サイトごとの設定 > 表示設定)の「フォームにスタイルを適用」を有効にしたら直った。

それだけのことなんだけど、YouTubeのロゴがボタン要素だとは思っていなかったので意表をつかれた。ボタン要素がボタン要素でなくても良さそうな所まで使われているかと思うと、検索のボタンは span要素なんだよな。

Google AJAX Language APIで翻訳する User JavaScript

googleajaxlanguageapi_translate.js

googleajaxlanguageapi_translate.js

Google AJAX Language APIを利用して翻訳する User JavaScriptを作ってみた。Operaのコンテキストメニューから User JavaScriptを実行して、Google AJAX Language APIから翻訳した文字列を受け取り、表示する。

Google AJAX Language API

Google AJAX Language APIで日本語に翻訳できそうな言語の種類は、Supported Language Translation Pairsあたりに書いてある。(日本語を含めて41言語あるが、ごく一部しか試していない。なんかどんどん増えているようだ。)

Google AJAX Language APIは、文字列の言語(翻訳元言語)を指定しなくても、言語を自動的に判別して、翻訳することができる。

Google AJAX Language APIは、RESTful形式が用意されている。RESTful形式の JSONPは、外部ライブラリーを読みこむより簡単に利用できる。

JSONPリクエスト URL
http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=(文字列)&langpair=(文字列の言語)%7C(翻訳先言語)&callback=(関数名)&context=(関数に渡される第一引数)

パラメータの「文字列の言語」(翻訳元の言語)を省略した時は、Google AJAX Language APIが文字列の言語を自動的に特定する。パラメータの「context」は、自分が設定した値をコールバック関数に渡すことができる。contextは省略可能。

http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=let%20it%20be&langpair=%7Cja&callback=func
JSONPデータ
(関数名)({
    "responseData": {
        "translatedText":(翻訳した文字列),
        "detectedSourceLanguage":(特定した文字列の言語。文字列の言語を指定した時は存在しない。)
    },
     "responseDetails": (エラーメッセージ、成功は null),
     "responseStatus": (ステータスコード、成功は 200)
})
パラメータに contextをつけた例
http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=i%20am%20not%20good&langpair=%7Cja&callback=func&context=argument
JSONPデータ
(関数名)((contextの値),
{
    "translatedText":(翻訳した文字列)
    ,"detectedSourceLanguage":(特定した文字列の言語。文字列の言語の指定がない場合だけ。)
},
 (ステータスコード),
 (エラーメッセージ),
 200(?)
)

Google AJAX Language APIで翻訳する User JavaScript

選択した文字列を Google AJAX Language APIに送り、返ってきた指定した言語に翻訳した文字列を受け取り、表示する。

  1. 文字列が選択されていなければ、何もしないで終わり。
  2. Google AJAX Language APIから空のデータしか返ってこなければ、「翻訳に失敗しました」と表示して、終わり。
  3. Google AJAX Language APIからデータが返ってくれば、左上に表示する。
  4. マウスを動かすと、表示を消す。
operaオブジェクトの GoogleAJAXTranslateメソッド

opera.GoogleAJAXTranslate(翻訳先言語, 文字列の言語, 原文表示)

  • 第一引数の翻訳先言語を省略した時は日本語(ja)に設定する。
  • 第二引数の文字列の言語(翻訳元言語)を省略した時は、Google AJAX Language APIが文字列の言語を自動的に判別する。
  • 第三引数の原文表示を省略した時は、原文(元の文章)を表示しない。原文を表示したい時は、1を設定する。

Google AJAX Language APIに指定する言語のパラメータは Languages Enum に書いてある。すべての言語が翻訳できるわけではない。日本語に翻訳できそうな言語は、Supported Language Translation Pairsあたりに書いてある。

日本語に翻訳
opera.GoogleAJAXTranslate('ja')
英語から日本語に翻訳
opera.GoogleAJAXTranslate('ja', 'en')
日本語に翻訳、原文表示
opera.GoogleAJAXTranslate('ja', '', 1)
ダウンロード

googleajaxlanguageapi_translate.js

使い方

上のスクリプト(googleajaxlanguageapi_translate.js)をダウンロードして、User JavaScriptを保存するフォルダにコピーする。

Operaのメニューファイルの[Hotclick Popup Menu]に下のように書き足す。(Operaを再起動。)

Item, "Google AJAXで日本語に翻訳" = "Go to page, "javascript:opera.GoogleAJAXTranslate('ja')""
Item, "Google AJAXで英語に翻訳" = "Go to page, "javascript:opera.GoogleAJAXTranslate('en')""

Item, "Google AJAXで英語から日本語に翻訳" = "Go to page, "javascript:opera.GoogleAJAXTranslate('ja','en')""
Item, "Google AJAXで中国語から日本語に翻訳" = "Go to page, "javascript:opera.GoogleAJAXTranslate('ja','zh')""

Item, "Google AJAXで日本語に翻訳(原文表示)" = "Go to page, "javascript:opera.GoogleAJAXTranslate('ja','',1)""
Item, "Google AJAXで英語から日本語に翻訳(原文表示)" = "Go to page, "javascript:opera.GoogleAJAXTranslate('ja','en',1)""

翻訳したい文字列を選択して、Operaのコンテキストメニューから上に書いたものを選べば、User JavaScriptが呼び出されて、翻訳した結果が左上に表示される。表示されたものは、マウスを動かすと消える。

注意

翻訳の精度が低い...。

Google AJAX Language APIに送る文字数が長いとエラーになるから、送る文字数を 1000語までにした。それ以上選択していても、先頭から 1000語で切る。2バイト文字の場合は URIエンコードする必要があるため、それよりずっと短くしなければならない。URIエンコードした文字列を約 1900語以下にしている。そのため、元の文字数は 200と少ししか送れない。

参考にしたページ

Home > 2009年05月

おまかせリンク(R)
全記事表示リンク
Search
Meta
Feeds

Page Top

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。