エロサイトの作り方

2013年11月から勉強しながらエロサイトを作っています。

LivedoorブログへのAtomPubを使った投稿(メモ)

仕様

API(独自拡張付き)と新APIRFC 5023準拠)がある。

API仕様

(旧)Atom Pub APIについて - livedoor Blog ヘルプセンター

API仕様

AtomPub API について - livedoor Blog ヘルプセンター

ドキュメント少な杉。知りたい事はだいたい書いてない。

記事投稿での、できる/できない

できる

  • 新規投稿、更新、削除
    • タイトル
    • 本文
    • 要約(旧APIのみ)
    • 投稿日時、更新日時
    • カテゴリ付け(投稿時に無ければ自動作成する)
    • 公開or下書き

要約はindexページ以外にもRSSへの概要掲載が連動する。エロサイトではRSSに画像URLを入れたいケースがほとんどだと思うので、基本的に旧APIを使ってサムネイル画像のURLを入れておくことになると思う。

できない

  • 予約投稿(未来日にしてもそのまま公開される)
  • タグの追加、記事へのタグ付け

画像アップロードでの、できる/できない

できる

  • 画像の追加、更新、削除

できない

  • アップロード時のファイル名の指定
  • サムネイルを作るかどうかの指定、サムネイル画像のサイズの指定(ブログ設定が適用)

送信例

サンプル作ったのに間違えて消しちゃった、すまんです……

レスポンス例

どちらも成功時にはステータスコード201が返ってくる。

投稿

<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app">
  <title>APIを使って投稿</title>
  <link rel="edit" type="application/atom+xml;type=entry" href="https://livedoor.blogcms.jp/atompub/hentaikun-sandbox/article/1000000000" title="APIを使って投稿" />
  <id>tag:.blogcms.jp,2014-10-16:article-hentaikun-sandbox.1000000000</id>
  <updated>2014-10-16T13:14:35Z</updated>
  <published>2014-10-16T22:14:35+09:00</published>
  <author><name>hentaikun</name></author>
  <content type="text/html" xml:lang="ja" xml:base="http://hentaikun.blog.jp/archives/1000000000">本文てすと</content>
  <category scheme="https://livedoor.blogcms.jp/atompub/hentaikun-sandbox/category" term="atompub"/>
  <app:control>
    <app:draft>yes</app:draft>
  </app:control>
</entry>
  • contentxml:base値は公開時のURLになる
  • link rel="edit"のhref値は編集時のAPIコールURLになる

画像アップロード

<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app">
  <title>no title</title>
  <link rel="edit" href="https://livedoor.blogcms.jp/atompub/hentaikun-sandbox/image/2000000" />
  <id>tag:.blogcms.jp,2014-10-16:image-.20000000</id>
  <updated>2014-10-16T20:53:49+09:00</updated>
  <author><name>hentaikun</name></author>
  <content type="image/jpeg" src="http://livedoor.blogimg.jp/hentaikun-sandbox/imgs/8/0/8000000.jpg" thumbnail="http://livedoor.blogimg.jp/hentaikun-sandbox/imgs/8/0/800000-s.jpg"/>
</entry>
  • link rel="edit"のhref値は編集時のAPIコールURLになる(記事投稿と同じ)
  • contentのsrc値が画像のURL、thumbnailがサムネイル画像のURLになる
  • サムネイル画像のサイズはブログの設定値をそのまま使う

メモ

大きな欠点として予約投稿ができない。

APIを使うケースはほぼ自動化のためだと思うので、これは微妙な仕様だと思う。

回避方法としては、

  • 投稿したい時間にcronを回す(ただし、プレビューは見れない)
  • 下書きにしておいて手動で予約投稿に変更する(手動動作が入って面倒)

あたりかと。先に下書き投稿してcronでフラグ変更するならいいとこ取りはできる。