0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

QPython で GUI プログラミング2(YouTube チャンネル登録者数カウンターを作る:未完)

Last updated at Posted at 2024-12-17

きっかけは…

前回 QPython で GUI プログラミング1(サンプルスクリプトを動かす) の記事で、サンプルスクリプトをもとに、XML で指定した位置に任意の文字を表示できることを確認した。

今回は前回のスクリプトを修正して YouTube チャンネル登録者数カウンターにすることを試みる。

なぜ YouTube チャンネル登録者数カウンターかというと、某 YouTuber が視聴者から Smiirl のカウンター をプレゼントされ、 YouTube チャンネル登録者数を背後で常時表示させているのを見たからである。
私は YouTube チャンネルを持っていないが、登録者数やフォロワー数カウンターのしくみを習得しておこうと思い、 手始めに MeePet を購入したというわけである(ちなみにその後、 Ulanzi TC001 も注文してしまった。こちらは YouTube チャンネル登録者数カウンター機能が初めから用意されている)。

YouTube チャンネル登録者数を Python で取得する

YouTube チャンネル登録者数を取得するには、まず YouTube Data API v3 の API キーを取得し、

このスクリプトの通りに実装すればよい。

ただし、 QPython はコマンドとしての pip が入っていないので、QPython の Terminal を起動した後、以下のようにしてモジュールをインストールする。

>>> # Ctrl + C を押して KeyboardInterrupt を発生させる
KeyboardInterrupt
>>> quit() # Python インタプリタを終了する

/ $ # Terminalが終了せずコマンドを受け付ける状態になる
/ $ cd # / ではインストール操作ができないのでホームディレクトリに移動
~/data/org.qpython.qpy/files $ python -m pip install google-api-python-client
# pip が使えないので、 python -m pip でインストール

LOAD ボタンを押すと YouTube チャンネル登録者数が表示されるようにする

前回からここまでの手法を組み合わせると、 LOAD ボタンを押したタイミングで YouTube チャンネル登録者数を取得、表示させることができるようになる。

なお、先程のブログ記事にあったチャンネル登録者数取得スクリプトでは int で整数値に変換してから表示・CSV 出力を行っているが、 self.views.((ID名)).text は文字列型しか受け付けないため、整数型への変換をしてはいけない。

YouTubeチャンネル登録者数手動取得(load関数部分のみ)
    def load(self, view, dummy):
        developerKey = "((取得したAPIキー))"
        channel_id = "((登録者数を取得したいチャンネルのID))"
        youtube = build('youtube', 'v3', developerKey=developerKey)
        request = youtube.channels().list(
            part = 'statistics',
            id = channel_id
        )
        response = request.execute()

        if response['items']:
            channel_info = response['items'][0]
            subscriber_count = channel_info['statistics']['subscriberCount']
        else:
            subscriber_count = "N/A"

        curdatetime = datetime.datetime.now()
        self.views.time.text = curdatetime.time().isoformat()[0:8]
        self.views.title.text = subscriber_count

qpython_counter_1.png
(きっかけとなった某 YouTuber、チャンネル登録者数が4万5千人に到達したようだ)

行き詰まる

後は、起動時の取得表示と、一定時間後の取得表示を実装すればカウンターとして完成する…わけだが、 qsl4ahelper の情報が日本語や英語だとあまりにも少なく(中国語だとQPython関連でそれなりにヒットするが)、ここから先に進めていない。
Android 用 Python アプリ開発環境である Kivy だと、 Clock object でこのあたりのイベント発生を行えるみたいだが、 qsl4ahelper でそのあたりの機能が見当たらないため、他のモジュールの機能を併用する必要がありそうである。

Python 未熟者の身にはこれ以上の解決法が見つからず、今回の記事はここまでとする。
次回は PHP で YouTube チャンネル登録者数カウンターを作る予定。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?