2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Python]YouTube Data API v3で自分の登録チャンネルのリストを取得する

Last updated at Posted at 2024-06-19

YouTube Data APIの「Python クリックスタート」のとおりにしたらつまづいたのでメモを残す

環境

wsl

>wsl --version
WSL バージョン: 2.2.4.0
カーネル バージョン: 5.15.153.1-2
WSLg バージョン: 1.0.61
MSRDC バージョン: 1.2.5326
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26091.1-240325-1447.ge-release
Windows バージョン: 10.0.22631.3737

Python

$ python --version
Python 3.10.12

手順

ここに書かれている通りに勧める。

  • 登録チャンネルリストの取得ではAPIキーは不要なのでAPIキーに関することはスルーする

実行するとエラーが発生する

$ python example.py
Traceback (most recent call last):
  File "sample.py", line 41, in <module>
    main()
  File "sample.py", line 29, in main
    credentials = flow.run_console()
AttributeError: 'InstalledAppFlow' object has no attribute 'run_console'

クイックスタートでインストールしたモジュールは最新のバージョンではrun_consoleがないらしい

pip install --upgrade google-api-python-client
pip install --upgrade google-auth-oauthlib google-auth-httplib2

このバージョンで解決するらしい

google-api-python-client==1.7.2
google-auth==2.14.1
google-auth-httplib2==0.0.3
google-auth-oauthlib==0.4.1

上記バージョンのモジュールをインストールすることでサンプルコードは実行できるようになった

最新バージョンを使用するためには

run_console()は Google によって非推奨になっているらしいが、それならどう解決するべきか

run_local_server()を使用するのが正解っぽい
とりあえずモジュールを最新にする

pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib

run_console()をrun_local_server()にして実行するとエラーが発生する

Traceback (most recent call last):
  File "/mnt/c/Users/satoshi/Projects/Youtube/get-my-subscription-list.py", line 41, in <module>
    main()
  File "/mnt/c/Users/satoshi/Projects/Youtube/get-my-subscription-list.py", line 29, in main
    credentials = flow.run_local_server()
  File "/mnt/c/Users/satoshi/Projects/Youtube/.venv/lib/python3.10/site-packages/google_auth_oauthlib/flow.py", line 444, in run_local_server
    webbrowser.get(browser).open(auth_url, new=1, autoraise=True)
  File "/usr/lib/python3.10/webbrowser.py", line 65, in get
    raise Error("could not locate runnable browser")
webbrowser.Error: could not locate runnable browser

これはWebブラウザを開こうとして失敗したということらしい。wslでbrowser.get()は機能しないのかもしれない。なのでrun_local_server()の引数にopen_browser=Falseを渡すと

Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=314104985852-8oqdcunjkim2bfijomq2ilp6g00qukfv.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly&state=bWv3M7G4HLjuCVYxvFPEPqAsOsdx8r&access_type=offline

となるのでクリックするとブラウザが開き認証ができるようになる

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?