如何在 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这对您有帮助吗?
$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 响应的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PHP 在另一个 youtube 频道上上传一个 youtube 视频
如何通过 youtube-dl 接收的数据在客户端创建视频文件?
如何通过 Jquery 或 Php 代码计算 Youtube 视频时长