Google Reader Prefetch More

By ucnv Last update Oct 24, 2009 — Installed 11,980 times. Daily Installs: 514, 119, 124, 87, 46, 55, 26, 47, 81, 40, 55, 37, 48, 24, 39, 51, 54, 40, 53, 34, 17, 25, 23, 26, 30, 37, 25, 20, 16, 28, 31, 15

There are 17 previous versions of this script.

// ==UserScript==
// @name           Google Reader Prefetch More
// @namespace      http://userscripts.org/users/40991
// @include        http://www.google.tld/reader/*
// @include        https://www.google.tld/reader/*
// @unwrap
// ==/UserScript==

var first = 25; // default is 5
var next =  15; // default is 1
var list =  60; // default is 20

var version = '0.3.0';

var id = 'GoogleReaderPrefetchMore';
var config = eval(GM_getValue(id)) || { version: '', src: '', targetFunction: '', targetValue: ''};

Array.slice(document.getElementsByTagName('script')).forEach(function(e) {
  if(e.src && /\/reader\/ui\/\d+-\w+-scroll.js/.test(e.src)) {
    if(config.src == e.src && config.version == version) {
      more(config.targetFunction, config.targetValue);
      return;
    }
    config.version = version;
    config.src = e.src;
    GM_xmlhttpRequest({method: 'GET', url: config.src, onload: function(res) {
      var s = res.responseText;
      // aF.prototype.Om=function(){return TE(this.cb())?this.Xa?1:5:20};
      var m = s.match(/;([^=]+)=(function\(\)\{[^\}]*\?1:5:20\});/);
      if(m.length != 3) throw new Error('Prefetch failed. Something wrong with the js.');
      config.targetFunction = m[1];
      config.targetValue = m[2];
      GM_setValue(id, uneval(config));
      GM_log('js changed.');
      more(config.targetFunction, config.targetValue);
    }});
  }
});

function more(targetFunction, targetValue) {
  var f = 'unsafeWindow.' + targetFunction;
  var v = targetValue
          .replace(/function\(\){([^}]*)}/, "function(){with(unsafeWindow){$1}}")
          .replace('1:5:20', [next,first,list].join(':'));
  eval(f + '=' + v);
}