Home > JavaScript > Google Reader のスターをまとめて開く Greasemonkey

Google Reader のスターをまとめて開く Greasemonkey

これはなに?

Google Reader でスターを付けた記事をまとめて開くことができる Greasemonkey です。
スター付きアイテムなどを開いた状態で、「o」キーを押すとスター付きの記事を最大 5 件開きます。
開いた記事のスターは消えます。

最近 Google Reader を使うようになったんですが、スターを付けた記事をまとめて開くのがめんどくさかったので作りました。
既に下記リンク先に Greasemonkey はあるのですが、getElementsByTagName などが使われていて Safari では使えなかったので動くようにしました。もちろん Firefox でも動きます。

Google Reader のスターを Livedoor Reader のピンみたいにまとめて開く Greasemonkey - もうゴールしていいブログ

インストール

こちらからインストールしてください。

Google Reader Star Opener – Userscripts.org

ソース

// ==UserScript==
// @name           Google Reader Star Opener
// @namespace      http://www.sukechan.net/
// @description    Starred item open in a lump for Google Reader.
// @include        http://www.google.co.jp/reader/view/*
// @include        http://www.google.com/reader/view/*
// @version        1.0.1
// ==/UserScript==

(function() {
  var MAX_WINDOW_OPEN = 5;

  var onKeyDown = function(event) {
    if(event.keyCode == 79 && !event.shiftKey) {
      var entries = document.evaluate('//div[@id="entries"]//div[@class="entry-container"] | //div[@id="entries"]//div[@class="collapsed"]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
      for(var i = 0, m = MAX_WINDOW_OPEN; i < entries.snapshotLength && m > 0; i++) {
        var entry = entries.snapshotItem(i);
        var stars = document.evaluate('.//div[contains(@class, "item-star-active")]', entry, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
        if(stars.snapshotLength > 0) {
          var star = stars.snapshotItem(0);
          var links = document.evaluate('.//h2[@class="entry-title"]/a | .//div[@class="entry-main"]/a', entry, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
          if(links.snapshotLength > 0) {
            var link = links.snapshotItem(0);
            var win = window.open(link.href);
            if(win && !win.closed) {
              m--;
              var event = document.createEvent('MouseEvents');
              event.initEvent('click', true, true);
              star.dispatchEvent(event);
            }
          }
        }
      }
    }
  }

  document.addEventListener('keydown', onKeyDown, false);
})();

(追記@2008-09-14)
ポップアップブロック等でウィンドウが開かなかった場合にスターを解除しないようにしました。

ポイント

  • Google Reader 側の HTML が変更される可能性があるので、メンテしやすくしておく。今回は全て XPath を使用。
  • document.evaluate の第 2 引数に document 以外のノードを指定した場合は、// を使うとルートノードから走査されることに注意。第 2 引数は単純に初期位置の指定です。ずっとそのノード以下だけが検索されると思ってました。

参考リンク

関連する記事

Comments:3

YAMASHITA 09-02-06 (金) 3:07

初めまして。
Safari / GreaseKitで使えるとのことでインストールしましたが、動きませんでした。

Safari 3.2.1 (5525.27.1)
GreaseKit 1.5

他のユーザースクリプトやimputmanagerを外しても動作しませんでした。
対策がありましたらご教示願えますでしょうか。

yusuke 09-02-11 (水) 15:16

YAMASHITAさん

初めまして。ポップアップブロッカーが有効になっていたりしませんか?
こちらの環境は Safari, GreaseKit とも YAMASHITA さんとバージョン同じですが、動作しています。

YAMASHITA 09-02-12 (木) 0:43

ご回答ありがとうございます。
Safariのポップアップブロックを解除しましたところ、動きました。
いろいろ試さず質問してしまってすみませんでした。

ありがとうございました。

Comment Form
Remember personal info

Trackbacks:1

Trackback URL for this entry
http://www.sukechan.net/archives/84/trackback/
Listed below are links to weblogs that reference
Google Reader のスターをまとめて開く Greasemonkey from sukechan.net
pingback from aruy.net - GoogleReader に移行するかも。 09-05-14 (木) 0:30

[...] 2つ目はGoogle Reader のスターをまとめて開く Greasemonkey スターが付けられているアイテムを o で一度に5件まで開いてくれます。 [...]

Home > JavaScript > Google Reader のスターをまとめて開く Greasemonkey

Search
Feeds
Meta
あわせて読みたい
あわせて読みたいブログパーツ
Others...
フィードメーター - sukechan.net
track feed

Return to page top