Home / Diary / タグ: userjs
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年11月15日
- タグ
- opera、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1911.html
- ブックマークに追加する
-
- コメント
2008
1115
Tagsoperauserjs
タイトルまんま。ページ上部のボタンを押すとアンテナの未読リンクをデフォルトでは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年11月12日
- タグ
- firefox、javascript、opera、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1907.html
- ブックマークに追加する
-
- コメント
2008
1112
Tagsfirefoxjavascriptoperauserjs
とりあえず変更点とか。あんま変わってないけど。その他細かいことは下記ページ参照。
- ダウンロード
- 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
動画ページの余計な物を極量排除して初期状態でプレイヤーのみを表示し、ボタンで切り替えることで動画の情報を表示するスクリプト。
後述のnicovideo_hotkey.user.jsに対応。
動画情報のコメント内から次の動画へのリンクを探し出して移動するスクリプト。ツールバー内更新ボタン左にあるFastforwardボタンを押すことで動作する。精度は微妙。
動画IDで検索した時に、検索結果のページにその動画へのリンクを追加するスクリプト。
動画ページとマイリストページを開いた時にログインしていなかったら自動的にログインしてリロードするスクリプト。動作させるにはスクリプトにメールアドレスとパスワードを記入する必要がある。
初期状態ではフォームに直接入力するようになっているので、適当な動画ページでログインしようとするとダイアログが表示されるようになってしまう。これを回避したい場合はwandの部分をfalseにすればいいが、パスワードが履歴に表示される上に生でローカルに保存してしまうので注意。よくわからん人は弄らないことを推奨。
キーボード操作で再生・停止・ボリューム変更・シークを行えるスクリプト。これだけ同梱していないので、リンク先でダウンロードしてください。
Info
- 投稿日
- 2008年10月10日
- タグ
- nicovideo、opera、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1877.html
- ブックマークに追加する
-
- コメント
2008
1010
Tagsnicovideooperauserjs
nico2assist.user.js
ニコニコ動画がバージョンアップしてゴチャゴチャしてきたので対応。
ついでにニコニコ動画のプレイヤーをキーボードで操作する user.jsがすんばらしいので導入したんだが、どうやらCSSで消してると要素へのfocusがうまくいかないみたいなので、こちら側で対応した。
通常はプレイヤーの上部にテキストボックスが表示されるが、nico2assist.user.js上ではプレイヤーの左に縦長の赤いバーとして表示されるようになっている。これが赤い状態ならキー入力が有効。
Info
- 投稿日
- 2008年10月6日
- タグ
- nicovideo、opera、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1863.html
- ブックマークに追加する
-
- コメント
2008
1006
Tagsnicovideooperauserjs
Operaはプロファイルフォルダを複数作成することにより異なる設定で起動することが可能になっている。これを利用してニコニコ動画を視聴することに特化したOperaを作るのが目的。
専用プロファイルを使用する上での問題点
- 「標準のブラウザで開く」対策で、通常と専用プロファイルを常駐しなければならない。
- 他のアプリケーションからURLを渡す際にAutoHotKeyを介するために少し遅い。
- 他のアプリケーションからの大量のURLを専用プロファイルで同時に開けない。
(URLを開くのにCtrl+Shift+Bを送っているので、同時に大量に発行するとキー入力が追いつかなくなって、取りこぼしが発生するため。)
お試し版(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は起動時にプロファイルが見当たらない場合に新しいプロファイルを作成することを利用する。
- Operaを終了する
- Operaのプロファイル保存フォルダ内にある「profile」フォルダを適当な名前に変える。便宜上「profile_」とする。
- Operaを起動する。
- 新たに「profile」フォルダが作成されるのでOperaを終了する。
- 新たに作成された「profile」フォルダを「nico」に名前を変える。
- 「profile_」フォルダの名前を「profile」に戻す。
- 「nico」フォルダ内のopera6.iniを開いて、「Opera\profile」となっているところを全て「Opera\nico」に置換する。
- メールやフィードを共有したく無い場合は、同じように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」になったはずだ。

後は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のメニューから「ツール>詳細ツール>コンテンツのブロック」を選択して以下の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
- 投稿日
- 2008年8月26日
- タグ
- ahk、nicovideo、opera、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1815.html
- ブックマークに追加する
-
- コメント
2008
0826
Tagsahknicovideooperauserjs
URLもhttp://del.icio.us/からhttp://delicious.com/に。URLは前のほうが好きだったんだがなぁ。それと、一部機能がJavaScriptが有効じゃないと使えないのはダメだろ。
んで、APIも微妙に変わってるようなので、手元のスクリプトを一部修正した。
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(/<p class="description">([^<]+)<\/p>/)){
comment = comment.replace(/^\s+|\s+$/g, "");
}
ついでにlivedoorClipのユーザー名の位置が微妙に変わったので修正。
1028行目(上の修正を当てた後は1047行目)を以下のように修正。
var userName = userA.href.replace( /^.*\//, "" );
このサイトのエントリについたコメントを取得するやつ。元のソースで使っていた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
- 投稿日
- 2008年8月3日
- タグ
- firefox、javascript、ruby、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1788.html
- ブックマークに追加する
-
- コメント
2008
0803
Tagsfirefoxjavascriptrubyuserjs
No More Scripts
大幅に修正。セカンドレベルドメインにも対応したので、ブロック指定が楽になった。
基本的に外部参照ファイルをブロックしているわけだが、NoScript同様、メニューを開くだけでそのサイトがどれだけ外部参照コンテンツ、というか広告の類を貼りまくっているかが一目瞭然なので・・・

こーいったサイトが多いからこそ、このようなスクリプトが必要になる。
Pragger
自作したPragger用プラグイン
elem_cacheは無かったことに。ラジオ新着関係を全部修正。ニコニコ動画検索も修正。クラブニンテンドーの未回答アンケートもファミコン探偵倶楽部を遊んだのでようやく対応。
そういや、Praggerをレンタルサーバー上で動かしているんだが、一部のプラグインの動作が、ssh上で実行した時とcron経由で実行した時とローカルで実行した時の動作が違ってしまって非常に困る。というかcron。明らかに入っているはずのプラグインがnot foundだったりわけわからん。
そもそも、ローカルのコマンドライン上で実行しているのがイレギュラーだから、サーバー上で動かしてみるべきなのか?
リンクの参照スタイル使用時にtitleを省略か空白にしていると正しく変換されなかったのを指摘して頂いたので修正。ありがとうございます。
Info
- 投稿日
- 2008年5月31日
- タグ
- javascript、opera、ruby、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1765.html
- ブックマークに追加する
-
- コメント
2008
0531
Tagsjavascriptoperarubyuserjs
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からWidgetへは依然アクセスできないので、右クリックからインストールができない。
- storage内を検索できないので、インストールには、Widgetにインストーラーを実装させる必要がある。
- 毎回フォルダ選択ダイアログを出すわけには行かないのでstorageにUserJavaScriptを置くことになる。
- テキストエディタで開けない。
んー・・・微妙。唯一のメリットが「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
- 投稿日
- 2008年5月20日
- タグ
- opera、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1763.html
- ブックマークに追加する
-
- コメント
2008
0520
Tagsoperauserjs
・・・のCSSを使えたらいいなぁ。
という思いがあってAutoHotKeyにてproxomitron用のフィルタに出力するスクリプトを作っていたのが去年のこと(だったと思う)。
しかし、最近はNo More ScriptsのおかげでJavaScriptが常に有効になっているので、UserJavaScriptで出力してしまってもいいな。と考えるようになったので、Rubyに移植してみた。
設定ファイルにstylish.rdfのフルパスとOperaのUserJavaScriptを保存しているフォルダを指定すれば準備完了。exeを実行すればたちまち大量のスタイルを組み込んだUserJavaScriptが作成される。
その他詳細は同梱のマニュアル参照。
注意
他人が書いたCSSはあまり取り込んでいないので、妙なCSSを書いていると出力されないかも。
メモ
Ruby1.8xでは正規表現で戻り読みがサポートされていないが、1.9以降は標準で鬼車搭載により戻り読みがサポートされているようだ。
Info
- 投稿日
- 2008年5月13日
- タグ
- css、opera、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1761.html
- ブックマークに追加する
-
- コメント
2008
0513
Tagscssoperauserjs
- ダウンロード
- 本体:nomorescripts.js
- 設定ファイル:nomorescripts_domains.js
経緯
- OperaでNoScriptが実現された日。にてblockscriptsおよびblock externalの存在を知る。
- ソース見る
- なーるM
- NoScriptっぽいインターフェースに改造&調整
- それなりにまともな動作をしているようなので公開
解説
上記リンク内にも書いてある通り、UserJavaScriptを有効にしたままサイト側のscriptをブロックすることができる。
使い方もNoScriptとほぼ同じ。右下のアイコンにマウスを乗せると許可しているドメインとブロックしているドメインが表示されるので、クリックで切り替えることが可能。
なお、常に許可したいドメインは設定ファイルに書くことになる。
まだブロックが甘い箇所があるが、そこそこ動いているようなので公開することにした。もし不具合が出るようであれば、メニューの一番上の項目をクリックすることでスクリプトの動作自体を止めることができる。
ドメインについて
一応NoScript同様にホスト名(www等)を取り除いたものを扱うようにした。例えばニコニコ動画なら、nicovideo.jpを許可するだけで
- www.nicovideo.jp ← webページ
- res.nicovideo.jp ← スクリプト等
- tn-skr[num].nicovideo.jp ← サムネイル
と、一気に許可することができる。逆にwww.nicovideo.jpだけを許可したいという場合には対応できない。url-prefixも同様で、次回実装する予定。
Info
- 投稿日
- 2008年4月26日
- タグ
- opera、userjs
- このエントリの固定リンク
- http://bmky.net/diary/log/1758.html
- ブックマークに追加する
-
- コメント
2008
0426
Tagsoperauserjs