by shigemk2

当面は技術的なことしか書かない

ScalaではてなブログAPIを利用し投稿する

サンプルをもじっただけですが。。

はてなブログAtomPub - Hatena Developer Center

JavaのモジュールであるApache Abderaを使ったサンプル。OAuthかと思ったら、WSSEでの投稿です。 なお、投稿に際し認証が必要なので、APIキーが必要です。詳細設定の「APIキー」のところにAPIキーが書いています。

import java.util.Date

import org.apache.abdera.Abdera
import org.apache.abdera.protocol.client.AbderaClient
import org.apache.abdera.ext.wsse.WSSEAuthScheme;

import org.apache.commons.httpclient.UsernamePasswordCredentials;

object AtomPubEntryPost {
  def main(args: Array[String]): Unit = {
    val username = ""; // ユーザーID
    val blogDomain = ""; // ブログのドメイン。独自ドメインも可能
    val apiKey = ""; // 「詳細設定」のところから

    val abdera = new Abdera
    val abderaClient = new AbderaClient(abdera)
    WSSEAuthScheme.register(abderaClient, true);
    abderaClient.addCredentials("https://blog.hatena.ne.jp", null, "WSSE", new UsernamePasswordCredentials(username, apiKey));

    val factory = abdera.getFactory

    // 記事の記述
    val entry = factory.newEntry
    entry.setTitle("タイトル")
    entry.setUpdated(new Date())
    entry.addAuthor(username)
    entry.setContent("本文")

    // 記事の投稿
    val response = abderaClient.post(s"https://blog.hatena.ne.jp/$username/$blogDomain/atom/entry", entry)
    println("STATUS CODE : " + response.getStatus)
  }
}

設定できるものは、

  • タイトル
  • 投稿時刻
  • 投稿者
  • 本文

URLはカスタマイズできないっぽい。あと、Twitter連携とかもこのままではできないっぽい。

記事の記述あたりで、Factoryのメソッドの使い方など。

massapi.com