PythonでYouTube API 続編

投稿者: | 2022-07-18
close up photo of keyboard

各局皆様、こんにちは。アマチュア無線局、JS2IIUです。

前の記事(PythonでYouTube API)ではYouTubeのキーワード検索の結果を得ることができました。さらにもう一工夫して遊んでみようと思います。キーワード検索の結果はmaxResultsパラメータを指定することで一度に最大50件のタイトルが返ってきます。この50件とは関係なく、キーワード検索で何件ヒットしたのか?という数字の情報も返ってきます。この情報で遊んでみます。

プログラムはあくまで参考です。各自の責任においてご活用ください。

目次

検索ヒット件数を取り出す

下のプログラム例のようにtotalResultsの値を取り出せば、キーワード検索で何件ヒットしたか?がわかります。取り出す部分は20行目です。

from http.cookies import SimpleCookie
import requests
import json

SEARCH_URL = 'https://www.googleapis.com/youtube/v3/search'
API_KEY = '### Your API Key here ###'

def searchYT(searchword):
    params = {
        'part': 'snippet',
        'q': searchword,
        'type': 'video',
        'maxResults': 10,
        'key': API_KEY
    }

    try:
        r = requests.get(SEARCH_URL, params=params)
        data = r.json()
        return data['pageInfo']['totalResults']
    except:
        return 0

if __name__ == '__main__':
    SEARCH_KW = 'JTDX'
    
    searchYT(SEARCH_KW)
    

動画の公開時期範囲を指定して検索する

次は、動画の公開時期別にヒット件数をチェックしてみます。期間を指定するにはpublishedAfterとpublishedBeforeパラメータにそれそれdatetimeを指定します。

from http.cookies import SimpleCookie
import requests
import json

SEARCH_URL = 'https://www.googleapis.com/youtube/v3/search'
API_KEY = '### Your API Key here ###'

def searchYTPeriod(searchword, pubA, pubB):
    params = {
        'part': 'snippet',
        'q': searchword,
        'type': 'video',
        'maxResults': 1,
        'publishedAfter': pubA,
        'publishedBefore': pubB,
        'key': API_KEY
    }

    try:
        r = requests.get(SEARCH_URL, params=params)
        data = r.json()
        return data['pageInfo']['totalResults']

    except:
        return 0

if __name__ == '__main__':
    SEARCH_KW = 'JTDX'

    searchYTPeriod('JTDX', '2018-01-01T00:00:00Z', '2019-01-01T00:00:00Z')
    

次にやりたくなるのは、publishedAfterとpublishedBeforeの範囲を変えて、時系列的にヒット件数の推移を見てみたくなります。何度もAPIにアクセスして遊んでいると、あっという間に一日あたりの制限に引っかかります。quotaExceededという403エラーが返ってきたら、残念ながら今日はもう遊べません。

JTDX関連動画の時系列推移

JTDXをキーワードにして、公開時期ごとに件数を確認してみました。これだけでAPIリクエストを13回も送っています。グラフも作ってみました。2020年あたりで急に増えていました。続きはまた後日。

Keyword: JTDX
Year: 2010-2011, result: 7
Year: 2011-2012, result: 13
Year: 2012-2013, result: 14
Year: 2013-2014, result: 51
Year: 2014-2015, result: 83
Year: 2015-2016, result: 112
Year: 2016-2017, result: 146
Year: 2017-2018, result: 331
Year: 2018-2019, result: 491
Year: 2019-2020, result: 624
Year: 2020-2021, result: 2296
Year: 2021-2022, result: 2155
Year: 2022-2023, result: 576

JS2IIU局ではJTDXを使用していますが、WSJT-Xについても確認してみました。APIのQuotaをあっという間に消費してしまいます・・・・

最後まで読んでいただき有難うございました。73

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です