Hatena::ブログ(Diary)

実験と娯楽

2011-07-16

寝る時間になると教えてくれるユーザスクリプト書いた

mounenasai

1時を過ぎてから新規にページを開くと、「もう寝なさい」画像が表示されます。

画像はtumblrで流れてきたものを使わせてもらいました。

寝る時間はユーザスクリプトコマンドから変更できます。デフォルトは1時。

半分ネタで作ったわりに意外といいので、あとでChrome版も作りたい。

2010-06-16

TumblrBotからNew Followersのお知らせメールが来てもイラッとしないためのアレ

Tumblrフォロワーが増えるとメール通知してくれるのだけど、なぜかメール本文に当該アカウントへのリンクが存在せず、代わりに「Whee!」だの「Sweet」だの人を食ったようなTumblrBotの一言が記載されているだけで何の役にも立たないため、アカウント名をロケーションバーにコピペし後ろに「.tumblr.com」と入力してエンターッ!というのを毎回やっていたら猿みたいな気持ちになってきたのでブックマークレットを書いた。

javascript:(function(){window.open('http://'+document.getElementById('canvas_frame').contentDocument.getElementsByClassName('hP')[0].textContent.slice(0,-22)+'.tumblr.com')})()

Gmailでメールを開いてブックマークレットをクリックすると、当該アカウントTumblrが開く。独自ドメインを使っている場合はどうなるのかしら。未検証です。

ほんとうはGreasemonkeyなどで本文中にリンクを挿入するつもりだったのだけど、GmailのGreasemonkeyAPIがまったく動く気配を見せないため、やむなくブックマークレットを採用した。

それにしても、他のTumblrユーザたちはどのようにしてこの問題を解決しているのだろうか。

2009-05-27

CiNiiのページから参考文献フォーマットで情報を抜き出すブックマークレット

以前書いたやつがCiNiiの改装で動かなくなってる、なんとかしろ、という要望があり、自分はもう使わないけど直しました。

前回はFirebug使用前提でしたが、直しついでにブックマークレットからアラートで表示する形に変えました。ちょっとは敷居が下がったと思いますが、相変わらずFirefox限定です。

以下をブックマークレットとして保存して下さい。やり方は、[メニュー]→[ブックマーク]→[ブックマークツールバー]→[プルダウン内で右クリック]→[新しいブックマーク]で、URLのとこに以下のコードをはっつけます。名前はてきとうにつけて下さい。

javascript:(function(){var $$=function(e){return document.getElementsByClassName(e)};var A=Array.prototype.map.apply($$("authorname"),[function(a){return a.textContent.replace(/\s/g,"")}]).join(", ");var T=$$("entry-title")[0].childNodes[1].textContent;var J=$$("journal_title")[0].textContent.replace(/\s/g,"");var V=$$("volume")[0].textContent;var p=$$("pages");var P=(p.length!=0)?p[0].textContent:"";alert(A+', "'+T+'", '+J+", "+V+", "+P+".");})()

CiNii、改装前と比べてすごくまともにコーディングされていて、情報がとっても抜きやすくなってました。

一応、改行してないコードも載せときます。

var $$ = function(e){return document.getElementsByClassName(e)};
var A = Array.prototype.map.apply($$("authorname"), [function(a){return a.textContent.replace(/\s/g,"")}]).join(", ");
var T = $$("entry-title")[0].childNodes[1].textContent;
var J = $$("journal_title")[0].textContent.replace(/\s/g,"");
var V = $$("volume")[0].textContent;
var p = $$("pages");
var P = (p.length!=0) ? p[0].textContent : "";
alert(A + ', "' + T + '", ' + J + ", " + V + ", " + P + ".");

getElementsByClassNameの戻り値がNodeListとかいうやつで、Array.mapがそのまま使えなくて若干困った。

2009-01-17

CiNiiのページから参考文献フォーマットで情報を抜き出す

BibTeXとか使わないので.以下をFirebugコンソールで実行.

var A = $x("//div[@id='article']/h2/div[1]/a").map(function(a){return a.textContent.replace(/\ /g,"")}).join(", ");
var T = $x("//div[@id='article']/h1/div[1]")[0].textContent;
var J = $x("//div[@id='journal']/h1/div[1]")[0].textContent;
var N = $x("//*[@class='volume']")[0].textContent;
var P = $x("//span[@class='pages']")[0].textContent;
console.log(A + ', "' + T + '", ' + J + ", " + N + ", " + P + ".");

最後の行だけいじれば,お好みのフォーマットに.発行年は決まったフィールドがなくて取り出せなかった.

デフォルトではこんな感じに出力.

著者1, 著者2, "タイトル", 雑誌名, 号数, ページ数.

やっつけなので,すべての論文で動くとは限らない.

こういうの書くときは,XPatherが最高に便利.クリックした場所のXPathを表示するアドオン.おすすめ.