# mosquitone-admin mosquitone バンドの各システムを管理するリポジトリ。 ## システム構成 ### 公式サイト (official-site) - URL: https://www.mosquit.one - ホスティング: AWS Amplify (Gatsby) - App ID: `d33773t2lyrxkx` - GitHub リポジトリ: https://github.com/mosquitone/official-site-2023-dev - 本番ブランチ: `main` - リージョン: `ap-northeast-1` #### バックエンド (AppSync / DynamoDB) - エンドポイント: `.env` の `APP_SYNC_ENDPOINT` - API キー: `.env` の `APP_SYNC_API_KEY` #### 情報ソース | ソース | 説明 | アクセス方法 | |---|---|---| | **golive** (`golive.yyamashita.com`) | ライブハウス公演情報スクレイパー (tokyo-livehouse-events) | SQLite: `/app/tokyo-livehouse-events/data/events.db` | | **ライブハウス公式サイト** | イベント詳細・フライヤー画像 | HTTP fetch | | **tiget.net** | チケット販売(golive 経由で取得) | golive DB の `ticket_url` | golive が持つ会場スクレイパー(主要なもの): | AppSync venueName | golive venue_id | スクレイパー状態 | |---|---|---| | navey floor AKASAKA | `navey-floor` | ✅ | | Meets 大塚 | `meets-otsuka` | ✅ | | 国分寺MORGANA | `morgana-kokubunji` | ✅ | | BuzzFront Yokohama | `buzzfront-yokohama` | ✅ | | 下北沢ERA | `shimokitazawa-era` | ✅ | | 新代田FEVER | `fever-shindaita` | ✅ | | 吉祥寺WARP | `warp-kichijoji` | ✅ | golive に登録されていない会場は `enrich-event.py` が `detailURL` から直接フェッチする。 --- ## ライブ情報追加ワークフロー **新しいライブ情報を追加するときは必ず以下の手順で実施すること。** ### ステップ 1: イベント作成(基本情報) ```bash # events/ ディレクトリに JSON ファイルを作成 # ファイル名: YYYY-MM-DD-.json cp official-site/events/2026-06-27-cre4m-sod4.json official-site/events/.json # 内容を編集 ``` 必須フィールド: - `type`: `"LIVE"` (固定) - `date`: `"YYYY-MM-DD"` - `title`: イベント名(主催者の名称) - `venueName`: 会場名(golive の会場マップと対応させること) - `published`: `true` or `false` - `description`: 仮でも `""` 以外を設定(後でエンリッチが上書き) AppSync に登録: ```bash bash official-site/add-event.sh official-site/events/.json ``` 返ってきた `id` を控えておく。 ### ステップ 2: 自動エンリッチ(詳細情報を golive + 会場サイトから取得) ```bash # サーバー上で実行(golive SQLite DB に直接アクセスできる環境) python3 official-site/enrich-event.py ``` エンリッチが自動で行うこと: 1. **golive DB を検索** → `ticketURL`(tiget 等)、`detailURL`(会場イベントページ)、OPEN/START 時刻、出演者リストを取得 2. **会場イベントページをフェッチ** → フライヤー画像を抽出 3. **S3 にフライヤーをアップロード** → `public/site/live/-flyer.jpg` 4. **AppSync の Event レコードを更新** golive にまだデータがない場合(スクレイプが古い等)は先にスクレイプを更新する: ```bash # golive のスクレイプを更新(navey-floor の例) curl -H "X-Crawler-Access: f9a3c1e847b2d056" \ "https://golive.yyamashita.com/api/scrape?venue_id=navey-floor" # 完了を待ってから再実行 python3 official-site/enrich-event.py ``` 未エンリッチのイベントをまとめて処理する場合: ```bash python3 official-site/enrich-event.py --all-unenriched ``` ### ステップ 3: サイトをデプロイ ```bash bash official-site/deploy.sh ``` Amplify が `main` ブランチを再ビルドし、https://www.mosquit.one に反映される。完了まで約 5〜10 分。 --- ## よく使うコマンド ```bash # ライブ一覧(公開フラグ付き) bash official-site/list-events.sh # イベント追加 → エンリッチ → デプロイ(一連の流れ) bash official-site/add-event.sh official-site/events/.json python3 official-site/enrich-event.py bash official-site/deploy.sh ``` ## AWS 認証 `.env` に設定(git 管理外): ``` AWS_ACCESS_KEY_ID=... AWS_SECRET_ACCESS_KEY=... AWS_DEFAULT_REGION=ap-northeast-1 ``` `aws` コマンドが未インストールの場合は `/tmp/awscli/aws/dist/aws` を使用: ```bash AWS_CLI=/tmp/awscli/aws/dist/aws python3 official-site/enrich-event.py ``` ## AppSync Event スキーマ | フィールド | 型 | 必須 | 説明 | |---|---|---|---| | id | ID | ✓ | UUID(自動生成) | | type | EventType | ✓ | `LIVE` のみ | | date | AWSDate | - | YYYY-MM-DD | | title | String | ✓ | イベントタイトル | | venueName | String | - | 会場名 | | published | Boolean | ✓ | 公開フラグ | | description | String | ✓ | OPEN/START + 出演者 | | ticketFee | String | - | 料金テキスト | | ticketURL | AWSURL | - | チケット購入 URL | | detailURL | AWSURL | - | 会場イベントページ URL | | mainImageURL | AWSURL | - | フライヤー S3 URL | | shortTitle | String | - | 短いタイトル | | key | String | - | 日付キー(YYMMDD 等) | | venueURL | AWSURL | - | 会場 URL | | _version | Int | ✓ | Amplify DataStore 競合解決用(更新時に必須) |