読者です 読者をやめる 読者になる 読者になる

AutoPagerizeにインクリメントモードとURLフィルターを追加するプラグインを書いてみた

Greasemonkey AutoPagerize

さらに改良版がありますAutoPagerize Hacks: Object.prototype.watch - 0xFF
カスタムAutoPagerize - 0xFFをどうぞ
すみませんが、当面は修正版のリリースの予定はありません。

Twitterのhomeで11ページに行くとolderへのリンクがなくなっている件について - 0xFFの件で、AutoPagerizeがアップデートされるたびにこっちも更新していて、アレだなぁということで*1
プラグイン(というはおこがましいが)を書いてみた。

http://ss-o.net/userjs/test/autoincrementerplugin.user.js

(evalの第2引数を使って、)AutoPagerize#getNextURLを乗っ取ってインクリメントモードを追加したり、URL指定でAutoPagerizeのデフォルト動作を変える機能を追加してます。

更新:

インクリメントモードはTwitterの件の通り。
URLFilterについてざっくりと解説します。

URLFilter

右上に出てくるヘルプの下部にあるURLFilterボタンをクリックすると、さらに要素が出てきて、そこからURLを正規表現で入力することができます。
その正規表現にマッチするページではデフォルトがdisable*2になります。AutoPagerizeを自動では実行したくないページを追加してみてください。
設定はGM_setValueで保存しているので、このスクリプトを更新しても引き継ぐことができます。
また、siteinfoについてはwindow.autopagerize_siteinfoという値をチェックしているので、下記のようなスクリプトを用意して置くと自分用のsiteinfoを書いておくことができます。AutoPagerize本体やincrementerpluginのほうにsiteinfoを直接書いてしまうと、アップデート時にカスタムしたものが消えてしまいますが、下記のようにファイルを分けておけば、その心配がありません。

// ==UserScript==
// @name           autopagerize siteinfo
// @namespace      http://ss-o.net/
// @include        *
// ==/UserScript==
window.autopagerize_siteinfo = [
	{
		url:          'http://twitter\.com/.*',
		nextLink:     '//div[@class="pagination"]/a[last()]',
		increment:{
			 nextMatch:  '\\?page=(\\d+)'
			,nextLink:  '?page=#'
			,nextIncrement:  1
		},
		insertBefore: '//div[@class="pagination"]',
		pageElement:  '//table[@class="doing"]',
	}
];

こういう機能あったらどうかなーというのを提案だけじゃなくて、実装してみることができるのはGreasemonkeyの面白さだなと。(やっつけ実装だけど)

*1:どうせ、修正を把握するために差分は取るんだけど

*2:ヘルプからoffにした状態