Adobeサポートデータベースの旧URLから新URLにジャンプするGreasemonkey

最終更新日:2008/03/13


お知らせ:
アドビシステムズでは、サポート情報検索ページを新しいページに一新いたしました。以前ご利用いただいていたサポート文書のURLにアクセスした場合、一旦こちらのページへ案内されます。下記のリンクより新しい検索画面に移動し、その検索ページから検索機能をご利用ください。
旧URLにアクセスすると30秒後には問答無用で新検索画面に転送されるようになってしまった。
文書番号は変わんないのに全部検索画面トップへ。

……なんじゃあそりゃあああ!!

文書番号がわかれば 検索画面に入力→検索でひっかかる って手順が使えるけど、このご時世ありえないのでわ……

というわけで

むしゃくしゃしてぐりもん書いた。反省などするわけがない。
でも見よう見まねなので間違ってたらごめんなさい。Firefox+Greasemonkey入れてる人しか使えなくてごめんなさい。

追記:添削してもらいました。最初に自分で書いたのも記録としてここに残しておきたいので、添削後の最新版についてはこの記事の一番下を参照してください。 ↓最新版へ

// ==UserScript==
// @name           Adobe FAQ Redirector
// @namespace      http://d.hatena.ne.jp/chalcedony_htn/
// @description    Redirector for Adobe Support Database (Japanese)
// @include        http://www.adobe.com/jp/support/announcement/*
// @include        http://support.adobe.co.jp/faq/faq/*
// ==/UserScript==

(function() {
  var this_url = location.href;
  this_url.match(/\?(\d+)\+/);
  var doc_number = RegExp.$1;
  var new_url = "http://www.adobe.com/jp/support/kb/ts/" + doc_number.substr(0,3) + "/ts_" + doc_number + "_ja-jp.html"
  if(location.href != new_url) { location.href = new_url; }
})();

Windows版Firefox3.0.6、Greasemonkey0.8.20090123.1で確認。
今はhttp://support.adobe.co.jp/faq/faq/(ほにゃらら)にアクセスするとhttp://www.adobe.com/jp/support/announcement/(ほにゃらら)にリダイレクトされるけど、一応古いのも対象に入れておいた。
こういうときRedirectって使っていいんだっけ?

ちなみに、URLの仕様は

たとえばこんなのを見たいとして
[227421]Illustrator 8.0 以前で作成した EPS ファイルを InDesign 文書に配置するとフォントが他の書体に置き換わる

旧URLはこれ。
http://support.adobe.co.jp/faq/faq/qadoc.sv?227421+002
http://www.adobe.com/jp/support/announcement/?227421+002(現在のリダイレクト先)
新URLはこうなる。
http://www.adobe.com/jp/support/kb/ts/227/ts_227421_ja-jp.html

数字の上3桁でなにやら分けているみたい……ていうか、前の002ってなんだったんだろ。

あ、追記

うpした直後にこんな情報を発見。
新アドビサポート情報のドキュメントへのショートカット - DTP+印刷営業メモ

新URLへの転送用URL、よりシンプルなのがあったのね。
こっちにすればよかったかな。でもあんまり飛んだり跳ねたりするのもなんだしな。

さらに追記

Greasemonkey特有のなにかを使ったりはしていないので、OperaとかChromeとかでも似たようなこと出来るんじゃないかと思った。

さらにさらに追記

ArcCosine先生が添削してくれました。あざーす!!


この程度だったら、if文とかいらないし、変数も減らせるしって感じで。
現在のurlを調べて分岐してる部分は@exclude使えば消せる。それから、文書番号取り出したいだけなら今のurlを変数に入れておく必要もなかったですね。
もうひとつ、location.hrefに代入すると履歴が残ってしまうので、location.replace()で移動するように変更されてます。なるほどー。

CodeReposにもうpしてもらいました。↓飛んだ先に最新版インストール用のリンクがあります。
http://coderepos.org/share/browser/lang/javascript/userscripts/adobe_faq_redirector.user.js

夜中にテンション上がりました。Web楽しいなー。

さらにさらにさらに追記(2009.03.09)

不具合があったので修正しました。
ver1.1だと、http://www.adobe.com/jp/support/announcement/ のトップなど文書番号が含まれてない場合でもジャンプしようとしてしまいます。なので、FAQ(TechNoteって名前なのかな……)のパターンにマッチするときだけ飛ぶように変更。

// ==UserScript==
// @name           Adobe FAQ Redirector
// @namespace      http://d.hatena.ne.jp/chalcedony_htn/
// @description    Redirector for Adobe Support Database (Japanese)
// @include        http://www.adobe.com/jp/support/announcement/*
// @include        http://support.adobe.co.jp/faq/faq/*
// @exclude        http://www.adobe.com/jp/kb/*
// @version        1.2
// ==/UserScript==
(function() {
  if(location.href.match(/\?(\d{6})\+/)) {
    var doc_number = RegExp.$1;
    location.replace("http://www.adobe.com/jp/support/kb/ts/" + doc_number.substr(0,3) + "/ts_" + doc_number + "_ja-jp.html");
  }
})();

ついでに、文書番号が6桁かどうかもちゃんと見ることにしました。
Firefox3で期待通り動くのを確認。

CodeReposには代理うpしてもらったので、どうするかちょっと悩む。commit権とやらをもらって頑張る機会なのかもしれないけど、なにしろ見よう見まねもおぼつかないくらいだからね……。

さらにさらにさらにさらに追記(2009.03.10)

CodeReposのほうで再び添削してもらいました! ありがたや。
改めて最新版へのリンクを張っておきます。
http://coderepos.org/share/browser/lang/javascript/userscripts/adobe_faq_redirector.user.js
Cooooool!!

サポートデータベースには実は2種類? あって、文書番号が6桁の技術文書と4桁のサポート文書に分かれてます。
このぐりもんで対応してるのは6桁のほう。4桁のほうも同時に対応したいところなんだけど、リダイレクトされる先のURLに文書番号が含まれないなどでちょいと困った。どうすべきか考え中です。
もし今度修正したときは別エントリにしますw

あと、いろいろ添削してもらって新たに覚えたことがあるので、それもあとで改めて書こうと思います。
アウトプットしてみてよかったなあ。としみじみ。

さらに×5追記(2009.03.13)(最新版はここから!

史上最高ブクマ数*1を更新したので、別エントリにするのも何だなと思い悩んだあげくにこのまま追記します。
文書番号6桁、4桁、3桁のURLに対応しました。

// ==UserScript==
// @name           Adobe FAQ Redirector
// @namespace      http://d.hatena.ne.jp/chalcedony_htn/
// @description    Redirector for Adobe Support Database (Japanese)
// @include        http://support.adobe.co.jp/faq/faq/*?*+*
// @include        http://www.adobe.com/jp/support/announcement/?*+*
// @exclude        http://www.adobe.com/jp/kb/*
// @version        1.3
// ==/UserScript==
(function() {
  var m = location.search.match(/^\?(\d+)\+/);
  if (!m) return;
  var doc_number = m[1];
  switch (doc_number.length) {
    case 6:
      location.replace("http://www.adobe.com/jp/support/kb/ts/" + doc_number.substr(0, 3) + "/ts_" + doc_number + "_ja-jp.html");
      break;
    case 4:
      location.replace("http://www.adobe.com/jp/support/kb/cs/" + doc_number.substr(0, 1) + "/cs_" + doc_number + "_ja-jp.html");
      break;
    case 3:
      location.replace("http://www.adobe.com/jp/support/kb/cs/" + "000" + "/cs_" + doc_number + "_ja-jp.html");
      break;
  }
})();

たぶん、これで最後。

http://support.adobe.co.jp/faq/faq/qadoc.sv?7318+001 → http://www.adobe.com/jp/support/kb/cs/7/cs_7318_ja-jp.html
http://support.adobe.co.jp/faq/faq/qadoc.sv?262+001 → http://www.adobe.com/jp/support/kb/cs/000/cs_262_ja-jp.html

という感じになるみたいです。……なんだこの000は。

CodeReposのほうにも反映してもらいました(ArcCosine師匠ありがとう)。こちらもご利用ください。
http://coderepos.org/share/browser/lang/javascript/userscripts/adobe_faq_redirector.user.js

*1:6だけど……