2010年1月1日金曜日

[Greasemonkey] 千夜千冊の該当ページを開くスクリプト

連環篇になってから運営形態が変わったようで「1337夜」といった千夜千冊サイト内リンクは、公開後少したってからリンクが張られるようになったようだ。そういったリンクは連環リンクとして最後にまとめてあるし、少し待てばリンクも張られるようなのだが、それまでの繋ぎということで、書初めにも丁度良いのでグリモンのスクリプトを書いた。

やっていることは単純で「マウスで数字を選択してから Shift+Ctrl+クリックまたは Shift+右クリックすると千夜千冊の該当ページが開く」というもの。テキストの数字をダブルクリックすると数字部分だけ選択出来るので、そのまま Shift+Ctrl+クリックすればOK。前後に余計なものが入ってもmatch(/¥d+/)で取り除いているので選択はある程度大雑把でもいけるはず。全角半角処理やゼロ詰処理は車輪の再発明ぽいけど、まぁ書初めということで良しとしましょう。ちなみにaddEventListener('contextmenu')なので、Windowsでは Shift+右クリになるかと思われ。あと、ポップアップブロックをしていると最初の呼び出し(window.open)時に警告が出るので、許可してやればその後は出なくなります。

GitHubに上げましたので人柱上等な方はどうぞ。opensenya.user.js
// ==UserScript==
// @name opensenya
// @description 「1337夜」等の数字を選択して Shift+Ctrl+クリックまたは Shift+右クリックすると千夜千冊の該当ページが開きます。
// @include http://www.honza.jp/senya/1/matsuoka_seigow/*
// @version 0.0.5
// @author outZider
// ==/UserScript==

(function() {
function fz(num, digit) {
var s = String(num);
for (var i = 0; i < digit - String(num).length; i++) s = "0" + s;
return s;
}
window.addEventListener(
'contextmenu',
function(e) {
if (e.shiftKey) {
var selection = window.getSelection();
if (selection.rangeCount) {
var s = String(selection.getRangeAt(0)).replace(/[0-9]/g,
function (w) {
var z = "0123456789", h = "0123456789"; return h[z.indexOf(w)];
}).match(/\d+/);
if (s && (parseInt(s) != 0)) {
if (s < 1330)
window.open("http://www.isis.ne.jp/mnn/senya/senya" + fz(s, 4) + ".html"); // 放埒・遊蕩篇
else
window.open("http://www.honza.jp/senya/1/matsuoka_seigow/" + fz(s, 4)); // 連環篇
}
e.preventDefault();
}
}
},
true);
})();


2010/01/07 追記:
コンテクストメニューが使えなくなっていたので Shift+Ctrl+クリック または Shift+右クリックで開くように修正しました。上のリンク先は修正済みのもの(version 0.0.5)になってます。
ちなみに年明けの1339夜は最初からリンクが張られていますね。1338夜はまだリンクが張られていないところを見ると、年末進行で編集作業が忘れられていたと言うだけのことなのかな。

0 件のコメント:

コメントを投稿