スリ飯屋MaLankaのフリーエンジニアな日々

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

はてなブログatomAPIの記事投稿で複数カテゴリを設定する方法


こんにちは、現役沖縄フリーランスエンジニアのmahです。


このブログでは、

僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、

ノウハウなどを書いていきます。


今回は、


  • はてなブログatomAPIの記事投稿で複数カテゴリを設定する方法


についてです。


はてなブログatomAPIの記事投稿で複数カテゴリを設定する





結論


設定したいカテゴリをterm属性に設定したcategoryタグを、

カテゴリの数だけ書けばOKです。


  • 正しい例
# 設定したカテゴリの数だけ、term属性にカテゴリを設定した<category>タグを並べる
<category term='カテゴリ1' />
<category term='カテゴリ2' />
<category term='カテゴリ3' />


  • 間違った例
# term属性に複数のカテゴリを入れている。スペース区切り
<category term='カテゴリ1 カテゴリ2 カテゴリ3' />

# term属性に複数のカテゴリを入れている。カンマ区切り
<category term='カテゴリ1, カテゴリ2, カテゴリ3' />


term属性に複数のカテゴリを入れても上手くいきません。

(スペース区切りでもカンマ区切りでもない)




概要


はてなブログatomAPIで記事投稿を自動化する際、

「カテゴリ複数設定したいよね」

と思ったので調べました。


はてなブログAtomPubのドキュメントは下記。

developer.hatena.ne.jp


複数カテゴリ指定についてドキュメントには、

category要素ブログ エントリのカテゴリを指定出来ます。(複数可)
term属性 カテゴリ名を指定します。

とあるので、

<category term='カテゴリ1 カテゴリ2' />

みたいな感じにパラメータを作ってAPIを叩いたが、

1つのカテゴリにまとまってしまう。


ドキュメントにあるテンプレートを見ても、

複数カテゴリを設定している例が無いのではっきりしない。

POST https://blog.hatena.ne.jp/{はてなID}/{ブログID}/atom/entry

<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom"
       xmlns:app="http://www.w3.org/2007/app">
  <title>エントリタイトル</title>
  <author><name>name</name></author>
  <content type="text/plain">
    ** エントリ本文
  </content>
  <updated>2008-01-01T00:00:00</updated>

  <category term="Scala" /> <=============== 1つのカテゴリを設定している例しかない

  <app:control>
    <app:draft>{yes | no}</app:draft>
  </app:control>
</entry>


調べていると、

下記記事のようにして複数カテゴリを設定し記事投稿ができました。

<category term="ブログカテゴリ1" />
<category term="ブログカテゴリ2" />

【curl】はてなブログを自動更新するワンライナー - (O+P)ut