あらかじめ日記

雑記とかブログで使えるスクリプトとかテクニックとか。その他、音楽やアニメ、漫画の話題とかも。

【C#/XML-RPC】プログラムでブログの投稿をする

以前、XML-RPCを利用してファイルのアップロードや記事の一覧取得などはこちらで書きました。

allthewayfrom.hatenablog.com

今回は、記事のアップロードに挑戦してみます。

 まぁ挑戦、、と言ってもAPIの仕様に則ってXMLを記述し、後は上記の記事と同じように送信するだけな訳ですが、XMLの具体的な記述方法として残しておきます。
(色々とサイトを参考にしても、渡す値はboolの文字列なのか、数値なのか、、と細かいところでどちらか分からないところもあったので、その当たりも含めて)

FC2ブログで実行確認しました。

結構長いですが、ざっと書いてしまうととこんな感じです。

<?xmlversion="1.0"?>
<methodCall>
<methodName>metaWeblog.newPost</methodName>
<params>
 <param><value><string>ブログID</string></value></param>
 <param><value><string>ユーザコード</string></value></param>
 <param><value><string>パスワード</string></value></param>
 <param><value><struct>
 <member><name>title</name>
  <value><string>タイトル</string></value>
 </member>
 <member><name>description</name>
  <value><string>本文</string></value>
 </member>
 <member><name>dateCreated</name>
  <value><dateTime.iso8601>投稿日</dateTime.iso8601></value>
 </member>
 <member><name>mt_allow_comments</name>
  <value><int>コメントの受付(0:する1:しない)</int></value>
 </member>
 <member><name>mt_allow_pings</name>
  <value><int>トラックバックの受付(0:する1:しない)</int></value>
 </member>
 <member><name>mt_convert_breaks</name>
  <value><string>改行をタグに変換(0:する1:しない)</string></value>
 </member>
 <member><name>mt_text_more</name>
  <value><string>続きの記事</string></value>
 </member>
 <member><name>mt_excerpt</name>
  <value><string>説明</string></value>
 </member>
 <member><name>categories</name>
  <array><data>
   <value><string>カテゴリ</string></value>
   ※複数記述化、無しの場合は<value>タグから書かない
  </data></array>
 </member>
 <member><name>mt_keywords</name>
  <array><data>
   <value><string>キーワード(タグ)</string></value>
   ※複数記述化、無しの場合は<value>タグから書かない
   </data></array>
 </member>
 <member><name>mt_tb_ping_urls</name>
  <array><data>
   <value><string>トラックバックURL</string></value>
   ※複数記述化、無しの場合は<value>タグから書かない
  </data></array>
 </member>
 </struct></value></param>
</params>
<param><value><boolean>0:下書き1:公開</boolean></value></param>
</methodCall>


投稿日のiso8601形式は、ToString("yyyy-MM-dd'T'HH:mm:ss'Z'")で変換できます。
0/1の値は、型がintstringboolean何れも、0/1を文字としてXMLに記述で問題ありませんでした。(少なくともFC2ブログは)

mt_excerptcategoriesmt_keywordsFC2ブログで対応していないため、確認できていません。

と、実際作ってみたのですが、どうも改行(brタグではなく、テキストしての改行)は全て無視されてしまい、XMLとしての改行コードなどに変えたりして試してみましたが、どうにもダメでした。
今まで改行を意図して記事を作成していたので、現状は結局使わず仕舞いの機能となってしまいました。(いつか使う日が来るかな)