LoginSignup
3
0

More than 3 years have passed since last update.

【AtomPub API】Livedoorブログの投稿記事を取得する

Posted at

はじめに

趣味でLivedoorブログをやっていて毎日投稿を心がけている。
しかしながら、なかなか毎日の投稿数が安定しない。
個人的には毎日の投稿数とかが可視化されているとモチベーションが上がるので、勉強も兼ねてやってみようと思う

プライベート端末で実装するため、あまり複雑なコーディングはしたくない。よって一番馴染みがあるNode.jsを使って簡単なスクリプトを組む。
やることは以下一点

  • 記事作成日が昨日の日付のものを抽出する

※スプレッドシートへの書き込みはひとまず置いといて、Livedoorブログから投稿記事の取得を試みる
※APIの細かい使用は公式を参照。

使用モジュール

  • wise
  • request
  • xml2json

ソース

livedoor.js
let wsse = require('wsse');
let request = require('request');
let parser = require('xml2json');

var token = new wsse.UsernameToken({ username: '【UID】', password: '【API_KEY】' });

// 記事を取得
var options = {
    url: 'https://livedoor.blogcms.jp/atompub/【ブログID】/article',
    method: 'GET',
    headers: {
      'Authorization': 'WSSE profile="UsernameToken"',
      'X-WSSE': token.getWSSEHeader({nonceBase64:true})
    }
  };

  // リクエスト実行
  request(options, function(error, response, body) {

    // XML形式で返ってくるのでJSONにパース
    var json = parser.toJson(body);
    let obj = JSON.parse(json);

    // 昨日の日付のエントリ
    let toDaysEntry = [];

    // from(昨日の日付の00:00:00)
    let from = new Date(new Date().setHours(0, 0, 0, 0));
    from.setDate(from.getDate() - 1);
    from.setHours(from.getHours() + 9); // +09:00

    // to(今日の日付の00:00:00)
    let to = new Date(new Date().setHours(0, 0, 0, 0));
    to.setHours(to.getHours() +9); // +09:00

    // エントリはfeed.entryに格納されている
    if(obj.feed && obj.feed.entry){

        for(let i = 0 ; i < obj.feed.entry.length; i++){
          // エントリ
          let e = obj.feed.entry[i];
          // 最終更新日をDate型に変換
          let eDate = new Date(e.updated);

          // 昨日の日付のエントリだけ抽出
          if(eDate > from && eDate < to){
            toDaysEntry.push(e);
          }
        }

        console.log(toDaysEntry.length);
      }
  });

感想

今回はおそらく一番オーソドックスな投稿記事の取得だけだったが、APIから投稿することも可能らしい。
なんにせよこれで件数は取得できたので、次回はスプレッドシートへの書き込みをやってみようと思う。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0