ユーニックス総合研究所

  • home
  • archives
  • python-youtube-api

Python3でYoutube Data APIを使ってキーワード検索する

  • 作成日: 2020-09-06
  • 更新日: 2023-12-24
  • カテゴリ: Python

Youtube Data APIとは?

Youtube Data APIとはGoogleが開発者に公開するYoutubeへのアクセス方法です。
こういったものはAPIと呼ばれます。

APIを使うとYoutubeが保有している大量のデータにアクセスでき、その資産を自分のプログラムで活用することが出来るようになります。

APIの利用にあたって

Youtube Data APIを利用するにあたって↓の手順を踏む必要があります。

  • Googleのアカウントを作る
  • Google Cloud Platformで新規プロジェクトを作る
  • Google Cloud PlatformでYoutube Data APIを有効化する
  • Youtube Data APIを使ったPythonスクリプトを書く

Googleのアカウントを作る

Googleアカウントを持っていない場合は以下のページからGoogle アカウントを新規作成します。
姓名、ユーザー名、パスワードを入力し、ライセンスに同意するとアカウントを利用できるようになります。

Google Cloud Platformで新規プロジェクトを作る

Google Cloud Platformのページにアクセスします。

左上のドロップダウンメニューから新規プロジェクトを作成します。

Google Cloud PlatformでYoutube Data APIを有効化する

新規プロジェクトを作成したら、プロジェクトにチェックを入れます。
それから左のメニューの「APIとサービス」から「ダッシュボード」に移動します。
そこから更に「APIライブラリ」に移動し、APIの一覧から「Youtube Data API v3」をクリックします。
移動後のページで「Youtube Data API v3」の「APIを有効にする」をクリックします。
「認証情報」の画面から「認証情報作成」のボタンを押してAPIキーを取得します。

APIキーとは

APIキーとはAPIを使う時に利用する認証のキーのことです。
GoogleはこのAPIキーによってだれがAPIを利用しているのかを認識し管理します。
このAPIキーは作成したアカウントに紐づけられているため重要です。

たとえばこのAPIキーを別の誰かに渡したとします。
するとその別の誰かはそのAPIキーを使ってGoogleのAPIを利用できるようになります。
しかし、別の誰かが利用しているAPIキーは、あなたのアカウントに紐づけられているため、たとえばAPIが有料だった場合、Googleからの請求は別の誰かにではなくあなたに行きます。

なにも利用してないのにGoogleから請求が来た! なんてことにならないようにするために、APIキーは大切に管理しましょう。

Youtube Data APIを使ったPythonスクリプトを書く

APIキーをコピペしたらYoutubeのAPIを利用するPython3のスクリプトを書きます。
仮想環境などを作成し、pipgoogle-api-python-clientをインストールします。

$ pip install google-api-python-client  

↓が今回作成するPythonのスクリプトです。
キーワードを検索し、動画情報(タイトルや説明、チャンネルIDなど)のリストを取得します。
APIキーの定数YOUTUBE_API_KEYにはさきほどコピペしたAPIキーを入れます。

#!/usr/bin/python  
from googleapiclient.discovery import build  
import argparse  


YOUTUBE_API_KEY = 'ここにAPIキーを入れる'  


def search_youtube(options):  
    # Youtubeオブジェクトを生成  
    youtube = build('youtube', 'v3', developerKey=YOUTUBE_API_KEY)  

    # 検索を実行しレスポンスを得る  
    search_response = youtube.search().list(  
        part='snippet',  # 取得するオブジェクト。今回はsnippetのみ利用する  
        q=options.q,  # 検索したい文字列を指定  
        order='viewCount',  # 視聴回数が多い順に取得  
        maxResults=options.max_results,  # 結果の最大数を指定  
    ).execute()  

    # print(search_response)  
    for item in search_response['items']:  
        # snippetを取得  
        snippet = item['snippet']  

        # snippetの情報を表示  
        print('タイトル:', snippet['title'])  
        print('チャンネルID:', snippet['channelId'])  
        print('説明:', snippet['description'])  
        print('-' * 20)  


def main():  
    # オプション解析  
    argparser = argparse.ArgumentParser('Search keyword on Youtube')  
    argparser.add_argument("--q", help="Search term", default="Google")  
    argparser.add_argument("--max-results", help="Max results", default=25)  
    args = argparser.parse_args()  

    # 検索を実行  
    search_youtube(args)  


if __name__ == '__main__':  
    main()  

このスクリプトを実行すると↓のような結果になります。

$ python search_youtube.py --q 自転車 --max-results 4  

タイトル: 【靴底溶解!!】自転車vs人間!!  
チャンネルID: xxxx  
説明: 次へ進め!!Click to continue!!→ http://www.youtube.com/watch?v=cmNfoAwmPQk&list=PLT61MDfjGO7p3_8pTf5eXbnl89qAjqScW メイキング動画を見よう!  
--------------------  
タイトル: 謎の自転車娘に追い越された><サイクリングで追いかけっこ遊び☆Little Mommy Bicycle doll himawari-CH  
チャンネルID: xxxx  
説明: まーちゃんおーちゃん #HIMAWARIちゃんねる #ひまわりチャンネル 【HIMAWARIちゃんねるオリジナルグッズ】 ご購入は ...  
--------------------  
タイトル: 【100万円】未来の自転車がヤバすぎたので買いましたwwwwww  
チャンネルID: xxxx  
説明: 未来の自転車: https://veloart-intelligence.com/ チャンネル登録よろしくおねがいします ! My name is Hajime! 【Samantha Thavasa x はじめしゃちょー】スペシャルコラボ ...  
--------------------  
タイトル: けんたさん  
チャンネルID: xxxx  
説明: 日本にもっと豊かなサイクルライフを! 自転車と相性のいい動画を上げてます( ̄∀ ̄) なるべく飽きないような動画を作ることを心がけてます。良ければ見ていってください!  
--------------------  

Youtubeの動画のタイトルなどが取得できてますね。

おわりに

YoutubeのAPIは思ったより簡単に利用できました。
YoutubeのAPIについては下記の公式ページにサンプルが多数掲載されているので気になる方はチェックしてみてください。
ただ、Pythonのコードは今のところ2系になっているので注意してください(3系で利用するには移植が必要です)。

参考