Amazon S3 互換のクラウドストレージ、MinIO のバケットを Podcast サーバーにしてしまおうという寸法です。
- バケット内のフォルダを1つの Podcast サイトとし、そこに存在する音声ファイルをもとに、同一フォルダ内に自動的に feed.rss と index.html を生成あるいは更新します。同時に複数の Podcast サイトを更新することも可能です。
- ファイルの名前をエピソードタイトルとして使います。
- ファイル名に含まれている最初の半角スペースを区切りとして認識し、区切りの前をタイトル、後を ISubtitle として登録します。
- 区切り以降に「第<半角数字>回」(第023回、第5回など)という文字列が存在する場合は、それを ISubtitle ではなく、エピソード番号として認識します。数字は全角ダメ、絶対。
- タイトルにエピソード番号を自動で追加するよう設定することができます(書式:「第~回」)。
- 下準備1:MinIO のバケットと Podcast ごとのフォルダを作成し、バケットには Read Only ポリシーを適用しておく。
- 下準備2:Podcast にしたいフォルダ直下に、配信したい mp3 もしくは m4a ファイルを置く。
- 下準備3:Podcast にしたいフォルダ直下に、image.jpg という名前でタイトル画像を設置する。
- cmd/miniocast フォルダで go get、go build すると、フォルダに miniocast コマンドができる。
- config.yml.example を config.yml にリネームまたはコピーし、バケットとフォルダなどの設定に応じて書き換えるあるいは追記する。
- ./miniocast で起動し、index.html と feed.rss を生成する。以後 Podcast のフォルダ内容を変更するたびに起動し、index.html と feed.rss を更新する。
- 作成した Podcast は iTunes ストア等で検索しても表示されないので、お使いのアプリに RSS フィードの URL:
{minioバケットのurl}/{フォルダ名}/feed.rss を直接登録してください。 - {minioバケットのurl}/{フォルダ名}/index.html にアクセスすると、シンプルな Web インターフェイスを表示することができます。各エピソードのタイトルをクリックすると、プレイヤーが表示されたり隠れたりします。注意:MinIO はウェブサーバではないので、index.html というファイルまで指定しないとサイトが表示されません。
- index.html は、config.yml で SavePlayState を true にすることにより、ブラウザを閉じたり再読み込みしても各エピソードの再生位置と再生速度を保存することができます。再生状態が保存されているエピソードはタイトルが緑色で表示されます。一時停止中にシークバーで再生位置をゼロに戻せば、保存状態をリセットできます。
……試しておりません。
Webインターフェイスのデザインは、Turing Complete FMのRui Ueyamaさんが気前よく公開してくださっている JavaScript と CSS を使わせていただきました。