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?

YouTube Data API V3を使って 登録チャンネルを抽出する。

Last updated at Posted at 2025-04-05

やりたいこと

YouTubeを視聴していたら、把握しきれないほどに登録チャンネル数が増えてしまっていて、管理出来なくなってしまいました。
なので、まずはその第一歩として、最近活動していないチャンネルを登録チャンネルから抽出し、しばらく活動していないチャンネルを登録削除させたい。

今回の目標

今回はYouTube Data API V3を使えばプログラマブルにYouTubeのデータにアクセス出来るらしいので、YouTube Data API V3の使い方を学びつつ、登録チャンネルを抽出するところまでやっていきます。

開発&実行環境

OS:Windows 11 の WSL2
言語:Python3

事前準備

1.Google Cloud Consoleにアクセスし、YouTubeにアクセスするための情報を取得する。

こちらの記事を参考にさせて頂きました。
https://qiita.com/nbayashi/items/bde26cd04f08de21d552
https://qiita.com/mnoguchi/items/7d7795444afb9d9dafa8

最終的には、
スクリーンショット 2025-04-05 095208.png
このJSONをダウンロードする。

以下の項目は以下を設定する。
image.png

対象→テストユーザーにYouTubeで使用しているアカウントを設定する。
スクリーンショット 2025-04-13 085118.png

2.Pythonコード

from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from apiclient.discovery import build
from apiclient.errors import HttpError
import pandas as pd

# API情報
YOUTUBE_API_SERVICE_NAME = 'youtube'
YOUTUBE_API_VERSION = 'v3'
SCOPES = ['https://www.googleapis.com/auth/youtube.readonly']

def get_authenticated_service():
  flow = InstalledAppFlow.from_client_secrets_file(
          'client_secrets.json', SCOPES)
  creds = flow.run_local_server(port=8080, open_browser=True)
  return build(
    YOUTUBE_API_SERVICE_NAME,
    YOUTUBE_API_VERSION,
    credentials=creds
    )

def get_subscribed_channels(youtube):
  channels = []
  request = youtube.subscriptions().list(
    part='snippet',
    mine='true',
    maxResults=50,
  )

  while request:
    response = request.execute()
    for item in response['items']:
      title = item['snippet']['title']
      channel_id = item['snippet']['resourceId']['channelId']
      print(f'{title}(Channel ID: {channel_id}')
      channels.append((title, channel_id))
    request = youtube.subscriptions().list_next(request, response)
  return channels

youtube = get_authenticated_service()
subscribed_channels = get_subscribed_channels(youtube)
print(f'\n📺 登録チャンネル数:{len(subscribed_channels)}')

ダウンロードしたJSONはclient_secrets.jsonに名前を変更し、同じフォルダに設置する。

実行すると、コンソールにURIが出力されるので、コンソールのリンクからGoogleログイン画面にアクセスし、YouTubeアカウントでログインする。

実行結果

登録チャンネル名とChannel ID一覧が出力される。
image.png

プログラムでやっていること解説

  • Client_secrets.jsonの情報からGoogleアカウントのログイン画面に遷移し、ログインしたユーザーのアクセストークンを取得
  • YouTubeにアクセスするためのクライアントを作成
  • subscriptions().list()で登録したチャンネルのリストを取得するリクエストを作成
  • リクエストを実行し、結果を取得
  • リクエスト実行結果は一回につき最大50件まで取得できるので、list_next()で取得できていない残りを繰り返し取得する

ブログやってます。
https://taki-lab.site/bocci/

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?