素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: twitter: @javascripter にどうぞ。

FastladderでLDRのクローラを使うGreasemonkey

追記:console.logとかが残ってたので、gistのほうは直しておいた。
からインストール。
LDRの画面が狭くて嫌でFastladderに乗り換えようとしたけど、LDRと比較してクローラの巡回が遅くて困っていた僕のために。

// ==UserScript==
// @name           FastLDR
// @namespace      http://d.hatena.ne.jp/javascripter/
// @include        http://fastladder.com/reader/
// ==/UserScript==

var native_post = unsafeWindow.API.prototype.post;
var api_key = null;

GM_xmlhttpRequest({
  method: "GET",
  url: "http://reader.livedoor.com/reader/",
  onload: function (res) {
   var m = res.responseText.match(/^var ApiKey = "(.*)";/m);
   if (m) {
     api_key = m[1];
   } else {
     unsafeWindow.message("API key not found.(Please login to LDR)");
   }
  }
});

unsafeWindow.API.prototype.post =  function(param, onload){
  if (/^\/api\/config\//.test(this.ap)) {
    return native_post.apply(this, arguments);
  }
  unsafeWindow.console.log(api_key);
  var onload = onload || this.onload;
  var oncomplete = this.onComplete;
  if (typeof onload != "function") {
    onload = function() {};
  }
  param.ApiKey = api_key;
  setTimeout(GM_xmlhttpRequest, 0, {
    method: "post",
    url: "http://reader.livedoor.com/" + this.ap,
    data: unsafeWindow.Object.toQuery(param),
    headers: { "Content-Type" : "application/x-www-form-urlencoded" },
    onload: function(res) {
      oncomplete();
      unsafeWindow.API.last_response = res.responseText;
      var json = unsafeWindow.JSON.parse(res.responseText);
      if (json) {
        onload(json);
      } else {
        unsafeWindow.message("can't load data");
        unsafeWindow.show_error();
      }
    }
  });
  this.onCreate();
  return this;
};