現在「チリウラ」で利用させていただいているレンタルブログサービスの
livedoorブログでは、昔はFTPでのファイル転送機能が提供されていたそうです。
FTPクライアント(有名所を挙げるならFFFTPとか)が使えてたっていうことですね。

だけど、本当の理由は知らないけど、今は廃止されてしまい使えなくなっています。
その代わり(?)に「File Manager API」なるものが今は提供されているようです。
これに関してはlivedoorブログのヘルプにひと通りの情報が掲載されています。

…が、これをちょっと使ってみようと思ってヘルプは読んだんだけど
全っ然わっかんねぇーでござるヾ(゜∀。;)ノ

なにこの…この…なに?(-q-;)

しかしながら、たまたまLinux(Unix)に触れた経験があったり、あとヤマカンとかで
なんとか基本的な使い方を把握するに至れたので、今回はその覚書を少々。

まず結論からいうと、FTPでのファイル転送にはFTPクライアントが必要なように
File Manager APIでのファイル転送にもそれ用のプログラムが必要となります。
それがヘルプでもしばしば(画像中にだけ)登場してる「curl」なるモノです。
他にもあるかもしれないけど、今回はcurlの使用を前提として進めていきます。

curl自体は導入(入手)済みで、File Manager APIの使い方だけ知りたいっていう人は
導入に関して説明している前半部分はすっ飛ばして後半部分(本題)へドウゾ。

curlに関して詳しいことを知りたければWikipediaでも読んで下さい(いつもの丸投げ)
Wikipediaによるとプログラミング言語にも「Curl」っていうのがあるらしいけど
今回使用する「curl」とは別物であり、関連性は(たぶん)ありません。

ちなみに、curlはWindows10ではデフォルトで入ってる?らしい?です?(未確認)
コマンドプロンプトから以下のようにコマンドを打ち込むことで確認できます。
なお、コマンドプロンプトの起動方法とか、コマンドプロンプト自体の説明とか
流石にそこまでは私から解説する気はないので、各自で調べたりしてクダサイ(ノ∀`)
C:\Users\Tirina>curl --version
curl 7.73.0 (x86_64-pc-win32) libcurl/7.73.0 OpenSSL/1.1.1h (Schannel) zlib/1.2.
11 brotli/1.0.9 zstd/1.4.5 WinIDN libssh2/1.9.0 nghttp2/1.41.0
Release-Date: 2020-10-14
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps mqtt pop3
pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile MultiSSL NTLM
SPNEGO SSL SSPI TLS-SRP Unicode UnixSockets brotli libz zstd
最初の「>」より前の部分は人(パソコン)によってどう表示されるかは異なります。
※あくまで表記例であり私は実際にはTirinaというユーザー名は使用してオリマセン。
※わかりやすいように色付けしてあるけど、実際の画面では色はついていません。

打ち込むのは「curl --version」の部分です。間の半角スペースをお忘れなく。
打ち込み後に curl+数字(バージョン) の表記が出ているようであれば
curlが既に導入済みの状態になっているかと思います。

C:\Users\Tirina>curl --version
'curl' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
もしくは
C:\Users\Tirina>curl --version
'curl' is not recognized as an internal or external command,
operable program or batch file.
こんな風に表示されたら入ってないものと思っていいです。
※ミスタイプにはご注意を。crulだとかvarsionだとか打ったりとか。

curlが未導入であれば、まずはcurlというプログラムを入手する必要があります。
curlは、Windowsの場合はcurlの公式サイト(英語)からダウンロードして下さい。
Linuxとかの他のプラットフォーム用も配布されてるみたいだけど
(Linuxならいつものsudo apt-get installとかでいいんじゃないかな、知らないけど)
当記事ではWindowsの場合での話とさせていただきます、あしからず。

ダウンロードの手順に関しては割愛します。
英語がわかる人は持ち前の英語力で、わからない人は気合か勘でガンバレ☆ヾ(*´∀`*)ノ
ただ、ダウンロードページの上の方にあるのはプログラム本体ではないので注意。
これはいわゆるソースでしかなく、プログラム本体はもっと下の方にあります。

※サイトのスクリーンショットは2020年11月8日現在のものです。

ダウンロードしたアーカイブ(たぶんcabまたはzip)を展開すると
中を見たら、ちょっとパソコンに詳しい人なら「あれ?」と思うかもしれないけど
実行ファイル(exe)は「bin」フォルダに入ってます、が、起動しないで下さい。
そのまま起動しても、別に特に害はないけど、むしろ何も起こりません。
ここからはまたコマンドプロンプトを使用していきます。
※binフォルダ云々はWindows 64 bit版のバージョン7.73.0の話です。
 確認した限りでは7.64.1は内容(ファイルの配置)が異なっていました。


まずは問題なく使用できるかどうか確認します。
「curl.exeが置かれている場所」+「curl」+「スペース」+「--version」
最初と同じようにバージョン情報の表示をさせてみましょう。
例えば64bit版の7.73.0をCドライブ直下に配置したのであれば
C:\Users\Tirina>C:\curl-7.73.0-win64-mingw\bin\curl --version
こんな感じに入力します。
これで上の方に載せた表示例のようにバージョン表記が出てくれば導入完了。
もし正常に表示されない場合は、まずは自分のミスタイプを疑って下さい。
…いや、間違ってないと思っても、意外と間違ってたりするんだよ、これが(-∀-;)
フォルダ名とか配置場所とかはお好みで適当に変更して下さい。

余談だけど「パスを通す」作業についてとかcdコマンドに関する話とかは
流石にそこまでは私から解説する気はないので各自で(ry
あと最後の「curl」の部分は「curl.exe」でも別にOKだけどその話も割愛します。

以下、初期状態(curl-7.73.0-win64-mingw)だと無駄に長いので
curlのフォルダの名前は"curl"にしたものとして説明します。
あと「C:\Users\Tirina>」の部分もここからは省略します。

前置き終了。ここから本格的にFile Manager APIの使い方の話。

まずはアップロード先フォルダ(ルートを含む)のIDを調べる必要があります。
そのためには以下のようにコマンドを入力します。
C:\curl\bin\curl -X POST "https://livedoor.blogcms.jp/blog/ユーザー名/file_manager/list" -H "X-LDBlog-Token:FileManagerAPI用パスワード"
長すぎて改行されちゃってるけど実際には1行で。
パスワードはlivedoorブログのパスワードではありません。
File Manager API用のパスワードに関してはヘルプを参照して下さい。
当たり前だけど、このパスワードも絶対に他人に教えないようにして下さい。
「ユーザー名」も同じページで見れる「ルートエンドポイント」を参照して下さい。
たぶんlivedoorブログのIDと同じになるんだとは思います。たぶん。

livedoorブログの領域(ローカルの領域ではなくブログの管理画面で見れるもの)に
例えば「data1」「data2」「data3」というフォルダを作成済みの場合であれば
こんな風に表示されるかと思います。
{"lists":[{"name":"data1","is_dir":1,"id":"990001","is_file":0,"is_root":0},{"name":"data2","is_dir":1,"id":"990002","is_file":0,"is_root":0},{"name":"data3","is_dir":1,"id":"990003","is_file":0,"is_root":0}],"parents":[{"name":"","is_dir":1,"id":"990000","is_file":0,"is_root":1}]}
はい、めちゃくちゃ見づらいですね。見づらいけど、頑張って解読して下さい(-∀-;)
表示されない場合は入力内容のどこかしらにミスがあります。よく確認を。

そして、これを見やすく整えると以下のようになります。
{
  "lists":[
    {
      "name":"data1",
      "is_dir":1,
      "id":"990001",
      "is_file":0,
      "is_root":0
    },{
      "name":"data2",
      "is_dir":1,
      "id":"990002",
      "is_file":0,
      "is_root":0
    },{
      "name":"data3",
      "is_dir":1,
      "id":"990003",
      "is_file":0,
      "is_root":0}
  ],
  "parents":[
    {
      "name":"",
      "is_dir":1,
      "id":"990000",
      "is_file":0,
      "is_root":1
    }
  ]
}
必要になるのは「id」の情報です。
ここで表示される数字で、そのフォルダやファイルに対する操作が可能になります。
めっちゃメンドイけど、残念ながらこの作業は必須です。
IDがわからなければアップロードやその他操作が一切できません。
なお、下の「parents」の部分がルートディレクトリの情報になります。
ルート(トップ)に対してファイルのアップロードなどをする場合は
例えばこの場合であれば"990000"という数字を使用していきます。

フォルダ内のフォルダのIDを知りたい場合もここで判明したIDを使用します。
例えば「data1」のフォルダ内の情報を取得する場合は以下のように入力します。
C:\curl\bin\curl -X POST "https://livedoor.blogcms.jp/blog/ユーザー名/file_manager/list" -H "X-LDBlog-Token:FileManagerAPI用パスワード" -F "dir_id=990001"
同じように見づらい結果が表示されるので、頑張って(ry

ディレクトリ(フォルダ)のIDさえわかれば、もう一息です。
今回はファイルのアップロード方法について説明します。
これはヘルプにも書いてあるけど、基本的には以下のように記述します。
C:\curl\bin\curl -X POST "https://livedoor.blogcms.jp/blog/ユーザー名/file_manager/upload"
 -H "Expect:"
 -H "X-LDBlog-Token:FileManagerAPI用パスワード"
 -F "dir_id=アップロード先のID"
 -F "upload_data=@アップロードするファイル"
 -F "name=アップロード後のファイル名"
ファイル名はそのままでアップロードする場合は「-F "name=~"」は不要です。
なお、唐突に登場した「Expect」なる部分だけど、ヘルプでも一切触れられてなくて
これが何を意味するのかはよくわかりません…が、これがないと動かないようです。
これも触れられてないけど「upload_data=」の部分のアットマークも必須のようです。

具体的な記述例としてはこのような感じになります。
C:\curl\bin\curl -X POST "https://livedoor.blogcms.jp/blog/ユーザー名/file_manager/upload" -H "Expect:" -H "X-LDBlog-Token:FileManagerAPI用パスワード" -F "dir_id=990001" -F "upload_data=@D:\Users\Tirina\Documents\img1.png" -F "name=test.png"
これも改行せずに1行で。
「upload_data=」は自分がアップロードしたいファイルのパスにしたり
「-F "name=~"」部分は省いたりなどなど、そのあたりは各自で適宜変更して下さい。
upload_dataはフルパスじゃなくて相対パスにしたりしてもいいわけだけど
流石にそこまでは私から解説する気は(ry

ちなみに、いろいろ試してはみたんだけど、複数のファイルの同時アップロードは
どうやら、できなくなってるっぽいです。たぶん。恐らく。きっと。
本当ならcurlには複数ファイルを一度に転送する機能はあるはずなんだけど
これはlivedoorブログの方で機能を制限してるっぽい感じかなあ。たぶん。
っていうかcurlを用いてのダウンロードすら制限されてるっぽいし…。

というわけで、長くなっちゃったけどFile Manager APIの使い方についてでした。
今回説明したような情報取得、アップロード以外にも、フォルダの新規作成や
フォルダ・ファイルの削除、ファイル名の変更(フォルダは不可)とか
livedoorブログでもいくつかの機能は提供されています。

まあ、ここまで来たら、流石にもうあとはヘルプを見ればわかると思います。
え?わからない?ならもう素直に管理画面にログインして操作しよう。ね?ヾ(゜∀。)ノ

そんなこんなで本題は終了。以下は余談っていうか雑談っていうか自分語りっていうか。

livedoorブログ、FTPを終了したことからして、なんかもう本当、アレだと思うんだけど
代替機能()として始まったFile Manager APIとかいうの、これ、誰得なのか…(-∀-;)
ヘルプを見ても不親切の極みで、多少なり知識がある人にしかわからない内容だし…。
ユーザーの不満を抑え込むだけのために代替機能()の提供を始めたのであって
この機能すらも、なるべく使われたくないんじゃないかと勘ぐってまうでぇ…(ノ∀`)
「ヘルプをご用意しましたのでご覧下さい。え?読んでもわからない?
 おやおや、わからないんですか?その程度の知識もないんですか?(笑)
 そんなわけはありませんよね?最低限の知識は備えてらっしゃいますよね?
 ならば当然サポートなど不要でしょう(笑)」
ってゆーよーな悪意すら感じるっていうのは流石に邪推(妄想)が過ぎるよね、うんヾ(゜∀。)ノ


ぶっちゃけ、私はヘルプだけを見ても何が何やらサッパリでした(´∀`;)
ただ、何の断りもなく当然のように(それもなぜかテキストではなく画像で)
頻繁に登場している「curl」というワードを取っ掛かりにすることはできました。
まあ、これで調べても、まず目についたのはやっぱりというかLinux関連の情報で
私は偶然Linuxの使用経験がある(っていうか今も使ってる)からまだアレだけど
そうでもなければ、正直、割とすぐに諦めてたんじゃないかな…(-∀-;)
※Linuxは古いPC用のデスクトップOSとして使ってるだけなので詳しくはないです。
 普段は、ゲーム関係の都合が大きいけど、普通(?)にWindows使いです、残念ながら。


それに、このFile Manager API、結局は利用価値はないと判断する人が多いのか
調べてみても、ほとんど情報が出てこないんですよね(ノд`;)
実際、これを使うぐらいなら、普通に管理画面から操作した方がマシでしょう。
一般的なFTPクライアントが使えない時点で五十歩百歩でしかなくもあるけど。
curlを利用していながら、curlの機能がフルに使えるわけじゃないのも痛いですね。

あと、これでアップロードやその他の操作ができるのは、あくまで「ファイル」だけで
「画像」に関しては全く何の操作もできないっぽいし。
「ファイル」としての「画像」なら可だけど、領域が別扱いなんですよね。
まあ、この話はlivedoorブログのユーザーじゃないとわからないと思うし
ここではあんまり深くは触れない方向で。流石にそこまでは私から(ry

ただ、全く使い道がないわけでもないと思います。


ちょっと話が逸れるけど、昔、自サイト時代にも似たようなことをやってたんだけど
右メニュー部に、IRCのオンライン(在席)状態の表示を追加してみました(・∀・)
需要などというものは知ったこっちゃない、それがチラ裏クオリティ(*'ω'*)

これは、仕組みは実に単純で、ローカルにあるONLINEとOFFLINEの画像ファイルを
ファイル名を変えてアップロードすることで実現しています。
IFRAMEじゃないし、HTMLやCSSやJavaScriptの書き換えや切り替えもしてません。
サーバーの2つのファイルの名前を変更してもいいけど、手順増えるし…。

そして、それをbatファイルで表示切り替えができるようになってます(゚∀゚)
batファイルの内容はそれぞれこんな感じです。(一部情報は伏せています)

[irc_online.bat]
rem オンライン表示に切り替えるbatファイル
C:\curl\bin\curl -X POST "https://livedoor.blogcms.jp/blog/user/file_manager/upload" ^
  -H "Expect:" ^
  -H "X-LDBlog-Token:password" ^
  -F "dir_id=XXXXXXXX" ^
  -F "upload_data=@on.png" ^
  -F "name=stat_irc.png"

[irc_offline.bat]
rem オフライン表示に切り替えるbatファイル
C:\curl\bin\curl -X POST "https://livedoor.blogcms.jp/blog/user/file_manager/upload" ^
  -H "Expect:" ^
  -H "X-LDBlog-Token:password" ^
  -F "dir_id=XXXXXXXX" ^
  -F "upload_data=@off.png" ^
  -F "name=stat_irc.png"

on.pngとoff.pngのどちらかを既存のファイルと同名で上書きアップロードするだけの
動作としてはごくごく簡単なバッチファイルですね。
ここまで記述してきた通り、本来は1行に全部書かなきゃいけないわけなんだけど
batなら複数行に分けることもできる…んだけど、流石にそこまでは(ry
batの起動自体は完全に手動です。
PCの前に座った時にIRCクライアントを起動しつつオンライン表示用のbatを叩いて
IRCを切ってPCの電源も落とす(寝る)前にオフライン用を叩くみたいな感じで。

あとは【当ブログについて】のページが、これ実はブログ内の記事のひとつじゃなくて
独立したHTMLファイルをブログの一部っぽく見せてるだけで、内容を変更した時には
手動でアップロードしなきゃいけないんだけど、わざわざ管理画面を開かなくても
これもbatファイルひとつでアップロードできるようにしたりも(・∀・)
…いや、ほら、livedoorブログって「固定ページ」の機能もないから(-∀-;)

これらは活用法(?)の一例だけど、他にも何かしら使い道はある…かも…タブン…。

ともあれ、以上、livedoorブログのFile Manager APIの使い方に関する覚書でした。
調べても本っ当に情報が出てこなかったから、こうやって記事にしておけば
こんな最果てのブログでも、誰か役に立ててくれる人もいるかも、なんてヾ(*´∀`*)ノ
あと単純に、自分用のまさに「覚書」としてっていう目的もあって(ノ∀`)
前の記事次の記事