質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

YouTube

YouTubeとはユーザーがビデオをアップロード・共有・閲覧できるビデオ共有ウェブサイトです。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1907閲覧

YoutubeAPIでチャンネルIDを指定しつつキーワード検索をしたい。

thaqulla

総合スコア12

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

YouTube

YouTubeとはユーザーがビデオをアップロード・共有・閲覧できるビデオ共有ウェブサイトです。

YouTube API

YouTube APIはYouTubeのビデオコンテンツと機能性をウェブサイト、アプリケーション、デバイスに統合することを可能にします。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/10/28 02:39

前提・実現したいこと

Youtubeで特定のチャンネル内でキーワード検索をしたい。
Jupyter notebook 上で上記のことを実現したいと思い不慣れながらYouTube Data API v3 を導入。Pythonで記入してみた。

例としてホロライブ公式チャンネルで投稿されているアニメのみを抽出したいと思い、まずは以下のコードを記入

#python 3.8.3 #jupyter-notebook : 6.0.3 from apiclient.discovery import build API_KEY = '自分のAPIkey' youtube = build('youtube', 'v3', developerKey=API_KEY) search_response = youtube.search().list( part='snippet', q='アニメ', order='viewCount', type='video', ).execute() search_response['items'][0]

問題なくJSON形式で返ってきた。

{'kind': 'youtube#searchResult', 'etag': 'h1-Yh-rx3pdhAid3YqqgBEO556s', 'id': {'kind': 'youtube#video', 'videoId': '2pECnr5MNuU'}, 'snippet': {'publishedAt': '2019-07-10T15:00:00Z', 'channelId': 'UCY5fcqgSrQItPAX_Z5Frmwg', 'title': 'TVアニメ「ダンベル何キロ持てる?」OPテーマ Muscle Video', 'description': 'TVアニメ「ダンベル何キロ持てる?」OPテーマ「お願いマッスル」 歌:紗倉ひびき(CV:ファイルーズあい)&街雄鳴造(CV:石川界人)/街雄鳴造(CV:石川界人) 2019年7月24 ...', 'thumbnails': {'default': {'url': 'https://i.ytimg.com/vi/2pECnr5MNuU/default.jpg', 'width': 120, 'height': 90}, 'medium': {'url': 'https://i.ytimg.com/vi/2pECnr5MNuU/mqdefault.jpg', 'width': 320, 'height': 180}, 'high': {'url': 'https://i.ytimg.com/vi/2pECnr5MNuU/hqdefault.jpg', 'width': 480, 'height': 360}}, 'channelTitle': 'KADOKAWAanime', 'liveBroadcastContent': 'none', 'publishTime': '2019-07-10T15:00:00Z'}}

当然チャンネルIDを指定していないのでホロライブとは関係のない動画が検索結果として出てきてしまった。そのためIDも記入してこれで絞り込みができると思いきや、、、

#python 3.8.3 #jupyter-notebook : 6.0.3 from apiclient.discovery import build API_KEY = '自分のAPIkey' id_= "UCJFZiqLMntJufDCHc6bQixg" #hololive 加えたもの youtube = build('youtube', 'v3', developerKey=API_KEY) search_response = youtube.search().list( part='snippet', id=id_, #加えたもの q='アニメ', order='viewCount', type='video', ).execute() search_response['items'][0]

エラーが出てしまった。

発生している問題・エラーメッセージ

--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-22-1be1a85a803e> in <module> 6 youtube = build('youtube', 'v3', developerKey=API_KEY) 7 ----> 8 search_response = youtube.search().list( 9 part='snippet', 10 id=id_, ~\anaconda3\lib\site-packages\googleapiclient\discovery.py in method(self, **kwargs) 1017 for name in kwargs: 1018 if name not in parameters.argmap: -> 1019 raise TypeError('Got an unexpected keyword argument {}'.format(name)) 1020 1021 # Remove args that have a value of None. TypeError: Got an unexpected keyword argument id

試したこと

「id」が予期せねキーワードであることが分かったが、ID指定をしないと絞込検索ができないためどうしようもない。

https://developers.google.com/youtube/v3 を見たがよくわからない。そもそもpartパラメータの'snippet'の意味が分からないのが原因だと思われるが私の手腕では解決できるサイトが見つからない。YouTubeDataAPI公式サイト以外でおすすめがあればそれも合わせて教えていただけると嬉しいです。

Teratail初投稿なので回答はお手柔らかにお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

チャンネルIDを指定する場合のパラメータはidではなくchannelIdです。

イメージ説明

引用:Search: list | YouTube Data API | Google Developers

diff

12-id=id_, #加えたもの 3+channelId=id_, 4

投稿2021/10/28 03:32

編集2021/10/28 03:35
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thaqulla

2021/10/28 15:51

大文字小文字でもエラー出るんですね、、、 以前そのパラメータを使用したとき "channelID" としてしまったため原因が分からず使えないパラメータと思ってしまっておりました。 ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問