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

はてなブログで「購読中のブログ」の一覧をブログカード形式で取得する

以前書いたスクリプトで取得する内容を変えているだけなので追記にした方がよかったかもしれませんが。記事を書いた当時はまだブログカードがなかった(と思う)ので。

sprint-life.hatenablog.com

購読中のブログのページで実行するとこんな感じで一覧が出力されます。PCのブラウザが前提です。

f:id:splicom:20160222223846j:plain

ユーザーID、ブログカード形式のリンク、ブログの最新記事のタイトルを表示していますが、編集方法が見たままモードだとリンクが使えないかもしれません。

var page_number = 1; // 「購読中のブログ」の最後のページ数(URLのantenna?page=にある数字)
var page_index = 1;
var blog_count = 0;

var header = document.getElementById("main-header");
var textarea = document.createElement("textarea");
textarea.cols = 150;
textarea.rows = 10;
header.appendChild(textarea);

var req = new XMLHttpRequest();

req.onreadystatechange = function() {
  if (req.readyState == 4 && req.status == 200) {
    var dom = document.createElement("dom");
    dom.innerHTML = req.responseText;
    dom.getElementsByClassName("admin-subscribe-wrapper-right").item(0).remove();

    var users = dom.querySelectorAll("a.entry-unit-user-name");
    var entries = dom.querySelectorAll("h3.entry-unit-entry-title");

    for(var j=0; j<users.length; j++) {
      // users[j].textがユーザーID、users[j]がURL、entries[j].innerTextが最新記事のタイトル
      textarea.value += "id:" + users[j].text.trim() + "\n" + "[" + users[j] + ":embed:cite]" + "\n" + entries[j].innerText.trim() + "\n\n";
      blog_count++;
    }
    page_index++;
    if(page_index <= page_number) {
      var url = "http://blog.hatena.ne.jp/-/antenna?page=" + page_index;
      req.open('GET',url, true);
      req.setRequestHeader('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
      req.send();
    }else{
      textarea.value += "購読中のブログは" + blog_count + "件です";
    }
  }
}

req.open('GET',"http://blog.hatena.ne.jp/-/antenna", true);
req.setRequestHeader('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
req.send();

表示する内容はtextarea.value += "id:"・・・の行を適宜変更してください。

購読中のブログの確認や紹介などにどうぞ。