各局皆様、こんにちは。アマチュア無線局、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