「greasemonkey」を含む日記 RSS

はてなキーワード: greasemonkeyとは

2013-06-02

LDRizeやめるか

前提としてjavascriptほとんど扱えない。メンテナンスが他人頼みになるから苦労する。

FirefoxGreasemonkeyバージョンアップの度に動かなくなる→対処方をググって解決のプロセス時間かかりすぎる。

まあそういう人は本来この手のスクリプト入れない方がいいんだけど。コードになんかヤバイ挙動仕込まれてても気付けないわけだし。

LDRize依存のReblogcommandが使えなくなるのが辛いけど、他のサービススクリプトでなんとか代用できそうだから、いいか

アドオンスクリプトを定期的にバージョンアップするメンテナンスコスト馬鹿にならないし、もうFirefoxもやめるかw

2011-09-23

Google Reader Remove Adsが使えなかったので修正して使ってみた

対象

Google Readerリスト表示で使っており、タイトルの先頭にPRとかADとか入ってるエントリを見えなくしたい人。

準備

次のGreasemonkeyを使用する。まずはグリモン本体と右記をインストールGoogle Reader Remove Ads for Greasemonkey

スクリプトの修正

このままではエラーが出て動かないのでスクリプトを修正する。修正するにはFirefoxの右上にある猿(Greasemonkey)のアイコンの右にある下矢印をクリック→「ユーザスクリプト管理」をクリック→「Google Reader Remove Ads」の「設定」をクリック→「このユーザスクリプト編集します」をクリックするとエディタで「Google Reader Remove Ads」のスクリプトが表示されるのでそれを編集する。

以下に修正点を示す。個々の修正点のタイトルはその行が何行目にあるかを示している。

なおこの修正では、Google Reader Remove Adsの機能の内切り捨てているものもある。そのことをご了承の上、お使いいただきたい。

58
    var title_anc = div.getElementsByClassName('entry-title-link')[0];

to

    var title_anc = div.getElementsByClassName('entry-title')[0];
62
	if (title_anc.text.search(title_prefixes[i]) == 0) {

to

	if (title_anc.textContent.search(title_prefixes[i]) == 0) {
65
	    var msg = 'Hide "' + title_anc.text + '(' + title_anc.href + ')"';

to

	    var msg = 'Hide "' + title_anc.textContent;// + '(' + title_anc.href + ')"';
132
	    check_body(divs.snapshotItem(i));

to

	    //check_body(divs.snapshotItem(i));

2011-09-17

Google Reader+Firefoxはてなブックマークを快適に使う方法

やりたいこと

以下を全てGoogle Reader上で行いたい。

  1. フィードを登録する。
  2. リスト表示で記事タイトルを眺める。
  3. 気に入った記事をクリックして全文読む。
  4. 気に入った記事へはてなスターを付ける。
  5. はてブコメントを見る。
  6. ブコメはてなスターを付ける。
  7. はてブコメントを登録する。

まず、やったこと

以下をインストール
Google Reader Full Feed Modの設定変更

タイトルクリックしたら自動的に全文を取得して表示して欲しい。以下の設定を行うと出来る。

  1. Google Reader右上のギアマーククリック→「Full Feed Mod設定」をクリック→「Auto Load」をクリック
  2. 自動的に全文表示するアイテム」を「すべて」に変更
  3. 「OK」をクリック
Google Reader plus Hatenaの改造

ブコメが表示されないので、これを直したい。

id:northappleさんが「googleリーダー内ではてなブックマークのコメントを参照したいで.. - 人力検索はてな」という質問の回答及びコメント欄でこれを直す方法を教えてくれている。よって、その通りに変更すると直る。2ヶ所置換が必要。

不満な点

  1. Google Readerからワンクリックで「はてなブックマークFirefox拡張」の「ブックマークを追加」ウィンドウを開いて欲しい。
  2. ブコメには作成年月日だけではなく、時分も表示して欲しい。
  3. 記事を開いたら自動ブコメをロードして欲しい。
  4. Google Reader上で記事へはてなスターを付けたい。
  5. Google Reader上でブコメはてなスターを付けたい。
  6. タイトルが長いとブクマ数が隠れてしまうので、それを見えるようにしたい。

改造方法

以下、Google Reader plus Hatenaの変更点です。変更するには、Firefoxの右上にある猿(Greasemonkey)のアイコンの右にある下矢印をクリック→「ユーザスクリプト管理」をクリック→「Google Reader plus Hatena」の「設定」をクリック→「このユーザスクリプト編集します」をクリックするとエディタで「Google Reader plus Hatena」のスクリプトが表示されるのでそれを編集する。

1. Google Readerからワンクリックで「はてなブックマークFirefox拡張」の「ブックマークを追加」ウィンドウを開く。

62行目

mySpan.innerHTML = '<a href="http://b.hatena.ne.jp/entry/'+url+'" onClick="window.open(this.href,\'\',\'status=yes,scrollbars=yes,directories=yes,menubar=yes,resizable=yes,toolbar=yes\'); return false;" ><img src="'+ BookmarkImageURL +'" /></a>';

を、

mySpan.innerHTML = '<a href="http://b.hatena.ne.jp/my/add.confirm?url='+url+'"><img src="'+ BookmarkImageURL +'" /></a>';

に変更。これで「○○ users」をクリックすると、目的ウィンドウが開くようになる。

2. ブコメには作成年月日だけではなく、時分も表示する。

147行目

var t = bookmark.timestamp.split(" ")[0].split("/");

を、

var t = bookmark.timestamp;

に変更。

156行目、

html += "<li><span class=\"__hatena_bookmark_anywhere_timestamp\">"+escapeHTML(t[0])+"年"+escapeHTML(t[1])+"月"+escapeHTML(t[2])+"日</span><img src=\"http://www.hatena.ne.jp/users/"+escapeHTML(bookmark.user.substring(0,2))+"/"+bookmark.user+"/profile_s.gif\" width=\"16\" height=\"16\"><a href=\"http://b.hatena.ne.jp/"+escapeHTML(bookmark.user)+"/"+escapeHTML(t.join(""))+"\" class=\"hatena_bookmark_anywhere_user\">"+escapeHTML(bookmark.user)+"</a><span class=\"hatena_bookmark_anywhere_tags\">"+tags.join(", ")+"</span>"+escapeHTML(bookmark.comment)+"</li>";

を、

html += "<li><span class=\"__hatena_bookmark_anywhere_timestamp\">"+escapeHTML(t.slice(2,-3))+"</span><img src=\"http://www.hatena.ne.jp/users/"+escapeHTML(bookmark.user.substring(0,2))+"/"+bookmark.user+"/profile_s.gif\" width=\"16\" height=\"16\"><a href=\"http://b.hatena.ne.jp/"+escapeHTML(bookmark.user)+"/"+escapeHTML(t.split(" ")[0].split("/").join(""))+"#bookmark-"+escapeHTML(json.eid)+"\" class=\"hatena_bookmark_anywhere_user\">"+escapeHTML(bookmark.user)+"</a><span class=\"hatena_bookmark_anywhere_tags\">"+tags.join(", ")+"</span>"+escapeHTML(bookmark.comment)+"</li>";

に変更。

# ブコメはてなスターを取得しやすいように、ブコメリンクブコメパーマリンクへ変更してあります

3. 記事を開いたら自動ブコメをロードする。

300行目(インデントしか無い空行)


を、


var evt = document.createEvent( "MouseEvents" );
evt.initEvent( "click", false, true );
createSpan.dispatchEvent( evt );

に変更。(「 JavaScriptの動かないコード (中級編) clickイベントを強制的に発生させたい (fireEvent/createEventの使い方) - 主に言語とシステム開発に関して」を参考にさせて頂きました。)

4-5.

出来た。けど、めちゃくちゃソースが汚いので、差分として公開するのが難しい。ごめんなさい。

# どーやるのがベストプラクティスなのか分からない・・・

6.

どなたかご教示してくださると嬉しいです _ _

書いた人

id:al001

人力検索はてなで質問しました:人力検索はてな

2011-04-09

Permalink」の右にusersを出すgreasemonkey

がほしいというエントリです

<p class="sectionfooter"><a href="/(¥d{14})">Permalink</a>

<p class="sectionfooter"><a href="/$1">Permalink</a><a href="http://b.hatena.ne.jp/entry/anond.hatelabo.jp/$1"><img src="http://b.hatena.ne.jp/entry/image/http://anond.hatelabo.jp/$1"></a>

になればいいんです。どうかお願いします

2011-03-30

Greased Lightbox背景色を変える

Greased Lightboxとは画像リンククリックするとページを移動することなリンク先の画像を見ることができるという便利なユーザースクリプトである。たぶんGreasemonkey上で動くからGreasedという名前なのだろう。ちなみにOperaでも使える。

でGreased Lightboxが動作すると画像以外は暗くなり、画像が見やすくなるのだが黒いPC画面というのはあまり見たいものではない。画像の後ろに自分の顔が映ると萎える。というわけでこの黒い半透明の背景を白くしようと思った。

とりあえずgreasedlightbox.user.jsの色を表している部分を全部白にしてみたが背景は変わらなかった。どうやら背景は色を指定して表示しているのではなく、画像を直接指定して表示しているらしい。その画像を表す部分を見つけた。

var pngOverlay= "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAAK%2FINwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAPSURBVHjaYmJgYDgDEGAAANsAz1TKIeAAAAAASUVORK5CYII%3D')";

これを見るとbase64がカギを握っていそうだ。Wikipediaによると

Base64は、データを64種類の印字可能な英数字のみを用いて、それ以外の文字を扱うことの出来ない通信環境にてマルチバイト文字やバイナリデータを扱うためのエンコード方式である

ということらしい意味不明文字列が半透明の黒い画像を表しているということだろう。ということは半透明の白い画像を表す文字列と置き換えれば背景を変えることができる。というわけでGIMPを使って白い色の透過PNG(1px四方)を作った。 次にこのページ( http://sveinbjorn.org/dataurlmaker )でその画像文字列(Base64形式)に変えた。そしてgreasedlightbox.user.jsの先程の文字列と置き換えた。

変更前

var pngOverlay= "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAAK%2FINwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAPSURBVHjaYmJgYDgDEGAAANsAz1TKIeAAAAAASUVORK5CYII%3D')";

変更後

var pngOverlay= "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAAZiS0dEAAAAAAAA+UO7fwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sDHg0AJ+6ZOggAAAANSURBVAjXY/j//38kAAlVA1faOaSqAAAAAElFTkSuQmCC')";

こうしてGreased Lightboxの背景が白い半透明になった。かなり薄めだがGreased Lightboxが動作していると分かればいいのでこの程度の濃さで充分かな。

2011-01-28

Greasemonkeyが0.9になってLDRizeAutoPagerizeが動かなくなった

Greasemonkeyが0.9にアップデートされてから?かどうかは分からないけどAutoPagerizeLDRizeが動かなくて困った。

エラーコンソールを見たらVimperatorプラグインldrize_cooperation.js

                GreasemonkeyService = Cc["@greasemonkey.mozdev.org/greasemonkey-service;1"].getService().wrappedJSObject;
                this.addAfter(GreasemonkeyService,"evalInSandbox",function(code,codebase,sandbox){
                    if(sandbox.window.LDRize != undefined && sandbox.window.Minibuffer != undefined){

エラーになっていた。

greasemonkey.jsをみてみたら

  evalInSandbox: function(code, sandbox, script) {

で0.8のgreasemonkey.js

  evalInSandbox: function(code, codebase, sandbox, script) {

だった。

ldrize_cooperation.js

-                this.addAfter(GreasemonkeyService,"evalInSandbox",function(code,codebase,sandbox){
+                this.addAfter(GreasemonkeyService,"evalInSandbox",function(code,sandbox,script){

したAutoPagerizeは動くようになった

LDRizeはこれでもまだ動かない。Vimperatorを無効にしても同じ。

どうやらGreasemonkey 0.8ではMinibufferでのwindowとLDRizeでのwindowが同一のXPCNativeWrapperオブジェクトだったけど0.9では別のオブジェクトになったようだ。だからLDRizeでのwindow.MinibufferもundefinedになるしGM_MinibufferLoadedのイベントリスナーを設定してもwindowが違うから発行されないということみたい

ううむ

追記

0.9.0から0.9.1の間のこの変更が原因ぽい…

https://github.com/greasemonkey/greasemonkey/commit/6a4ffd52c90091714e6f49376ef07e2ce5009f79

2011-01-08

greasemonkeyスクリプトが2回ずつ実行されてしまう症状

例えば、autopagerizeでpage1, page2, page3とページングされるべきところなのに、

page1, page2, page2などと実行される人や、

niconicofavlistでニコ動お気に入りマイリストコンテナが二個も表示される人へ。

どうも、AVG Safe Searchが最新Firefoxと相性が悪い模様。

FirefoxインストールされているGreasemonkeyスクリプ - ブラウザ - 教えて!goo

http://oshiete.goo.ne.jp/qa/6283865.html

の回答5にもあるが、AVG Safe Searchを無効にしたら治った。

動作から推測するに、AVG Safe Searchは一定時間ごとに何らかのチェック動作を行うらしい

これがGreasemonkeyの動作と相性が悪いらしい

前々からこのアドオンFirefoxと相性が悪いとは言われていたようだ。

2010-08-19

アドオンリスト

さてどこから消すか

2010-06-02

TwitterOAuth 許可ページがあまりにも酷いのスクリプト危険

Twitter の OAuth 許可ページがあまりにも酷い => 応急処置 - リタマス

これのGreasemonkey スクリプト危険だったので修正したよ!

twitter-oauth-caution.user.js

どこが危険だったのか

このスクリプトは、本文中にupdate(または更新)が入っている時に警告を出すようになっていたんだけど、これだとチェック漏れバグがあるとwrite権限を要求しているのに警告が出ないのでread onlyのように見えてしまう

人間が本文読めばわかるから大丈夫だろと思うかもしれないけど、このスクリプト使い続けていたら警告が出ない=read onlyだと判断して本文読まなくなるはず

どう修正したか

read onlyの時にも色を変えて警告を出すようにした(writeなら赤、read onlyなら黄)

これで警告表示の色を見れば赤ならwrite黄ならread onlyだとすぐにわかるし、警告がでなかったらなんかおかしいとすぐに気づくはずだ

まとめ

危険なものと安全なものが混ざってる中から危険なものを選り分けても安心はできないけど、安全なものを選り分けたんなら安心できるよね!(これなんか専門用語ありそうだけど僕は知らない

おまけ

最初スクリプトだと https://twitter.com/oauth/authorize?* と https://twitter.com/oauth/authenticate?* で動くようになってたけど、

twitterOAuth認証ページは他にもhttpsのかわりにhttpを使ったものとか、twitter.comのかわりにapi.twitter.comとかがあるから、それらのページでは警告が出なかった

2010-05-28

http://anond.hatelabo.jp/20100528132512

親切なレスありがとう!

Greasemonkey使ってないけど、試してみます。

感謝

2010-03-27

delicious 2.0 Thumbs for Greasemonkey

http://userscripts.org/scripts/show/31090

Deliciousに登録されたURLSSを表示してくれるらしいがあんまり正確じゃないので使えない。

2010-03-26

LivedoorブログGreasemonkeygoogle reader full feedを使って本文読もうとするとすごい勢いで文字化けするなぁ。

Firefox 3でたまに見かける「FFFD」の正体 : web memo.Ver.2

http://128bit.blog41.fc2.com/blog-entry-147.html

全部↑に出てくるFFFDという記号になる。

文字コードとかよく分からないけど他のページは問題ないのに。

2010-02-24

http://anond.hatelabo.jp/20100224021637

自分の普段の生活の中で、小さな不満はないだろうか?

例えばあそこのサイトはここがこうだったら使いやすいのに。とか。

毎日やるこの作業をもっと楽にできるようにはならないかな?とか。

そういう時にGreasemonkeyとかエディタExcelマクロ作ってみたらいいんじゃなかろうか。

最初の目標は小さいほうがすぐに結果が見えるのでいいと思う。

2010-01-16

はてなの罠

はてなログインすると、面白そうなタイトルはてブエントリーズがずらっと並んだページが現れるので、

誘惑にかられてネットサーフィンしてしまい、時間無駄になる。はてなの罠。

はてなトップページGreaseMonkeyなりユーザースタイルなり使って非表示にすればスッキリ

2009-10-08

今使っているFirefoxアドオンまとめ

2chブラウザで開く https://addons.mozilla.org/ja/firefox/addon/11022

Adblock Plus https://addons.mozilla.org/ja/firefox/addon/1865

・All-in-One Sidebar https://addons.mozilla.org/ja/firefox/addon/1027

・Better YouTube https://addons.mozilla.org/ja/firefox/addon/6460

・Check4Change https://addons.mozilla.org/ja/firefox/addon/3028

・Context Search https://addons.mozilla.org/ja/firefox/addon/240

・Video DownloadHelper https://addons.mozilla.org/ja/firefox/addon/3006

・dragdropupload https://addons.mozilla.org/ja/firefox/addon/2190

・FireGestures https://addons.mozilla.org/ja/firefox/addon/6366

・FoxTab https://addons.mozilla.org/ja/firefox/addon/8879

Google Toolbar for Firefox http://www.google.com/tools/firefox/toolbar/FT2/intl/ja/

Greasemonkey https://addons.mozilla.org/ja/firefox/addon/748

Hatena Bookmark https://addons.mozilla.org/ja/firefox/addon/11285/

IE Tab https://addons.mozilla.org/ja/firefox/addon/1419

IE View https://addons.mozilla.org/ja/firefox/addon/35

Japanize http://japanize.31tools.com/

Menu Editor https://addons.mozilla.org/ja/firefox/addon/710

・Resizeable Textarea https://addons.mozilla.org/ja/firefox/addon/3818

ScrapBook https://addons.mozilla.org/ja/firefox/addon/427

・Screengrab https://addons.mozilla.org/ja/firefox/addon/1146

User Agent Switcher https://addons.mozilla.org/ja/firefox/addon/59

テキストリンク (Text Link) https://addons.mozilla.org/ja/firefox/addon/1939

ブックマークを新しいタブで開く (Open Bookmarks in New Tab) https://addons.mozilla.org/ja/firefox/addon/13784

Greasemonkeyスプリクト

AutoPagerize http://autopagerize.net/

・Loopy for YouTube http://userscripts.org/scripts/show/28832

2009-09-18

http://anond.hatelabo.jp/20090918202607

前誰かがトラックバック展開してくれるブックマークレット作ってくれてました。

Greasemonkey化できそうだけどめんどくさいから各自でどうぞ。

javascript:(function(){var%20as=document.getElementsByTagName('a');for(var%20i=0;i<as.length;i++){var%20a=as[i].getAttribute('onclick');if(a&amp;&amp;a.indexOf('toggleTBC')&gt;=0)toggleTBContent(a.match(/\d+/)[0]);}})()

追記

アンプサンドが化けてます

キーワードリンクのせいみたいorz

登録の際は適宜訂正願います

2009-08-01

http://anond.hatelabo.jp/20090801165128

一応はまったところをメモしとこ

http://d.hatena.ne.jp/os0x/20071202/oautopagerize

・for Operaじゃなくてfor GreaseKit/Greasemetal/Chromium Greasemonkeyファイル3つをインストール

・0AutoPagerize.Settings.jsの実行禁止ページは↓のようにカンマ(,)区切りすること

	,DISABLE_SITE:[
		'http://h\\.hatena\\.ne\\.jp/',
		'http://d\\.hatena\\.ne\\.jp/'
	]

http://anond.hatelabo.jp/20090801115605

グリモンChromeでも使えるみたいよ。

Firefox拡張機能Greasemonkey」、Google Chromeに対応 - CNET Japan

http://japan.cnet.com/news/media/story/0,2000056023,20382295,00.htm

Greasemonkey - Google Chrome まとめWiki

http://chrome.half-moon.org/45.html

2009-06-13

ugigiの検索結果から作品へのリンクを生成するGreasemonkeyを作ったよ

http://anond.hatelabo.jp/20090611195327

javascriptが全然分からないのでググりまくってなんとかできた。

XPathで要素の指定をもうちょっとなんとかするとか、今後の課題は多い。

&amp;amp;になっている箇所は&に置換して下さい。

あと、ugigiの検索結果をAutoPagerで自動的に読み込むようにしようと挑戦してみたものの挫けたよ。

どのようにnextlinkを指定すれば上手く行くのだろう。

// ==UserScript==
// @name           ugigi link test
// @namespace      http://anond.hatelabo.jp/
// @include        http://ugigi.dvrdns.org/?*
// ==/UserScript==

var sakuhin = document.getElementsByClassName('sakuhin');
for (var i = 0; i < sakuhin.length; i++) {
	var relatedurl = unescape(sakuhin[i].getElementsByClassName('link')[0].childNodes[0].href);
	var siteinfotext = sakuhin[i].getElementsByClassName('sinfo')[0].getElementsByTagName('a')[0].text;
	var linkurl = genurl(relatedurl, siteinfotext);
	if (linkurl != null) {
		var a = document.createElement('a');
		a.textContent = 'Link';
		a.href = linkurl;
		var title = sakuhin[i].getElementsByClassName('title')[0];
		title.appendChild(a);
	}
}

function genurl(relatedurl, siteinfotext) {
	match = relatedurl.match(/\/([a-z_]+)(\d*)\/(\d+$)/);
	var board = match[1];
	var boardnum = match[2];
	var idnum = match[3];
	var lognum = siteinfotext.match(/\d+$/);
	var url;
	switch (board) {
		case 'ssw_l':
			url = 'http://coolier.sytes.net:8080/sosowa/ssw_l/?mode=read&amp;amp;key=' + idnum + '&amp;amp;log=' + lognum;
			break;
		case 'ssw_p':
			url = 'http://coolier.sytes.net:8080/sosowa/ssw_p/?mode=read&amp;amp;key=' + idnum + '&amp;amp;log=' + lognum;
			break;
		case 'compe':
			url = 'http://www10.atpages.jp/thcompe/compe' + boardnum + '/?mode=read&amp;amp;key=' + idnum + '&amp;amp;log=0';
			break;
		case 'yotogi':
			url = 'http://yotogi.com/yotogi/?mode=read&amp;amp;key=' + idnum + '&amp;amp;log=' + lognum;
			break;
		case 'comp':
			var nechocompenum = siteinfotext.match(/[一二三四]/);
			switch (nechocompenum[0]) {
				case '一':
					url = 'http://easy2life.sakura.ne.jp/necho/comp/anthologys.cgi?action=html2&amp;amp;key=' + idnum;
					break;
				case '二':
					url = 'http://easy2life.sakura.ne.jp/necho/comp2/anthologys.cgi?action=html2&amp;amp;key=' + idnum;
					break;
				case '三':
					url = 'http://green.ribbon.to/~ronron/comp/?mode=read&amp;amp;key=' + idnum + '&amp;amp;log=';
					break;
				case '四':
					url = 'http://green.ribbon.to/~ronron/comp4/?mode=read&amp;amp;key=' + idnum + '&amp;amp;log=0';
					break;
				default:
					url = null;
					break;
			}
			break;
		default:
			url = null;
			break;
	}
	return url;
}
ログイン ユーザー登録
ようこそ ゲスト さん