diff options
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 37 |
1 files changed, 22 insertions, 15 deletions
@@ -1,32 +1,39 @@ # studio-slots -西荻窪周辺の音楽スタジオの空き枠を、日付ごとに一覧で見るためのローカルWebページ。 +スタジオの空き枠を「スタジオセット」(西荻窪周辺、吉祥寺など)ごとにまとめて見る Web ページ。 +https://studio.yyamashita.com ```sh python3 server.py # → http://localhost:8000 ``` -依存ライブラリなし(Python 3.9 以上)。 +依存ライブラリなし(Python 3.9 以上)。リンキィディンクの空き枠は会員ページから読むので、 +`.env` に会員情報が要る(リポジトリには入れない)。 + +``` +RINKY_ID=会員番号またはメールアドレス +RINKY_PASSWORD=パスワード +``` ## 構成 -- `studios.json` … スタジオの一覧(名前、部屋、営業時間、予約ページ、電話番号、使う provider) -- `providers/` … 空き枠の取得元。`fetch(studio, date)` が `[{"room", "hour", "status"}]` を返す - - `sample` … 画面確認用のダミーデータ(今はすべてこれ) - - `manual` … `manual_slots.json` に手で書いた予約済み枠を読む -- `server.py` … `/api/slots?date=YYYY-MM-DD` と `static/` を配信 -- `static/index.html` … 一覧画面 +- `studios.json` … スタジオセットとスタジオ(名前、公式サイト、電話番号、使う provider) +- `providers/` … 空き枠の取得元。取得結果は 5 分キャッシュする + - `rinky` … リンキィディンク(Reserve Mart / reserve1.jp)。1 回ログインして店舗(`grand`)と日付を切り替えて読む +- `server.py` … `/api/sets`、`/api/slots?set=&date=YYYY-MM-DD` と `static/` を配信 +- `static/index.html` … 一覧画面。`?set=kichijoji&date=2026-11-07` のように URL で開ける -## 実データに切り替えるには +`provider` が `null` のスタジオ(ノア、UEN、Akseli)は空き枠を取れないので、電話番号とリンクだけ出す。 +サウンドスタジオノアは公式サイトが自動アクセスを 403 で弾くため取得していない。 -1. `studios.json` の部屋名と営業時間を実際のものに直す(今はすべて仮の値) -2. `providers/` に取得用のモジュールを足して `providers/__init__.py` の `PROVIDERS` に登録する -3. 該当スタジオの `"provider"` をそのモジュール名に変える +## スタジオを足すには -リンキィディンクは Reserve Mart(reserve1.jp)で予約を受けていて、空き枠を見るには会員ログインが必要。 -ID とパスワードは `.env` などに置き、リポジトリには入れないこと。 +1. `studios.json` の `studios` に追加し、見せたいセットの `studios` に id を並べる +2. リンキィディンクの別店舗なら `"provider": "rinky"` と `"grand"`(店舗番号。公式サイトの予約ボタンの `gr`)だけでよい +3. 別の予約システムなら `providers/` にモジュールを足して `PROVIDERS` に登録する ## デプロイ `git push` で post-receive フックが `/app/studio-slots` にチェックアウトし、`docker compose up -d --build` する。 -コンテナ名は `studio-app`(web ネットワーク、ポート 8000)。設定は hetzner-infra 側(`git/repos.txt`、`git/hooks/studio-slots/`)。 +コンテナ名は `studio-app`(web ネットワーク、ポート 8000)。Caddy が studio.yyamashita.com で HTTPS を終端する。 +設定は hetzner-infra 側(`git/repos.txt`、`git/hooks/studio-slots/`、`caddy/Caddyfile`)。 |
