野良ジニアのスクラップブック

野良エンジニアによる雑記帳。技術、本、便利グッズなどを気の向くままに。

公式・AtomAPIではてなフォトライフの指定フォルダにアップロード

こんにちわ、野良ジニアです。

前回の記事で『AtomAPIのクエリに ?folder=hoge を追加すれば、アップロードフォルダを指定できるで。公式ドキュメントにも書かれてないんやで(ドヤ顔)』と紹介しました。

www.stray-scrapbook.work

その後、ドヤ顔で参考にさせてもらったブログにコメントしたところ、公式ドキュメントにアップロードフォルダの指定方法書いてあるで!』と教えて頂きました。恥ずかしすぎる(赤面)

前回の記事には「公式ドキュメントにちゃんとやり方書いてあるから、そっち見た方がええで(真顔)」と訂正を入れておきましたが、本記事であらためて正式手順について触れたいと思います。
※前記事にも書かせてもらいましたが、id:masawadaさん、コメントしていただきありがとうございましたm(_ _)m

AtomAPIでアップロードフォルダを指定する『正式な』方法

公式ドキュメントより引用

公式ドキュメントより、PostAPIの仕様を引用しておきます。

POSTURI
(中略)
リクエスト用XML文書に記述することができるパラメータは以下です。
(中略)

  • アップロード先のフォルダ名をdc:subject要素に
    • 指定されたフォルダが存在しない場合は、自動的に作成されます。

画像キャプチャも載せておきます。めっちゃ書いてあるのに、どうして見落としたかな…

f:id:ryota-17:20170119133738p:plain

実際に試してみた

まぁ公式手順なので当たり前なのですが、指定したフォルダに無事アップロードできました!!

参考までに使ったソースコードを貼っておきます。id:masawadaさんのコードを folk して、微妙に改造しました。

主な改造箇所は以下になります。

  • ACCESS_TOKEN ACCESS_TOKEN_SECRET をコマンドライン引数に変更
    (トークン期限切れのたびにソースコードを修正するのが面倒だったので)
  • アップロードフォルダをコマンドラインから指定できるように変更。
    何も指定しないとトップフォルダにアップロードされる。
  • 指定ファイルの拡張子を見て、content-type を設定
    (※ただし、hoge.jpg の場合に image/jpg になってしまうので注意。image/jpg は誤りで、image/jpeg が正解そこまでやるの面倒くさかっt)

改造版のコマンドイメージは
bundle exec ./fotolife.rb FILE_PATH 'ACCESS_TOKEN' 'ACCESS_TOKEN_SECRET' [UPLOAD_FOLDER]
です。'ACCESS_TOKEN' 'ACCESS_TOKEN_SECRET'シングルクォート(' ←これ)は消さないように注意してください。

はてなブログ用フォルダにアップロードする場合は、
bundle exec ./fotolife.rb hoge.png 'hogehoge' 'fugafuga' "Hatena Blog"
となります。ダブルクォートで囲めば%20とか書かずに、普通に半角スペースで良いです。

まとめ

  • 変なこと(?folder=hoge のクエリを追加とか)しなくても、公式手順でアップロードフォルダの指定ができた
  • 公式ドキュメントは隅々までちゃんと目を通そう
  • 公式ドキュメントは隅々までちゃんと目を通そう
    (大事なことなのでry

色んな意味で良い勉強になりました。これからも精進していきます!

※以下の内容が何に使えるのかご存知の方がいれば教えてください。使い道が良くわからなかった…

  • アップロードツール名をgenerator要素に
    • フォトライフの設定画面で、アップロードツール毎のフォルダ振り分けの設定ができます。