如何在 php 中读取 youtube 数据 api v3 响应

Posted

技术标签:

【中文标题】如何在 php 中读取 youtube 数据 api v3 响应【英文标题】:How to read youtube data api v3 response in php 【发布时间】:2014-10-31 03:36:45 【问题描述】:

我有以下代码:

$yt_profiles = $youtube->channels->listChannels('brandingSettings', array(
'mine' => 'true',
));

返回以下输出:

Google_Service_YouTube_ChannelListResponse Object
(
[collection_key:protected] => items
[etag] => "WFPuK6TsnblcGPcnMex79s42ynQ/sTnuE1bHO-tokx_mFFDt1ybN90g"
[eventId] => 
[itemsType:protected] => Google_Service_YouTube_Channel
[itemsDataType:protected] => array
[kind] => youtube#channelListResponse
[nextPageToken] => 
[pageInfoType:protected] => Google_Service_YouTube_PageInfo
[pageInfoDataType:protected] => 
[prevPageToken] => 
[tokenPaginationType:protected] => Google_Service_YouTube_TokenPagination
[tokenPaginationDataType:protected] => 
[visitorId] => 
[modelData:protected] => Array
    (
        [pageInfo] => Array
            (
                [totalResults] => 1
                [resultsPerPage] => 1
            )

        [items] => Array
            (
                [0] => Array
                    (
                        [kind] => youtube#channel
                        [etag] => "WFPuK6TsnblcGPcnMex79s42ynQ/ecOcHFmWyWQ7ToCD7-B1L36b4L4"
                        [id] => UCQO6uXy5maTpYvSa_yM--Bw
                        [brandingSettings] => Array
                            (
                                [channel] => Array
                                    (
                                        [title] => Vasim Padhiyar
                                        [showRelatedChannels] => 1
                                        [featuredChannelsTitle] => Featured Channels
                                        [featuredChannelsUrls] => Array
                                            (
                                                [0] => UCw-TnDmYDQyjnZ5qpVWUsSA
                                            )

                                        [profileColor] => #000000
                                    )

                                [image] => Array
                                    (
                                        [bannerImageUrl] => http://s.ytimg.com/yts/img/channels/c4/default_banner-vfl7DRgTn.png
                                    )

                                [hints] => Array
                                    (
                                        [0] => Array
                                            (
                                                [property] => channel.featured_tab.template.string
                                                [value] => Everything
                                            )

                                        [1] => Array
                                            (
                                                [property] => channel.banner.image_height.int
                                                [value] => 0
                                            )

                                        [2] => Array
                                            (
                                                [property] => channel.modules.show_comments.bool
                                                [value] => True
                                            )

                                    )

                            )

                    )

            )

    )

[processed:protected] => Array
    (
    )

)

我想循环通过 modelData:protected 变量来获取频道列表及其项目数据。它的 json 对象因此 $yt_profiles->modelData:protected 在访问时不起作用。请帮我解决这个问题。 提前致谢

【问题讨论】:

【参考方案1】:

您可以像在数组中一样访问它:

print_r ($yt_profiles['modelData']);

【讨论】:

【参考方案2】:

您的要求:

$yt_profiles = $youtube->channels->listChannels('brandingSettings', array(
'mine' => 'true',
));

要访问值频道标题,例如:

$titleChannel = $yt_profiles["items"][0]["brandingSettings"]["channel"]["title"];

访问值 bannerImageUrl 例如:

$banner = $yt_profiles["items"][0]["brandingSettings"]["image"]["bannerImageUrl"];

【讨论】:

我的问题是创建循环。您的代码不是动态的。如果我有超过 1 个频道怎么办?我想用动态循环变量 $i 替换 [0]。例如:for($i=0;$i【参考方案3】:

这对您有帮助吗?

    $yt_profiles = $youtube->channels->listChannels('id, brandingSettings', array('mine' => 'true',));

    foreach ($yt_profiles['modelData']['items'] as $searchResult) 
      switch ($searchResult['kind']) 
        case 'youtube#channel':
          $channels[]= array('id'=> $searchResult['id'],
                             'brandingSettings'=> $searchResult['brandingSettings']);
          break;
      
    

【讨论】:

以上是关于如何在 php 中读取 youtube 数据 api v3 响应的主要内容,如果未能解决你的问题,请参考以下文章

如何抓取 YouTube 视频评论?

如何使用 PHP 在另一个 youtube 频道上上传一个 youtube 视频

如何通过 youtube-dl 接收的数据在客户端创建视频文件?

如何通过 Jquery 或 Php 代码计算 Youtube 视频时长

如何使用 PHP 从视频 URL 中检索 YouTube 视频详细信息?

如何使用 php 获取 youtube 和 vimeo 嵌入代码的视频缩略图?