Hatena::Groupgeneration1991

gigi-net@G91

2009-06-13

[]mixiニュースに提供元の記事へ飛ぶリンクを追加するGreasemonkeyスクリプト書いてみた 17:04

これは何?

http://gyazo.com/3f5dbee5f3926a28e801f58840bd4c41.png

mixiニュースから記事提供元の元記事に飛ぶリンクを追加します。

mixiニュースで面白い記事を見つけても、ブックマークするのにいちいち元記事を探すのが不便だったので作ってみた。

むしろ公式で付いていないのがおかしいよなあ・・・。


インストール

userscript.orgからどうぞ!

Redirect mixi News Source for Greasemonkey


Greasemonkey以外のユーザースクリプト導入手段でも動作すると思われますが、未確認です。

フィードバックお待ちしております。


技術的なお話

mixiニュースの記事の中から、見出しと、提供元サイトのURLを取得して、クエリーを作成し、GoogleのI'm feeling Luckyに投げているだけです。

なので、発想だけで技術的に難しいことは特にしておりません。


既知の問題点

Googleを使うという仕様故

・更新されて間もない記事の場合、まだGoogleにクロールされていない可能性があって、表示されない

・同じ提供元が、他のポータルサイトにも同一記事を配信しているとそこがヒットしてしまう(主にYahoo!ニュースとか)

・そもそもヒットしない


などといった問題が起こる場合がありますが、大抵は大丈夫なはずです。

クエリーを

<見出し> site:提供元サイトのドメイン

といった感じで飛ばしているのですが、提供元によってはドメインを付けないとヒットしない場合と、むしろ付けるとヒットしなくなる場合が混在している模様。

最初は付けて検索して、仮にヒットしなかった場合は外して検索し直すといった仕様も考えたのですが、導入が面倒なので見送りました。

気が向いたら付けるかも。


アイコン素材など

こちらの素材を使わせていただきました。感謝。

pinvoke - Icons and pixel fonts


ソースコード

// ==UserScript==
// @name           Redirect mixi News Source
// @namespace      http://gigi-net.net
// @include        http://news.mixi.jp/view_news.pl?*
// ==/UserScript==
(function(){

var baseurl = "http://www.google.co.jp/search?hl=ja&btnI=&q=";
//Xpath取得関数
function GetXpath(query) {
    var results = document.evaluate(query, document, null, 7, null);
    var nodes = new Array();
    for(var i=0; i<results.snapshotLength; i++){
        nodes.push(results.snapshotItem(i));
    }
    return nodes;
}
//記事タイトルを取得
var title=document.getElementsByTagName("h2")[1].textContent;
//元記事の提供もとドメインを取得

var domain;
var p =document.getElementsByTagName("p");
for(var i=0;i<p.length;i++){
	if(p[i].getAttribute("class")=="mediaIcon"){
		var domain = p[i].getElementsByTagName("a")[0].getAttribute("href");
	}
}
domain =domain.replace(/http:\/\/www./,"http://*.");
domain =domain.replace(/http:\/\//,"");
domain =domain.replace(/\/$/,"");

//クエリーを作成
var query =title+" "+"site:"+domain;
var url=baseurl+encodeURIComponent(query);

//I'm feeling Lucky!
//元の記事を読むアイコンの表示
var diaryUtility = GetXpath("/html/body/div/div/div/div/ul");
var link=document.createElement("li");
var a=document.createElement("a");
a.href=url;
a.innerHTML="元のソースを表示";
link.appendChild(a);

with(link.style){
	backgroundImage="url(http://gigi-net.net/script/images/MixiAppManager/newspaper.png)";
	backgroundRepeat="no-repeat";
	paddingLeft="23px";
	marginLeft="8px";
	borderLeft="1px solid #ffcd8f";
}
diaryUtility[0].appendChild(link);
})();

2009-06-12

[][]文末に「それと便座カバー」を付加するGreasemonkeyスクリプト「Sunoharizer」をリリースしました

これは何?

全ての文章の文末に、「それと便座カバー」を付加します、それと便座カバー。


元ネタ:それと便座カバーとは (ソレトベンザカバーとは) - ニコニコ大百科

使用例

http://gyazo.com/9653ef0a4125989d21b21b975cb3d3b0.png

友人のmixi日記。

青い便座カバーが目に新鮮です。


http://gyazo.com/053ca9314016318553e8b5dce095260a.png

便座カバー使いのひとの日記。

上半身裸で仮面と便座カバーを付けたイケメン。なんという変態。


http://gyazo.com/34f3a17f94a6997a1ea8adb92479ed3e.png

真面目な記事もこの通り。

便座カバーで地球がヤバい。


ダウンロード

userscript.orgからどうぞ!

Sunoharizer for Greasemonkey

特殊な関数を使用していないので、Operaなどのユーザースクリプト機能でも動くと思います。


どうぞご利用ください。


ソースコード

// ==UserScript==
// @name           Sunoharizer
// @namespace      http://gigi-net.net
// @include        *
// ==/UserScript==
(function(){
document.body.innerHTML = document.body.innerHTML.replace(/。/gm,"、それと便座カバー。");
})();

drabdgcfrrdrabdgcfrr2013/12/18 00:33tqezohfofsbujpo2::2, <a href="http://www.gzfbkpfldn.com/">hvdiftgenv</a> , [url=http://www.fowpusqfgp.com/]yrkvmbpilq[/url], http://www.hlhlmozzxz.com/ hvdiftgenv

2009-06-01

[][][]ニコニコ大百科のリンク先をポップアップする『Popup NicoDict』のVer3.0.0をリリースしました。

f:id:gigi-net:20090514000939j:image

これは何?

ニコニコ大百科キーワードマウスオーバーでポップアップ表示させます。

以前公開したスクリプトの不具合を修正して機能強化したものです。

ニコニコ大百科のリンク先をポップアップするGreasemonkeyスクリプト『Popup NicoDict』改良版リリースしました! - 5.1さらうどん

ニコニコ大百科のキーワードをポップアップ表示させるGreaseMonkeyスクリプト『Popup Nico Dict』リリースしました - 5.1さらうどん

今回のバージョンでようやっと実用レベルになったと思います。


インストール

userscript.orgからどうぞ。

Popup Nico Dict for Greasemonkey


どうぞご利用ください。

バグなどのご指摘をお待ちしております。

また、今後スクリプトが更新される可能性があるので、以下のアドオンを同時にインストールしておくことをオススメします。

インストールしているGreasemonkeyスクリプトの更新をチェックして自動アップデートしてくれるFirefox拡張『Wescript』 | Macの手書き説明書


インストールにはFirefoxGreasemonkeyが必要です。

Greasemonkey固有の関数を使用しているため、他の環境では動かないと思われます。

旧バージョンをベースにしているようですが、Opera対応版を作っていただきました!この場を借りてお礼申し上げます。

Loox Uと初音ミクで行こう!: Operaで使えるニコニコ大百科ポップアップ

設定方法

今回のバージョンから、スクリプト内部の変数を書き換えることで細かい設定が出来るようになりました。

1、上記メニューのツール>Greasemonkey>ユーザースクリプトの管理...を選択

2、ウィンドウが表示されたら、インストールされたスクリプトのリストの中から『Popup NicoDict』を選び、左下の編集を押す。

3、初回起動の場合はエディタの選択を促すダイアログが表示されると思うので、適当なエディタを選択。

スクリプトの内部が表示されると思うので以下の部分を書き換えてください。

/////////////////////////////

//CONFIG

/////////////////////////////

//※デフォルトから変更した場合の動作保証は致しません

//取得する記事の文字数

ARTICLE_LENGTH=1000;

//ポップアップの横の長さ(ピクセル

POPUP_WIDTH=500;

//マウスオーバーからポップアップまでの時間(ミリ秒)

POPUPTIME=500;

//ポップアップの影を表示するかどうかのブーリアン

SHOWSHADOW=true;

パラメーターは書いてある通りなので、特に説明は不要だと思います。

なお、変更してスクリプトが正常動作しなくなった場合は再インストールしてみてください。


以前のバージョンからの修正点

ポップアップ表示にディレイを設けて触れただけで誤爆しないようにした。

以前まではカーソルをなぞるだけで誤爆して大変使いにくかったのですが、今回からは一定時間キーワードマウスを当てないとポップアップしないようにしてみた。

ポップアップ発動までの延滞時間は変数を書き換えることで変更可能です。


ニコニコ動画のwatchページでポップアップFlashプレーヤーの下に出てしまう現象を修正

Windows版ではFirefoxの仕様でFlashプレーヤーの下にポップアップが重なってしまう現象が起きていたようです。

ということで、座標系を変更して重ならないようにしてみた。

こちらにサイトを参考にさせてもらいました。

Flashの前面にHTMLの要素を表示させる。 - なんとなく日記


・/watch/ページでの大百科アイコンとの当たり判定を改善してポップアップしやすくした。

以前は大百科アイコン(http://res.nicovideo.jp/img/common/icon/dic_on.gif)の端の方にマウスを当てないとポップアップが反応しなかったのですが、今回はアイコン全体で反応するようにしてみました。


ポップアップ内の記事の成形方法を変更し、b、brなど一部タグをそのまま残すように改良

若干記事の整形を見やすくした。brタグが入ったので少しは見やすくなったかも


カスタマイズ機能を搭載

変数を書き換えて、挙動を変更できます。

前述の項目を参照してください。


今後の予定

コメント欄アンカーポップアップする機能

今回のバージョンアップで搭載しようと思ったのですが、まだ乗り切っていません。

コメント欄にあるアンカーをいちいち辿るのが面倒なので、個人的にはぜひ乗せたい機能。


技術的なおはなし

今回は特に真新しいことはしていません。

前回からさらに機能を継ぎ足して行ったので、ソースが更に複雑なことになりましたw


ソースコード

userscript.orgからどうぞ。

Source for "Popup Nico Dict" – Userscripts.org