summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'README.md')
-rw-r--r--README.md37
1 files changed, 22 insertions, 15 deletions
diff --git a/README.md b/README.md
index 1eb452e..39dda67 100644
--- a/README.md
+++ b/README.md
@@ -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`)。