Home / Diary / タグ: userjs

123

目次

  1. OperaでPDFをオンラインリーダーで開くようにする
  2. はてなアンテナの未読リンクを一気に開くUser JavaScript
  3. ニコニコ動画専用Opera お試し版 9.60
  4. ニコニコ動画視聴補助スクリプト for Opera 秋対応版
  5. ニコニコ動画専用Opera
  6. del.icio.usがアップグレード
  7. スクリプト色々更新
  8. OperaのFile I/Oを試す
  9. OperaでもStylish
  10. OperaでNoScriptっぽいことを実現する「No More Scripts」

OperaでPDFをオンラインリーダーで開くようにする

PDFをウェブページとしてチェックできるようにして離脱を減らそう

オンラインリーダーを今まで使ったことないんだが、これはいい。というわけでOperaで開いたら自動的にこのリーダーを使うようにしよう。

プログラムで指定

"C:\Opera\opera.exe" "http://pdf.openvista.jp/view/%s"

こんな感じでapplication/pdfに登録すれば完了・・・しなかった。なぜかエラーが出て開けない。なぜだ!

User JavaScript

仕方ないのでUser JavaScriptでどうにかしよう。リンクを全て書き換えると直接開いた際にオンラインリーダーで開いてくれない。

そこで全てのページで動作するようにして、現在のページのContent-Typeがapplication/pdfならオンラインリーダーにリダイレクトするように・・・ってOperaはContent-Type取れないんだった!

じゃあURLで判断するしかないな。

// ==UserScript==
// @name        redirect pdf reader
// @namespace   http://bmky.net/
// @include     *.pdf
// ==/UserScript==

( function( ) {
    if( location.href.match( /\.pdf$/ ) && !location.href.match( /http.*?http/ ) ) {
        location.href = "http://pdf.openvista.jp/view/" + location.href;
    }
} )( );

redirect_onlinereader.jsとでも名前を付けて保存。一応動くけど、これだとURLにpdfが入ってないと動かないんだよなぁ。その時用に右クリックメニューにも仕込んでおこう。

Item, "オンラインPDFリーダで読む" = Go to page, "http://pdf.openvista.jp/view/%u"

こなかじ。試しにうちのハッカーズマップを表示してみよう。

http://pdf.openvista.jp/view/http://bmky.net/data/sh/sh_map.pdf

んむ、なかなかいいね。こうやってURLで渡せれば、相手にAdobeリーダーを開かせる必要が無いので不快な思いをさせなくて済む。

そうそう、これを実際に動作させる場合は、ツール>設定>詳細設定>ダウンロード>右上のチェックを外して左のテキスト欄にpdfと入力>application/pdf>編集。

恐らく「他のアプリケーションで開く」にマークされていると思うので、「Operaで開く」をマークすること。こうしないとAdobeリーダーやらFoxitリーダーで開いてしまう。

Info

2008
1115

Tagsoperauserjs

はてなアンテナの未読リンクを一気に開くUser JavaScript

タイトルまんま。ページ上部のボタンを押すとアンテナの未読リンクをデフォルトでは10個ずつ開く。全部ボタンは全部一気に開く。これだけ。一応Firefoxでも動作。

hatena-antenna-open-unvisited.user.js

毎回ポチポチ開くのが面倒だったんで作った。

URLについて

はてなアンテナは登録しているURLをクロールした際に更新されていたら、クロール時の時刻をURLの後ろにつけつつ、はてなアンテナのリダイレクトページのURLで開くようにしてくる。例えばうちのサイトなら、

http://a.hatena.ne.jp/go?http://bmky.net/20081112000000

こんな感じ。このおかげでブラウザ側がリンクの未読を記録してくれるので、これを利用して一気に開いている。

しかし、この方法だと一気に100ページ開くときはリダイレクトページを同時に100個開くことになる。リダイレクトページのサーバーがどれぐらいのスペックかどうかは知らないが、瞬間的に100リクエストを個人が出しちゃいかんよなぁ。

そこで、リダイレクトページのURLを削除して、後ろについたクロール時刻を「?」をつけてパラメーターとすることにした。

http://bmky.net/?20081112000000

まあ、落としどころとしてはこんな感じ? リダイレクトページにアクセスした際に、はてな側がなんらかの情報を取得していたりしたらどうしようもないけど、まぁいいや。

というわけで一応完成。はてな用のスクリプトは初めて作ったかも。唯一使ってるサービスがアンテナというのもアレだが。

Info

2008
1112

Tagsfirefoxjavascriptoperauserjs

ニコニコ動画専用Opera お試し版 9.60

とりあえず変更点とか。あんま変わってないけど。その他細かいことは下記ページ参照。

ダウンロード
OperaforNicoVideo_960_20081010.zip

ツールバー

タブバーとアドレスバーのみ表示。メニューを非表示にしている代わりに、アドレスバー左端にメニューを表示するボタンを追加。

スキン

Opera Standard Slimを適用。

無視するプラグイン

nppl3260.dll  = RealPlayer(tm) G2 LiveConnect-Enabled Plug-In (32-bit)
nprpjplug.dll = RealPlayer Version Plugin
npwmsdrm.dll  = MicrosoftR DRM
npdsplay.dll  = Windows Media Player Plug-in Dynamic Link Library

上記のプラグインを読み込まないようにしている。profile/plugin-ignore.iniに記述されている。

スピードダイヤル

1番にニコニコ動画のトップページ、2番にopera:config。

ブロックコンテンツ

http://ad.nicovideo.jp/images/*
http://www.nicovideo.jp/api/getmarquee*
http://www.nicovideo.jp/img/tpl/head/icon/*
http://www.nicovideo.jp/swf/billboard*

広告・時報・gifアイコンを読み込まないようにしている。profile/urlfilter.iniに記述されている。

UserJavaScript

nico2assist.user.js

動画ページの余計な物を極量排除して初期状態でプレイヤーのみを表示し、ボタンで切り替えることで動画の情報を表示するスクリプト。

後述のnicovideo_hotkey.user.jsに対応。

nicovideo_addforward.js

動画情報のコメント内から次の動画へのリンクを探し出して移動するスクリプト。ツールバー内更新ボタン左にあるFastforwardボタンを押すことで動作する。精度は微妙。

nicovideo_addidlink.user.js

動画IDで検索した時に、検索結果のページにその動画へのリンクを追加するスクリプト。

nicovideo_autologin.user.js

動画ページとマイリストページを開いた時にログインしていなかったら自動的にログインしてリロードするスクリプト。動作させるにはスクリプトにメールアドレスとパスワードを記入する必要がある。

初期状態ではフォームに直接入力するようになっているので、適当な動画ページでログインしようとするとダイアログが表示されるようになってしまう。これを回避したい場合はwandの部分をfalseにすればいいが、パスワードが履歴に表示される上に生でローカルに保存してしまうので注意。よくわからん人は弄らないことを推奨。

nicovideo_hotkey.user.js

キーボード操作で再生・停止・ボリューム変更・シークを行えるスクリプト。これだけ同梱していないので、リンク先でダウンロードしてください。

Info

2008
1010

Tagsnicovideooperauserjs

ニコニコ動画視聴補助スクリプト for Opera 秋対応版

nico2assist.user.js

ニコニコ動画がバージョンアップしてゴチャゴチャしてきたので対応。

ついでにニコニコ動画のプレイヤーをキーボードで操作する user.jsがすんばらしいので導入したんだが、どうやらCSSで消してると要素へのfocusがうまくいかないみたいなので、こちら側で対応した。

通常はプレイヤーの上部にテキストボックスが表示されるが、nico2assist.user.js上ではプレイヤーの左に縦長の赤いバーとして表示されるようになっている。これが赤い状態ならキー入力が有効。

Info

2008
1006

Tagsnicovideooperauserjs

ニコニコ動画専用Opera

Operaはプロファイルフォルダを複数作成することにより異なる設定で起動することが可能になっている。これを利用してニコニコ動画を視聴することに特化したOperaを作るのが目的。

専用プロファイルを使用する上での問題点

お試し版(2008年8月28日)

すぐにニコニコ動画に特化したOperaを体験できるようにお試し版を用意してみたので、試してみたい方はこちらからどうぞ。

ニコニコ動画専用Opera お試し版

作業に入る前に

Operaはプロファイルを保存するフォルダが設定によって変わってしまう。

Operaをインストールしたフォルダ内にあるoperadef6.iniを開き、Multi Userが0になっている場合はOperaをインストールしたフォルダ。そうでないならWindowsのアプリケーション設定保存フォルダがプロファイルを保存するフォルダとなる。Multi Userは初期状態では1になっている。

基本的にはどちらでも問題無いが、Operaをインストールしたフォルダに全てまとまっていると作業がやりやすいので、自分一人しかOperaを使用していないのであればMulti Userは0にしておくことをオススメする。

以降は便宜上OperaをインストールしたフォルダをC:\Program Files\Opera\とし、Multi Userが0のシングルユーザーとして解説を進める。

ちなみにWindowsのアプリケーション設定保存フォルダは、ここ。

C:\Documents and Settings\[USERNAME]\Local Settings\Application Data\Opera

まっさらなプロファイルを作る

Operaは起動時にプロファイルが見当たらない場合に新しいプロファイルを作成することを利用する。

  1. Operaを終了する
  2. Operaのプロファイル保存フォルダ内にある「profile」フォルダを適当な名前に変える。便宜上「profile_」とする。
  3. Operaを起動する。
  4. 新たに「profile」フォルダが作成されるのでOperaを終了する。
  5. 新たに作成された「profile」フォルダを「nico」に名前を変える。
  6. 「profile_」フォルダの名前を「profile」に戻す。
  7. 「nico」フォルダ内のopera6.iniを開いて、「Opera\profile」となっているところを全て「Opera\nico」に置換する。
  8. メールやフィードを共有したく無い場合は、同じようにopera6.iniを開いてMail Root Directoryのパスを変える。C:\Program Files\Opera\nico\mailのようにプロファイルの中のフォルダを指定するのが好ましい。

これでOperaをインストールしたフォルダにnicoとprofileという2つのプロファイルが存在することになった。nicoを専用プロファイルとして運用していく。

以降は特に記載しない限り、専用プロファイルをカスタマイズしていく。

専用プロファイルでOperaを起動する

opera.exeを右クリックしてショートカットの作成を選択。ダイアログ内の「リンク先」を以下のように変える。

C:\Program Files\Opera\opera.exe /Settings "C:\Program Files\Opera\nico\opera6.ini"

このように、/Settingと専用プロファイルのopera6.iniのフルパスを付ける。このショートカットを起動すれば通常プロファイルではなく専用プロファイルが起動するようになる。

参考:Opera のコマンドラインオプション

外部プログラムからURLを開く際の問題

コマンドラインから以下を入力してEnterを押してみよう。

C:\Program Files\Opera\opera.exe http://www.google.co.jp/

使用中のOperaでGoogleが開くはずだ。Operaが起動していないなら起動してGoogleを開くだろう。

この時、通常プロファイルと専用プロファイルの両方が起動している場合はどうなるか?

答えは「最後に起動したプロファイルで開く」。起動順番次第では通常プロファイルで開きたくても専用プロファイルで開いてしまうのだ。

ならば先ほどのようにプロファイルを指定すれば・・・

C:\Program Files\Opera\opera.exe /Settings "C:\Program Files\Opera\nico\opera6.ini" http://www.google.co.jp/

しかしこの試みは失敗に終わる。あくまでもこれは起動オプションであり、既に起動してしまっている場合は無効となるからだ。

プロファイルの識別

上記の問題をOperaだけで解決するのは不可能なのでAutoHotKeyを利用する。

AutoHotKeyのスクリプトにURLが渡されたら特定のプロファイルを識別してウインドウをアクティブ化させる。URLをクリップボードに入れた状態でCtrl+B(Paste and Go)のキー入力を送れば目的が達成できるはずだ。

ではどうやってプロファイルを識別するか。

opera:configから弄れる設定の中にタイトルバーの「Opera」という文字列を変更できるオプションが存在する

opera:config Title

このリンクをOperaで開くと目的の入力欄が表示されるので、そこにNicoVideoと入力したら、下のほうにスクロールして保存ボタンを押す。見事にタイトルバーが「設定ファイルエディタ - Opera」から「設定ファイルエディタ - NicoVideo」になったはずだ。

タイトルバーのOperaがNicoVideoに

後はAutoHotKey側でウインドウタイトルの末尾でプロファイルを識別してURLを渡せばよい。

注意

識別するのに正規表現を利用しているので、よく分からない場合は識別用のタイトルを英数字のみで構成すること。

プロファイル識別ツール

完成物はこちら。

opmultiprof.zip

実行ファイルとソース付き。ダウンロードしたら付属のiniファイルを編集する。

path_prof
プロファイルフォルダのフルパス。最後の¥は付ける。
default_prof
Operaのままで問題無い。
single_key
シングルキーショートカットを使っているならtrueにする。

次にOperaをインストールしたフォルダにあるopera.exeを_opera.exeに名前を変える。そしてopmultiprof.exeをopera.exeと名前を変えて、opmultiprof.iniと一緒にOperaをインストールしたフォルダへコピーする。

なぜこのようにするかというと、他のアプリケーションからはブラウザの指定がopera.exeのままであり、それら全てをopmultiprof.exeにするのは非常に手間が掛かかってしまう。ならばファイル名を変えてしまえばよい。結局はURLを渡すので問題は無い。

それと、先ほど作成したであろうショートカットも右クリックで開いてopera.exeを_opera.exeに直しておこう。

この時点でOperaをインストールしたフォルダはこんな感じになっているハズだ。

ファイル構成

シングルキーショートカットについて

single_keyをfalseにしている場合はURLを開く際にF8→Ctrl+V→Sfhit+Enterと自動で入力して開いている。この方法だとOperaのアクティブ化につまづいた場合に正常に開けない場合があるので、trueを推奨する。

single_keyをtrueにしている場合はShift+Ctrl+Bで新しいページを開いてURLを開く。だが、Opera9.50以降を新規インストールしているとこの動作は設定されていないので、以下の設定ファイルを適用して設定して欲しい。

プロファイルを指定してURLを開く

コマンドラインからは

opera.exe [ウインドウタイトルの末尾] [プロファイルのフォルダ名] [URL]

のように記述する。(このopera.exeは前述したopmultiprof.exeをリネームしたもの。)Googleを開かせるなら以下のようになる。

opera.exe NicoVideo nico http://www.google.co.jp/

こうすれば、専用プロファイルが起動していないなら起動してGoogleを開き、既に起動しているなら専用プロファイルのOperaを識別してからGoogleを開いてくれる。

opera.exe http://www.google.co.jp/

このようにURLだけ渡された場合は通常プロファイルと判断して開かせる。

注意

Opera自体は実行ファイル名が_opera.exeでも基本的には問題は無いが、_opera.exeで起動している状態で通常のブラウザに設定しないこと。これをやってしまうとWindowsのレジストリに_opera.exeで登録されてしまうので後々面倒になってしまう。

通常のブラウザに指定したいなら、_opera.exeにする前に行うこと。

ブラウザを指定できないソフトウェアはどうするか

例えばThunderbird。メール本文内のURLリンクをクリックすると標準のブラウザで開こうとする。

この場合はopera.exeにURLを渡さず、既に起動しているOperaに直接渡してしまうので、結果的に最後に起動したプロファイルで開いてしまう。

有効な対策を思いつけなかったので、専用プロファイル→通常プロファイルの順に開いて、Operaを終了させないでずっと常駐させるのが、現時点では必須になってしまう

そこで、フォルダ内にあるショートカットを全て起動してから_opera.exeを起動するスクリプトを作成した。Windowsを起動した後にこれを実行すればいいだろう。

opmultiboot.wsf

カスタマイズ

プロファイルの作成からURLを渡す方法までは終わった。後は使いやすくするように色々とカスタマイズしよう。

自動的に専用プロファイルで開く

ここだけ通常プロファイルをカスタマイズする。

通常プロファイルでニコニコ動画へのリンクを開いたら、即座に専用プロファイルで開くようにしてしまおう。

まず、Operaの「ツール→設定」から「詳細設定」タブを開いて左側から「プログラム」を選択。右側の追加ボタンを押すとダイアログが表示される。

ダイアログ内のプロトコルにはnicoと入力。「他のアプリケーションで開く」欄でC:\Program Files\Opera\opera.exeを選択して、パラメータにはNicoVideo nicoと入力する。

新規プロトコル設定

最後にnicovideo_linkprotocol.jsを導入すれば完了。ニコニコ動画のページを開こうとすると専用プロファイルで開いてくれるようになる。スクリプトの仕様上ブランクページも一緒に開いてしまうので無視するか閉じて欲しい。

User JavaScriptの導入についてはUser JavaScript(Opera-PukiwikiPlus!)を参考にして欲しい。

通常プロファイルで開く

専用プロファイルで開いたページを通常プロファイルで開きたくなる時があるかもしれないので、右クリックからページを開けるようにしよう。

ニコニコ動画専用プロファイル:nicovideo_menu.ini

このリンクをクリックしてダイアログに対してOKと答えると、右クリックメニューの一番上に「通常プロファイルで開く」という項目が表れるようになる。

あとは一旦Operaを終了してC:\Program Files\Opera\nico\menu\nicovideo_menu.iniをテキストエディタで開こう。下記のようになっているはずなので、Operaのフォルダを自分の環境に合わせて保存。Operaを起動して実際に通常プロファイルで開けるか確認してみよう。

[Link Popup Menu]
Item, "通常プロファイルで開く" = Execute Program, "C:\Program Files\Opera\opera.exe", "%l"

[Document Popup Menu]
Item, "通常プロファイルで開く" = Execute Program, "C:\Program Files\Opera\opera.exe", "%u"

参考:FAQ/5.カスタマイズ(Opera-PukiwikiPlus!)

アドレスバーから検索

検索バーは幅が小さいし、アドレスバーから検索する時はニックネームの入力が面倒なので、アドレスバーに単語一つだけ入力してニコニコ動画から検索できるようにしよう。

Enable HostName Expansionのチェックを外し、Enable HostName Web Lookupにチェックを入れる。そしてHostName Web Lookup Addressに以下を入力する。

http://www.nicovideo.jp/search?ref=top&s=%s&submit.x=0&submit.y=0

これでアドレスバーに単語一つ入れるだけでニコニコ動画から検索できるようになった。動画のIDで検索した場合は動画を開いてくれないのでUser JavaScriptで解決する。

nicovideo_addidlink.user.js

これを導入すればsm123456で検索した場合、検索結果のsm123456という文字に動画へのリンクが付くようになる。

ここまでくると通常の検索バーは必要無くなるので思い切って削除してしまおう。

せっかくなのでスピードダイアルの検索欄もニコニコ動画にする。

ニコニコ動画のトップページを開いて検索欄で右クリックし、検索の作成を選択。キーワードはnにする。さらに詳細ボタンを押して「Speed Dialの検索エンジンとして使用する」にチェックを入れる。これでスピードダイアルの検索欄がニコニコ動画になったはずだ。

検索エンジンがニコニコ動画になった

参考:そういうことじゃないんですよ

見た目をスリムにする

まずはOpera Standard Slim Skinを開いてDownload Skinボタンをクリック。ツールバーがやたらと細くなったはずだ。次に下のリンクを開いて設定ファイルを読み込もう。

ニコニコ動画専用プロファイル:nicovideo_toolbar.ini

導入後はステータスバーが消えて、さらに早送り・巻戻し・認証管理・パネル表示ボタンが消えるはずだ。

次にメニューバーを非表示にしよう。以下のToggle Menuボタンを適当なツールバーにドラッグしてボタンを押せばメニューバーが非表示になる。もう一度押せば表示される。メニューバーを非表示にしたらボタンを右クリックしてツールバーから削除しよう。

Opera用ボタン:[Toggle Menu]

このままだとメニューにアクセスできないので、ツールバーにメニューを表示するボタンを追加する。

Opera用ボタン:[Menu Button]

先ほど同じようにツールバーへ追加する。戻るボタンの左がいいだろう。これを押せばメニューが表示されるようになる。

さらにnico2assist.user.jsを導入して、動画ページ内の余計な要素を表示させなくする。

最終的にこうなる。

スリムになったOpera

実にスリム。動画部分がページの一番上にくるのでわざわざスクロールさせる手間が必要ない。

コンテンツブロック

時報やでかいバナーは邪魔なのでコンテンツブロックを利用して読み込ませなくする。Operaのメニューから「ツール>詳細ツール>コンテンツのブロック」を選択して以下のURLを1行ずつ登録する。

http://ad.nicovideo.jp/images/*
http://www.nicovideo.jp/swf/billboard*
http://www.nicovideo.jp/img/tpl/head/icon/*

仕上げ

Operaをさらに高速にする、あまり知られてない10の方法+αを参考に高速化設定を行う。

プラグインなんかはShockwave Flash以外必要無いのでモリモリ消そう。自分は以下の4行をignore-plugin.iniに追加してプラグインを削除している。

nppl3260.dll  = RealPlayer(tm) G2 LiveConnect-Enabled Plug-In (32-bit)
nprpjplug.dll = RealPlayer Version Plugin
npwmsdrm.dll  = MicrosoftR DRM
npdsplay.dll  = Windows Media Player Plug-in Dynamic Link Library

ニコニコ動画で使えるユーザースクリプトを参考に、便利そうなスクリプトも導入しておく。

完成

ニコニコ動画に特化しているので機能は少ないが、動作が軽い。起動も若干早いが、一度起動したら起動しっぱなしなのであまり意味は無い。それとコンパクトなのでデスクトップの端に置いて他の作業をしながら眺めることができる。

もしニコニコ動画のためだけにProxomitronを導入していたのならば、通常プロファイルでは不要になるのでそちらの動作がほんの少し軽くなるだろう。

ブックマークが独立しているのでマイリストとしてフル活用できる。ブックマークした際に説明欄に入力したテキストは、ブックマークの編集かブックマークパネルからの検索で引っかかるので、タグを入れるなりして管理すれば良いだろう。もちろんフォルダをタグとして扱っても良い。

履歴パネルを開けば「最近見た動画」ページは不要になる。こちらは0件から数千件まで、さらには最後に見た日付までわかる。

作成経緯

そもそもの発端はOpera9.50になってDetach Pageが使えなくなったこと。いや、使えるが、タブだけではなくウインドウ丸ごと切り離すという教育上不適切な発言のため削除な仕様になってしまった。

そこで今度はDetachしたウインドウ専用のボタンを用意して、押すとツールバーが消えてシンプル表示になるようにしたのだが、その設定がDetach元のウインドウにも伝播するという、これまた教育上不適切な(ryな仕様でヘコーと言わざるを得ない。

んで、頭を抱えていたところ「これ別プロファイルでやったほうよくね?」という天啓が降りてきたのでこのような形になった。元々Detach Pageはニコニコ動画ぐらいでしか使わなかったからこれで十分だった。

今回はニコニコ動画専用だったが、複数プロファイルを同時に扱うために必要なものが色々と分かったので、応用して色々なプロファイルを作ろうと思う。

アイコンについて

opmultiprof.exeのアイコンは何も設定しないとAutoHotKeyと同じになってしまう。そのままopera.exeに名前を変えて利用すると、ランチャー等のアイコンまでAutoHotKeyになってしまう場合があるので、とりあえずNuvolaアイコンを使用した。

他のアイコンにしたい場合はahkファイルを自分でコンパイルするか、Resource Hacker等で変更して欲しい。

参考

Info

SBM Comments

edvakf
別profileのOperaを特定WebApp専用クライアントに、決定版。最後の高速化など、細部まで詰められてる。AutoHotKeyはMacに無いのが残念。独自プロトコル感動した。はてなスター2008個。これをOpera@USBにして配布できないかな?
asiamoth
おお、Operaってprofileディレクトリがあるのは知っているけど、切り替えもできたのか! 今ごろ知った。
taroukaja
 ニコニコ動画
efcl
ニコニコ動画閲覧専用のOperaを作る。 プロファイルを分けてやるってことかな。
ketruss
複数のプロファイルを使うという発想。
mono0x
Detach使えなくなったのは痛いけど、これはこれでやり過ぎな感が
miya2000
「そもそもの発端はOpera9.50になってDetach Pageが使えなくなったこと。いや、使えるが、タブだけではなくウインドウ丸ごと切り離すという教育上不適切な発言のため削除な仕様になってしまった。」
toton
”Operaはプロファイルフォルダを複数作成することにより異なる設定で起動することが可能になっている。これを利用してニコニコ動画を視聴することに特化したOperaを作るのが目的。”

2008
0826

Tagsahknicovideooperauserjs

del.icio.usがアップグレード

URLもhttp://del.icio.us/からhttp://delicious.com/に。URLは前のほうが好きだったんだがなぁ。それと、一部機能がJavaScriptが有効じゃないと使えないのはダメだろ。

んで、APIも微妙に変わってるようなので、手元のスクリプトを一部修正した。

SBMCommentsViewer

880行目~906行目を以下のように修正。

var delicious_rss = "http://delicious.com/rss/url/";
var delicious_url = "http://delicious.com/";
var delicious_favicon = "http://delicious.com/favicon.ico";
var delicious_page = "http://delicious.com/url/" + MD5_hexhash(uri.replace(/%23/g, '#'));
function dlLoadRSS() {
    GM_xmlhttpRequest({
      method: "GET",
      url: delicious_rss + MD5_hexhash(uri.replace(/%23/g, '#')),
      onload: function(response) {
          var r;
          var comments = [];
          //var tags = [];
          if (r=response.responseText.match(/<item>[\s\S]*?<\/item>/mg)) {
              comment_area.addCount(r.length, delicious_favicon, delicious_page);
              var len = (r.length < MAX_GET_COUNT) ? r.length : MAX_GET_COUNT;
              for (var i=0; i<len; i++){
                  r[i].match(/<item>\s*<title>[^<]+<\/title>\s*<pubDate>([^<]*)<\/pubDate>[\s\S]*?<link>[^<]+<\/link>\s*<dc:creator><!\[CDATA\[([^\]]+)\]\]><\/dc:creator>[\s\S]*?(?:<description>([^<]*)<\/description>\s*)?((?:\s*<category[^>]*?>[^<]*?<\/category>)*)\s*<\/item>/ );
                  var date = RegExp.$1;
                  var user = RegExp.$2;
                  var comment = RegExp.$3;
                  var categories = RegExp.$4;
                  var tags = [];

                  date.match( /^[a-z]+, (\d+) ([a-z]+) (\d{4}) (\d\d):(\d\d):(\d\d).*?$/i );
                  var d = RegExp.$1;
                  var yyyy = RegExp.$3;
                  var hh = RegExp.$4;
                  var mm = RegExp.$5;
                  var ss = RegExp.$6;
                  var m = RegExp.$2;
                  m = m.replace( /Jan/i, "01" )
                       .replace( /Feb/i, "02" )
                       .replace( /Mar/i, "03" )
                       .replace( /Apr/i, "04" )
                       .replace( /May/i, "05" )
                       .replace( /Jun/i, "06" )
                       .replace( /Jul/i, "07" )
                       .replace( /Aug/i, "08" )
                       .replace( /Sep/i, "09" )
                       .replace( /Oct/i, "10" )
                       .replace( /Nov/i, "11" )
                       .replace( /Dec/i, "12" )
                       ;
                  date = new Date(yyyy, m, d, hh, mm, ss );
                  if(categories){
                      categories.replace( /<category[^>]*?>([^<]*?)<\/category>/g,
                          function( $0, tag ) { tags.push( tag ); }
                      );
                  }
                  if(comment.match(/&lt;p class="description">([^<]+)&lt;\/p>/)){
                      comment = comment.replace(/^\s+|\s+$/g, "");
                  }

ついでにlivedoorClipのユーザー名の位置が微妙に変わったので修正。

1028行目(上の修正を当てた後は1047行目)を以下のように修正。

var userName = userA.href.replace( /^.*\//, "" );

sbmcomments.rb

このサイトのエントリについたコメントを取得するやつ。元のソースで使っていたREXMLが利かなくなったのでsimple-rssで取得するようにした。

def get_delicious_comments( url )
    posts = []
    host  = 'feeds.delicious.com'
    path  = '/v2/rss/url/' + Digest::MD5.hexdigest( url )
    body  = Net::HTTP.start( host, 80 ).get( path ).body

    rss = SimpleRSS.new( body )

    rss.items.each do |item|
        if item.description != nil
            post = {
                :date => "",
                :user => item.dc_creator,
                :cmnt => item.description,
                :site => "del.icio.us"
            }

            posts.push( post )
        end
    end

    return posts
end

del.icio.usからの取得部分をこんな感じに直したんだが、今度は肝心のGet URLsが500でどうしたもんかと。

追記

SBMCommentsViewerの作者の方にスクリプトをgistに上げていただいたので、修正版をダウンロードできます。

sbmcommentsviewer.user.js(リンク先はgist内)

さらに変更が入ったりしたらgist: 3883の右端にあるrevisionかforkを追えばいいハズ。

Info

SBM Comments

asiamoth
お、del.icio.usってURLが変わっていたのか! 必須グリモンのSBMCommentsViewerが動かなくて困っていたので、さっそく修正した。

2008
0803

Tagsfirefoxjavascriptrubyuserjs

スクリプト色々更新

No More Scripts

大幅に修正。セカンドレベルドメインにも対応したので、ブロック指定が楽になった。

基本的に外部参照ファイルをブロックしているわけだが、NoScript同様、メニューを開くだけでそのサイトがどれだけ外部参照コンテンツ、というか広告の類を貼りまくっているかが一目瞭然なので・・・

おびただしい がいぶドメインのかずかず

こーいったサイトが多いからこそ、このようなスクリプトが必要になる。

Pragger

自作したPragger用プラグイン

elem_cacheは無かったことに。ラジオ新着関係を全部修正。ニコニコ動画検索も修正。クラブニンテンドーの未回答アンケートもファミコン探偵倶楽部を遊んだのでようやく対応。

そういや、Praggerをレンタルサーバー上で動かしているんだが、一部のプラグインの動作が、ssh上で実行した時とcron経由で実行した時とローカルで実行した時の動作が違ってしまって非常に困る。というかcron。明らかに入っているはずのプラグインがnot foundだったりわけわからん。

そもそも、ローカルのコマンドライン上で実行しているのがイレギュラーだから、サーバー上で動かしてみるべきなのか?

js-markdown-extra

リンクの参照スタイル使用時にtitleを省略か空白にしていると正しく変換されなかったのを指摘して頂いたので修正。ありがとうございます。

Info

2008
0531

Tagsjavascriptoperarubyuserjs

OperaのFile I/Oを試す

File I/Oとは?

JavaScriptからローカルファイルにアクセスするためのインターフェース。そのFile I/Oが実装されたテストバージョンが遂にリリースされてプチ祭り状態。

んが、変態さん達が熱心なユーザーがこぞって試すとおもっていたのに、そーいった話が全然出てこなかったので、せっかくだからOperaUserJavaScriptManagerを移植できるかどうかを仕様書を斜め読みしながら試みた。

ローカルファイルへのアクセス

セキュリティがガチガチ・・・というか非常に安全に作られている。

まず、任意のディレクトリやファイルにパス決め打ちでアクセスすることができない。アクセスするには、必ずフォルダ選択ダイアログかファイル選択ダイアログを用いた場合のみアクセスできるようになる。

また、そのダイアログ表示も100個ぐらい並べられると立派なブラクラなので、mouseup、mousedown、click等のイベント内でしか動作しない。

つまり、ユーザーの意思の上でしかアクセスすることができないようになっている。

特殊な領域

それでは不便なので、applicationとstorageという領域が確保されている。

applicationはいわゆるWidgetの中身、config.xmlやらindex.htmlやらが置いてあるフォルダのこと。ここにはRead-onlyでアクセスできる。

storageはWidget専用の領域で、ここでは自由にファイルの読み書きが可能になっている。

両方に共通していることとして、ファイルやフォルダの検索を行えないことが挙げられる。つまり、storageに好きなだけファイルを放り込んでもいいけど、ファイル一覧は自分で管理しなければならない。

まあ、妙なスクリプトを実行させられてstorage内のファイルを荒らされないように・・・ということなのだろう。

User JavaScript Manager on Opera

んで、軽く移植して感じたところ、Win版との違いは以下のとおり。

んー・・・微妙。唯一のメリットが「Operaと一緒に起動してくれる」というのがにんともかんとも。

ただ、作る側としてはWindowsより圧倒的にGUIを弄りやすいという点が嬉しい。

実際に作成したWidget

Opera announces specification for File I/O access in widgetsにあるインストーラーを使用したOperaでのみ使用可能。

userjsmanager.wgt

実際に動くとこなかじ。Widgetを起動したら、左下の「load scripts」から現在UserJavaScriptを入れているフォルダを選択する。

これでstorageに全てコピーされるので、後はブラウザの設定でUserJavaScriptのフォルダをstorageに変えるだけ。storageのフォルダは以下に存在する。

C:\Documents and Settings\[Windows ユーザー名]\Application Data\Opera\Opera 9.5\profile\widgets\[数字の羅列]\storage

Widgetからは、meta情報の表示、有効/無効の切り替え、アップデートのチェックのみが可能。機能が中途半端なのは、「これ、実際に使えるようになるのは数ヶ月先なんだよな・・・」という現実に気づいたから。

仕様も確定したわけじゃないので変更が入るだろうし、とりあえず触りだけ、ということで。

なお、上記リンクにもあるとおり、「実験的なバージョンだから何が起きても知らねーからな!」ということなので、そこらへんの覚悟ができている方のみインストールしていただきたい。

Info

SBM Comments

edvakf
別profileのOperaを特定WebApp専用クライアントに、決定版。最後の高速化など、細部まで詰められてる。AutoHotKeyはMacに無いのが残念。独自プロトコル感動した。はてなスター2008個。これをOpera@USBにして配布できないかな?
asiamoth2008
0520

Tagsoperauserjs

OperaでもStylish

・・・のCSSを使えたらいいなぁ。

という思いがあってAutoHotKeyにてproxomitron用のフィルタに出力するスクリプトを作っていたのが去年のこと(だったと思う)。

しかし、最近はNo More ScriptsのおかげでJavaScriptが常に有効になっているので、UserJavaScriptで出力してしまってもいいな。と考えるようになったので、Rubyに移植してみた。

設定ファイルにstylish.rdfのフルパスとOperaのUserJavaScriptを保存しているフォルダを指定すれば準備完了。exeを実行すればたちまち大量のスタイルを組み込んだUserJavaScriptが作成される。

その他詳細は同梱のマニュアル参照。

注意

他人が書いたCSSはあまり取り込んでいないので、妙なCSSを書いていると出力されないかも。

メモ

Ruby1.8xでは正規表現で戻り読みがサポートされていないが、1.9以降は標準で鬼車搭載により戻り読みがサポートされているようだ。

Info

2008
0513

Tagscssoperauserjs

OperaでNoScriptっぽいことを実現する「No More Scripts」

ダウンロード
本体:nomorescripts.js
設定ファイル:nomorescripts_domains.js

経緯

  1. OperaでNoScriptが実現された日。にてblockscriptsおよびblock externalの存在を知る。
  2. ソース見る
  3. なーるM
  4. NoScriptっぽいインターフェースに改造&調整
  5. それなりにまともな動作をしているようなので公開

解説

上記リンク内にも書いてある通り、UserJavaScriptを有効にしたままサイト側のscriptをブロックすることができる

使い方もNoScriptとほぼ同じ。右下のアイコンにマウスを乗せると許可しているドメインとブロックしているドメインが表示されるので、クリックで切り替えることが可能。

なお、常に許可したいドメインは設定ファイルに書くことになる。

まだブロックが甘い箇所があるが、そこそこ動いているようなので公開することにした。もし不具合が出るようであれば、メニューの一番上の項目をクリックすることでスクリプトの動作自体を止めることができる。

ドメインについて

一応NoScript同様にホスト名(www等)を取り除いたものを扱うようにした。例えばニコニコ動画なら、nicovideo.jpを許可するだけで

と、一気に許可することができる。逆にwww.nicovideo.jpだけを許可したいという場合には対応できない。url-prefixも同様で、次回実装する予定。

Info

SBM Comments

toton
 iKnowで辞書を引く

2008
0426

Tagsoperauserjs

暴満館

最新のエントリ
注目のエントリ(はてな)
ゲーム攻略

暴満館 ~The House of Full Violence~
Powered by WordPress.
About | Contact | 新着のエントリ情報 RSS

ページ内の見出し一覧
OperaでPDFをオンラインリーダーで開くようにする
はてなアンテナの未読リンクを一気に開くUser JavaScript
ニコニコ動画専用Opera お試し版 9.60
ニコニコ動画視聴補助スクリプト for Opera 秋対応版
ニコニコ動画専用Opera
del.icio.usがアップグレード
スクリプト色々更新
OperaのFile I/Oを試す
OperaでもStylish
OperaでNoScriptっぽいことを実現する「No More Scripts」