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

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

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

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

YouTube

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

YouTube API

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

Q&A

解決済

2回答

5157閲覧

YouTubeのAPIから、その動画のタグを取得する方法

otsukisama

総合スコア5

cURL

cURLはHTTP, FTPやTelnetなど複数のプロトコルを用いてデータを転送するライブラリとコマンドラインツールを提供します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

YouTube

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

YouTube API

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

0グッド

1クリップ

投稿2020/03/22 23:52

編集2020/03/23 00:23

前提・実現したいこと

YouTubeのAPIを使って動画情報を取得しているのですが、タグも併せて取得したいです。
イメージ説明

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

タグの指定方法がわからず、取得できません。

以下のソースコードの$resには次の"tags"が取得されるのですが、しかしこの"tags"は上図のタグではないのです。

上図にあるように「#Dplay」と「#ディスカバる」というタグを取得したいのですが・・

"tags": [ "ディスカバリーチャンネル", "エド・スタッフォード", "ドキュメンタリー", "サバイバル", "ディスカバリー", "サバイバルリスト" ]`

該当のソースコード

以下、動画情報を取得するコードになります。$resで上図にある「#Dplay」と「#ディスカバる」というタグを取得したいのですが・・

PHP

1$id = 'Msr4QyPTcgA'; 2$id_arr = [ $id ]; 3$ids = urlencode( implode(",", $id_arr) ); 4 5$api_key = 'xxx'; 6$endpoint = "https://www.googleapis.com/youtube/v3/videos?id="; 7$fragment = "&fields=items(id,snippet(title,thumbnails,tags))&part=snippet"; 8$curl = $endpoint . $ids . $fragment . "&key=" . $api_key; 9$res = cuGet_contents( $curl ); 10var_dump( $res ); // 「#Dplay」と「#ディスカバる」というタグを取得したい 11 12function cuGet_contents( $curl ){ 13 $ch = curl_init(); 14 curl_setopt( $ch, CURLOPT_URL, $curl ); 15 curl_setopt( $ch, CURLOPT_HEADER, false ); 16 curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); 17 curl_setopt( $ch, CURLOPT_TIMEOUT, 10 ); 18 $result = curl_exec( $ch ); 19 curl_close( $ch ); 20 return $res; 21}

試したこと

日本語で公式ドキュメントがあります。
https://developers.google.com/youtube/v3/docs/videos?hl=ja

読んでみると、上記ソースコードのように

$fragment = "&fields=items(id,snippet(title,thumbnails,tags))&part=snippet";

と指定すれば取得できるかのように書いてあるのですが、しかしtitleとthumbnailsは目的のものなのに、tagsだけが目的と違います。

ドキュメントにはほかにetagという指定もあり、以下のように試したのですがこれも目的のものではありませんでした。

$fragment = "&fields=items(id,etag,snippet(title,thumbnails))&part=snippet";

補足情報(FW/ツールのバージョンなど)

上記ドキュメントにあるとおり、バージョンはData API v3を使用しています。

どうすれば「#Dplay」と「#ディスカバる」というタグを取得できるか、かなり路頭に迷っています。

もしお使いになったご経験のある方がいらっしゃいましたら、何か試すべき事柄などございませんでしょうか。

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

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

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

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

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

guest

回答2

0

ベストアンサー

snippet.descriptionに動画の説明欄に書かれている文章を取得できるのですが,そこにハッシュタグがテキストとして含まれています.

投稿2020/03/23 00:02

dark-eater-kei

総合スコア1248

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

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

otsukisama

2020/03/23 00:21

そんなところに…ありがとうございます。教えて頂かないと絶対わかりませんでした。
otsukisama

2020/03/23 00:25

それにしてもタグだけという指定はないのでしょうか? APIを使う側としては少し不便に感じませんか?
dark-eater-kei

2020/03/23 07:32

たしかに,ハッシュタグだけのフィールドがあってもいいように思いますが,こればっかりはどうしようもないものだと思ってます
otsukisama

2020/03/23 10:26

snippet.descriptionを抜き出し、正規表現で「#●●●」の部分を抜き出す、とかしかないでしょうか?なかなか厄介ですね汗 どうもありがとうございます。なんとか頑張ってみます。
guest

0

ハッシュタグは文章に含める(文章に埋め込む)もので、タグとは違うんです。
Twitter は投稿文字数に制限があるので、

”私は #Ubuntu が好きだ。そして #Microsoft は嫌いだ。”

などと書きます。(ラテン文字なら違和感がないのですが…以下略。)ハッシュタグの前後には半角スペースが必要。たしか日本向けは全角スペースでもいけたはず。(たぶん)
昔は日本語のハッシュタグは使えなかった。(はず)

で、動画を検索するときに、ハッシュタグがあるとないとでは、見つかり方がちがうのですが、それをしらない動画を投稿する人用に、インターフェースを別にしているのです。 Google の親切心。

あまりいれても、スパムみたいに全部ひっかかる。なんてことはなくて、逆に引っかからなくなるから、3つまでにしてます。入力項目が3つしかないから、それ以上入れられないと思わせている。
説明文章のどこに入れてもいい。いくついれてもいい。

で、動画を見る人には、「ははーん、このハッシュタグで検索すればいいのね」、ってわかるように、タイトルの上に3つだけ表示するようにしている。

ハッシュタグとタグは違うんです。

投稿2020/10/15 14:34

編集2020/10/15 14:38
Bindi

総合スコア129

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問