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

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

新規登録して質問してみよう
ただいま回答率
85.48%
YouTube API

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

1回答

667閲覧

Youtube APIで動画情報を取得しサイトに表示しているがすぐに制限量を超過し表示できなくなる

GenkiSugiyama

総合スコア86

YouTube API

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

3クリップ

投稿2019/09/02 03:35

編集2019/09/02 03:35

現在自分のサイト上に自分が投稿しているyoutubeの動画情報(サムネイルとタイトル)を表示したいと考えています。

方法を調べ、youtubeAPIを使ってデータを取得、表示できるということだったのでAPIを使って表示させました。

方法としては、『動画情報を取得するJSファイルを作成し、サイトのTOPページ用のhtmlの方でそのJSファイルを読み込み表示する』というものです。

この方法で表示自体はできたのですが、すぐAPIのクォータ制限となってしまいデータを取得できなくなってしまいます。
すぐ制限になってしまうのは、ローカル上でレイアウトの確認等で何回もhtmlファイルをリロードし、その度にAPI情報を使っているからとは思いますが、幾ら何でも制限にかかってしまうのが早すぎる印象です。

このままでは公開したとしても、複数人のアクセスによってすぐ制限がかかり、表示できなくなると思うのですが、複数人がアクセスしてもクォーターの上限に引っかからないための対策はあるのでしょうか?

制限の上限を引き上げる方法もあるようですが、課金は考えておらず可能であれば制限はそのままでサーバーに公開し複数人がアクセスしても問題なく動画情報を引っ張ってくることができる方法があればご教示いただきたいです。

①YoutubeAPIを使って複数人アクセスに耐えられる動画情報取得方法

こちらが現実的でなければ

②それ以外の方法で動画情報を表示する方法 (最悪ハードコーディングも検討しているのでそれ以外の方法でお願いいたします。)

下記、動画情報取得用のJSのコードになります。

JavaScript

1//リクエストパラメーターのセット 2const KEY = 'API KEY' ;// APIKEY 3let url = 'https://www.googleapis.com/youtube/v3/search'; // APIURL 4url += '?part=snippet';//検索結果にすべてのプロパティを含む 5url += '&maxResults=4';//動画の最大取得件数 6url += '&channelId=CHANNEL ID ';//チャンネルID指定 7url += '&key=' + KEY;//APIKEY 8 9 10//ここでconsole.log(url)をして、urlが作成されているか確認 11//コンソールに出てきたurlをブラウザに貼り付け正常に動作するか確認する 12//APIからのレスポンスでJSONが返ってきていればOK 13 14$(function(){ 15 if($('#videoList').length){ 16 console.log(url); 17 function setData(data){ 18 let result = ''; 19 let thumbnail = ''; 20 //動画を表示するHTMLを作る 21 for (let i = 0; i < data.items.length; i++){ 22 thumbnail = '<img src="'; 23 thumbnail += data.items[i].medium.url; 24 thumbnail += '">'; 25 result += '<div class="other-card">' + thumbnail + '</div>' 26 } 27 $('#videoList').html(result); 28 } 29 //Ajax通信をする 30 $(function(){ 31 $.ajax({ 32 url: url, 33 dataType : 'jsonp' 34 }).done(function(data){ 35 if(data.items){ 36 setData(data); 37 } else{ 38 console.log(data); 39 alert('該当するデーターが見つかりませんでした。') 40 } 41 }).fail(function(data){ 42 alert('通信に失敗しました。'); 43 }); 44 }); 45 function setData(data){ 46 let result = ''; 47 let thumbnail = ''; 48 let title = ''; 49 let link = ''; 50 //動画を表示するHTMLを作る 51 for (let i = 0; i < data.items.length; i++){ 52 link = '<a class="youtube-link cover" href="https://www.youtube.com/watch?v='; 53 link += data.items[i].id.videoId; 54 link += '" target="_blank"></a>'; 55 thumbnail = '<div class="img_box"><img class="other-img" src="'; 56 thumbnail += data.items[i].snippet.thumbnails.medium.url; 57 thumbnail += '">' + link + '</div>'; 58 title = '<div class="event-body"><h4>'; 59 title += data.items[i].snippet.title; 60 title += '</h4>' + link + '</div>'; 61 62 result += '<div class="other-card">' + thumbnail + title + '</div>'; 63 } 64 $('#videoList').html(result); 65 } 66 } 67});

皆様のお力をお貸しいただけますと助かります。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

都度 API を叩く設計になっているので、設計を見直すことが必要かと。
要件が不明なのでアドバイスは一般論となりますが、API での検索結果をキャッシュとしてサーバに置き、それを配信することで対応することになると思います。
キャッシュ更新は API の制限レートに併せて適度に行うことになります。

投稿2019/09/02 10:01

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

GenkiSugiyama

2019/09/02 10:33

@te2ji 様 ご回答いただきありがとうございます。 現状はフロント側でページをロードする度にAPIを叩いてしまっているという認識で合っていますでしょうか? 対策としては、APIの取得結果をサーバーに置きそれを配信するということですが、そのためにはどのような処理が必要となるのでしょうか?(サイトはcakePHPで作られているのでサーバーサイドのPHPで取得処理を書いてそのファイルをどこかのディレクトリに配置するなどでしょうか?) 知識不足、勉強不足なため質問が曖昧になってしまい大変恐縮ですが、ご教示いただけると幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問