curlで取得したデータをFTPでアップするバッチファイルを作った話

このブログのサイドバーには、『最近読んだ本』を掲載しているのですが、この情報はブクログのRSSフィードから取得しています。

ですが、直接見にいくようにしていたせいか、先月の初め頃にアクセス制限を食らってしまいました……(なので、しばらく非表示にしていました)。
WebAPIというわけでもないのに、毎回アクセスする作りにみなさんはしないようにしましょう。やるなら、キャッシュとしてWebサーバー内にファイルとして置いておいて、更新日時が1時間以内だったらそのファイルを利用、1時間を超えていたら取得するというような作りにしたほうがよさそうです。

さて、そうはいってもアクセス制限をかかってしまった今となってはそうすることもできません。どうしたものかと思ったのですが、自分のPCで取得してFTPでアップすればいいだけかと思ったので調べて作ってみました。

呼び出すバッチファイル

REM カレントディレクトリをバッチファイルのディレクトリに変更
cd %~dp0

REM ブクログのフィードを取得して、booklog.xmlという名前で保存
curl https://booklog.jp/users/amano225/feed > booklog.xml

REM FTP接続(ftp.txtに、booklog.xmlをアップロードする記述)
FTP -i -s:ftp.txt

ftp.txt

下記ページを参考に作りました。
WindowsバッチファイルとFTPコマンドファイルでFTP接続とファイル取得・転送する方法 | 俺の開発研究所

open {ホスト名} {ポート番号:21}
{FTPユーザー名}
{FTPパスワード}

cd {アップするFTPのディレクトリパス}
put C:¥{バッチファイルを置いているディレクトリパス}\booklog.xml
 
quit

後は、タスクスケジューラでパソコンにログオンする時に呼び出すように設定しました。

これで無事、『最近読んだ本』の表示を復活させることができました!

こうやって、FTPで自動アップできるのは便利ですね。Gatsby.jsのような静的サイトジェネレーター使って、ビルドからFTPによるアップまで自動化するなんてことができそうです。

コメント

タイトルとURLをコピーしました