風柳メモ

ソフトウェア・プログラミング関連の覚書が中心

TwitterのホームでAutoPagerizeが効かない件

とうに作者も認識されているようですが(『AutoPagerizeTwitterFilter - SWDYH』、解決用スクリプトもあります)、(ログインした状態の)TwitterのホームAutoPagerizeが効かないのが気になっていたので、少しソースを調べてみました。

すると、Twitterは次ページを取得してもホームへと戻ってきてしまうため、

    if (this.loadedURLs[this.requestURL]) {
        debug('page is already loaded.', this.requestURL, this.info.nextLink)
        this.terminate()
        return
    }

この箇所でひっかかってしまっていました。

で、考えたのですが、

  1. this.loadedURLsにはRequest時に指定したURLとResponse時に最終的にリダイレクトされたURL(res.finalUrl)の両方を入れておく。
  2. 上記箇所でチェックするのはthis.requestURL(チェック時点ではfinalUrlが入ってしまっている)ではなく、次ページURL(getNextURL()で取得したurl)にする。

とすれば、同種の問題が発生した場合でも対処出来るような気がしました。

その辺りを修正したのが

インストール→8551_0.0.41_patched.user.js
※ベース:version: 0.0.41 2009-09-05T16:02:17+09:00

になります。
ついでに、最初に取得した次ページURLがlocation.hrefと同じときには何もしないようにする処理も追加してます。

これで一応、動作するようになりました。
こんな対策だと、問題ありますかね?>id:swdyh さん。