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

このブログでは、フリーランス5期目となる自身の実体験から、フリーランスエンジニアになるためのノウハウ、ブログや沖縄移住、スリランカの最新情報について発信します。

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

※記事内に提携先企業のアフィリエイト広告(リンク、バナー等)、Google広告を含む場合があります


こんにちは、現役沖縄フリーランスエンジニアの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