Youtubeの切り抜きを自動で行いランキング形式で表示するWebサイトを作る part1 --概略--
僕がどんなWebサイトをどうやって実現したのかを簡単に紹介します。
1、どんなWebサイトを作ったの?
Youtubeの切り抜きを自動で行いランキング形式(1〜10位まで)で表示するWebサイトを作りました。(特定のVtuber限定にしています)
- 基本的な機能:
ランキング対象日を選択して、検索ボタンを押せばその日に盛り上がった動画の上位10位を表示閲覧できる。
- オプション的な機能:
対象者を追加で指定することで、指定したVtuberの動画の中で盛り上がったところ10箇所を表示することができる。
1日に複数回動画を投稿している場合は横にフリックすることで複数動画の切り抜きを閲覧できる。
2、どうやって実現したの?
Webアプリケーション部分:
- PythonとYoutubeAPIを使用して、特定のVtuberのライブ配信チャットなどの情報や公開日などを取得
- 取得した情報をデータクレンジングして、盛り上がっている期間を判定し点数化
(今は単純にコメント量の多さで判断してます;;ホントはカッコよく機械学習とかやりたい) - 点数化したデータをDBに保存
- DBに保存したデータを表示するだけの機能を画面で提供
上記の処理1〜3は定期バッチ処理でやっているため、画面ではDBの内容をランキング形式にして表示しているだけ
インフラ部分:
・サーバはAWSのEC2を利用
→ ちょっと前までここにプログラムとか、ライブラリをそのままぶち込んでましたが、今は面倒なのでやってません。
・本番環境へのリリースはDocker-ComposeとECS、ECRを使用
→ このDocker-ComposeとAWSを組み合わせるのが結構難しくて泣きそうになりましたが、一度できるようになるとものすごいメリットがあるのでぜひ紹介したい。
・DBもDBコンテナを使用
→ 一般的にはAWSのRDSを利用すると思いますが、個人でやるにはちょっとお金がかかってしまうので、これも専用のコンテナを立てて管理しています。コンテナにデータを管理する場合は何もしないとデプロイのたびにデータが吹き飛ぶので、とある対策をしています。(別途紹介よてい)
※言葉だとわかりづらいと思うので、システムの構成とリリースの流れを以下に図で書きます。なんとなく流れが分かってもらえると思います。
Youtubeの切り抜きを自動で行いランキング形式で表示するWebサイトを作る part0 --導入--
初めまして。
Youtubeで切り抜き動画を見ることにハマっている普通の会社員です。
僕のブログは、勉強がてらにやっているWebアプリケーション開発で、苦労したところの情報共有&自分用のメモを目的としています。
同じようなことをしている人の助けになるべく、分かりやすいように記事を書こうと思いますので、興味を持たれた方はぜひ見てください :-)
1. 開発しているWebアプリケーションの概要
特定のVtuberのチャットコメントから盛り上がっている箇所を抽出し、もっとも盛り上がった場面のコメント数で日毎のランキングを作成する。
実際に公開しているのでよければ↓↓
http://vtuber-livechat-analytics.tk/myrestapi/vtuberPhotoFramesIndex/
2. 今後記事にしていく概要
Youtubeの切り抜きを自動で行いランキング形式で表示するWebサイトを作る過程を整理しつつ、各ステップで苦労した事と、その解決策を紹介していく
3. 僕のブログで学べること
⑴ Djangoフレームワークを利用したWebアプリケーション開発
⑵ AWS+Dockerを利用した環境構築
4. 開発環境&使用言語
(1) フロントエンド:HTML, CSS, Javascript, JQuery
(3) DB:Postgres
(4) 開発環境&ツール:PyCharm, AWS(CLI), Docker(Docker Compose)
(5) AWS関連:EC2、ECS、ECR, CloudWatch, AWS Secrets Manager など