Youtubeのチャンネル登録者数の増減を一日一回LINE Notifyで教えてくれるWebサイト「Youtube Checker」を作成、公開したのでお知らせ。
前回Pythonで同じことを行うプログラムを作成したのだけど、(前回の記事:PythonでYoutubeチャンネル登録者数の増減を定期的にLINEで通知する)サーバーが必要だったりDockerで実行するにしても常時稼働させておくPCをだれもが用意できるわけではないので、もっと手軽にできないか考えた結果、Webサービスとして公開することに。
ログイン
OpenIDを使ってLINEもしくはGoogleアカウントでのシングルサインオンが可能。ユーザー認証はOpenIDのみで、このサイト独自のユーザーIDとパスワードは必要ないようにした。もちろんこのサイトのユーザーはデータとして存在するので、IDをOpenIDで取得できる一意なIDをそのままサイトのユーザーIDとして使用している。LINEとGoogleのアカウント、たとえ同じ人のものでもこのサイトでは別々のアカウントとして扱われる。
LINEログインチャンネルと、LINEメッセージ用の公式アカウントを作成して使用。公式アカウントを友だち追加してもらえればそこでプッシュ通知することもできるかと思ったけど、無料版では月1000通までということで、一日一回通知したらユーザーが33人そこらで上限に達してしまうので、公式チャンネル内で通知する案はボツに。今後はBOTを作って登録チャンネルの登録者数を答えたり、リストの追加、削除がLINEからできたら面白いかも。
LINE Notify連携
ユーザーのLINE Notify宛に送信するために、LINE Notifyとの連携もOAuth認証で行っている。LINEログインとLINE Notifyの連携は別にしないといけないので、ユーザーからしてみたらわかりにくい。LINEでログインしたらそのまま使えるようになると思う人が多いと思う。まぁしょうがない。
チャンネル追加
チェックしたいチャンネルを10件まで登録できる。10件とは心もとないが、後述するYoutube Data APIのクオータと勘案してあまり多く登録できてしまうと制限にすぐ達してしまう恐れがあるので少なめにしてある。リストすべての現在のデータと、各チャンネルのデータの推移をCSVでダウンロードできる。
アカウント設定
OpenIDで取得したID、名前、プロフィール写真を表示しているけど、名前とプロフィール画像は特に使用する予定もない。とりあえず保存してあるだけ。
設定項目は、何時に通知するかの設定だけ。
LINE Notifyとの連携解除はLINE Notifyのサイトからでも解除できるのでサイト側で必ずしも作る必要はないと書いてあったけど、一応つけておいた。解除したあとはもちろん通知はいかなくなる。
Youtube Data APIのクオータについて
1つのAPIキーで一日10,000クエリーまで行けるとのことだったので、1クエリ=1回の検索だと勘違いしていた私は、「なんだ、余裕じゃん」と思ってカスタムURLを検索してチャンネルIDに変換して追加する機能もつけていたのだけど、検索は一回の検索で100クエリ分消費するため1日100回しか検索できないということを知って、その機能はお蔵入りに。面倒だけどチャンネルIDを探してください。ちなみにチャンネルIDからチャンネル情報をとってくるAPIは基本1+パーツごとに1クエリしか消費しない。ID追加は1クエリ、更新は50件ごとに2クエリですむ。経済的!
それで、このサイトの定員ユーザー数を見積もると、結構行ける気がする。ま、そこまで使ってくれる人が増えるかどうかはわからないけど。
Flaskフレームワークを使ってみて
今回初めてPythonのWebフレームワークであるFlaskを使ってみた。Djangoの方が情報が多くて良さげだったのだけど、フルスタックフレームワークのためかなり重量級なフレームワークでこの規模のサイトには大げさかなとおもったので、軽量級のFlaskを選択。
それでも、基本的な機能はあるし、拡張機能を入れていけば結構色々対応できそう。今回はMVTのモデルの部分はデフォルトのユーザークラスぐらいしか使っていない。たぶんチャンネルとかもモデルで定義すべきなんだろうけど、Viewの部分でゴリゴリ更新してしまっている。でもテンプレートは分離できているかな。。。
Bootstrapにもお世話になった。これ、かなり便利だし、デザインセンスがない私にはそれなりのデザインができるという点でかなり助かる。もっと前から知っておきたかった。。。
やりたいこと(できなかったこと)
- 登録者数や再生数などの推移をグラフ化
- 公式アカウントのBOT化
- Youtubeアカウントと連携して登録してあるチャンネルのIDをインポート(Youtube Data APIにOAuthでアクセスして情報を取得する場合は申請が必要とのこと。動画を撮ったり色々面倒っぽかった)
Webサイトのオープンソース化
今回のこのサイトのソースはGitHubで公開している。Webサービスのソースをオープンソース化するのは攻撃リスクがあって普通はやらないと思うのだけど、勉強を兼ねて。
私のGitHubアカウント:shipwebdotjp / youtubechecker
Comments