- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
この記事は[[b2rイメピタ対応]]の旧記事です。特段の理由がある方以外は新記事の改造のほうが手軽で有用です。
(2008/07/06分割)この記事は[[b2rイメピタ対応]]の旧記事です。特段の理由がある方以外は新記事の改造のほうが手軽で有用です。
!!!bbs2chreader(b2r)でイメピタ(imepita.jp)対応(旧)
(2008/06/23追記)[User Agent Switcher|https://addons.mozilla.org/ja/firefox/addon/59]などでInternet Explorer 7を選択することでこの方法も有効のようです。
==メリットとしては''「だんだん表示」が可能''です。デメリットとしては、導入が面倒でb2r以外に2つの拡張機能を必要とします。動作の重さに関しては、イメピタに関してはこちらが有利ですが、''イメピタ以外の全てにも毎回チェックがかかる''UAとReferer関連の拡張機能を2つも入れることを考慮すれば、全体としてはb2r改造の方が有利です。==(2008/06/24さらに追記)b2r改造は標準でIE7エミュレートになりましたので、b2r改造が手間の上でも性能の上でも有利となりました。
既にUser Agent SwitcherとRefControlを入れている方はこちらでもいいのかも知れません。また、同等のトリックをローカルプロキシソフトなどで行う方はb2rのスキンの改造だけで導入できます。
[User Agent Switcher|https://addons.mozilla.org/ja/firefox/addon/59]などでInternet Explorer 7を選択することでこの方法も有効のようです。メリット・デメリットがわかる方はこの方法も有用です。
----
いわゆる専ブラはイマイチしっくり来なくてFirefoxのアドオンである[bbs2chreader|http://bbs2ch.sourceforge.jp/](b2r)を使ってるんですが、これは標準状態だと[イメピタ|http://imepita.jp]の画像をポップアップしてくれません。
他の専ブラでは対応しているので、それならばと対応してみました。
*RefControlを改造する
*スキンを改造する
の2段階です。
この意味するところは、
*HTTPリクエストヘッダのRefererを書き換える
*b2rにイメピタのURLを画像と認識させる
*b2rに画像への直接要求をさせる
です。
!!RefControl改造
まずは[RefControl|http://www.stardrifter.org/refcontrol/]というアドオンをFireFoxにインストールします。これはHTTPリクエストヘッダのRefererを変更できるアドオンです。
RefControlはそれなりにがんばってるんですが、設定方法の自由度が足りません。ので、改造します。
Firefoxの拡張機能のフォルダ(extensions)で{455D905A-D37C-4643-A9E2-F6FEFAA0424A}というフォルダを探します。この下のcomponents\refcontrolComp.jsを編集します。プロファイルフォルダのトップからいきなりrefcontrolComp.jsを検索しても早いと思います。
performVariableInterpolation: function(oChannel, sRef)
{
var vars = { '$': '$' }; // $$ is a literal $
var arr =
という箇所を探します。RefControlのバージョン0.8.10では18行目にあります。ここに
performVariableInterpolation: function(oChannel, sRef)
{
if(sRef.match(/^script:(.+)/i)){
return eval(RegExp.$1);
}
var vars = { '$': '$' }; // $$ is a literal $
var arr =
というように3行書き足し上書き保存します。この改造は、RefControlの設定画面から任意のJavaScriptでRefererを設定できるようにしています。
FireFoxを起動し、RefControlの設定画面を出します。
Add Siteボタンを押し、設定を追加します。
{{ref_image RefControlSetting.png}}
Site:欄にimepita.jpと書き、Action:はCustom:を選択します。
そして右の欄には
script:oChannel.URI.spec.replace(/image\/(\d{8}\/\d{6})/i, "$1");
と書き、OKを押して戻ります。
!!スキン改造
スキンによって改造箇所・方法は異なるため、ここではbbs2chreaderバージョン0.4.11に付属のデフォルトスキンについて解説します。まずはextensions\{0B9D558E-6983-486b-9AAD-B6CBCD2FC807}\defaults\skinあたりにあるpopup.jsを適当なエディタで開きます。
まずは169行目あたりから
for(let [index, node] in b2rPopup.xpathEvaluate(xpath)){
if(!node.href.match(/\.jpg$|png$|gif$/i)) continue;
node.setAttribute("onmouseover", "b2rPopup.imagePopup.mouseOver(event)");
node.setAttribute("onmouseout", "b2rPopup.mouseOut(event)");
}
という箇所があります。
ここに
for(let [index, node] in b2rPopup.xpathEvaluate(xpath)){
if(node.href.match(/http:\/\/imepita\.jp\/\d{8}\/\d{6}/i)){
node.setAttribute("onmouseover", "b2rPopup.imagePopup.mouseOver(event)");
node.setAttribute("onmouseout", "b2rPopup.mouseOut(event)");
continue;
}
if(!node.href.match(/\.jpg$|png$|gif$/i)) continue;
node.setAttribute("onmouseover", "b2rPopup.imagePopup.mouseOver(event)");
node.setAttribute("onmouseout", "b2rPopup.mouseOut(event)");
}
と5行書き足します。
これで、まずb2rがイメピタのURLを画像へのリンクと認識します。
次に187行目あたり(上記追加前は183行目あたり)から
var image = document.createElement("img");
image.style.width = "120px";
image.style.borderStyle = "none";
image.src = targetNode.href;
という箇所があります。
ここに
var image = document.createElement("img");
image.style.width = "120px";
image.style.borderStyle = "none";
if(targetNode.href.match(/(http:\/\/imepita\.jp)(\/\d{8}\/\d{6})/i)){
image.src = RegExp.$1 + '/image' + RegExp.$2 ;
}else
image.src = targetNode.href;
と3行書き足します。
これでb2rが画像への直接要求を行ってくれます。
他のスキンの場合も対処の方針は基本的に一緒です。
改造箇所もb2rPopup.imagePopupの中になると思います。
ちょっとJavaScriptと正規表現がわかる方なら簡単でしょう。
そのうち専ブラ対策されちゃうかもわかりませんがね…。
!!独り言
後日気づいたんですが、ひょっとしてリファラってそこまで厳密じゃなくても良いのかな?だとすればRefControlの改造は不要かも?
まぁいいか、より正確にしてるんだし…。