如何通过PHP使用YouTube Data API v3获取热门视频及实现搜索?
使用YouTube Data API v3在PHP中获取热门视频、高赞视频及搜索视频
前置准备
先在Google Cloud控制台创建项目,启用YouTube Data API v3,生成Server类型的API密钥(建议限制使用IP提升安全性)。
1. 获取最热门视频
调用videos.list接口,指定chart=mostPopular参数即可获取指定地区的热门视频,搭配part=snippet,statistics获取视频基础信息和数据。
PHP示例代码:
<?php $apiKey = '你的API密钥'; $requestUrl = "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics&chart=mostPopular®ionCode=US&maxResults=10&key=$apiKey"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $requestUrl); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($curl); curl_close($curl); $result = json_decode($response, true); if (isset($result['items'])) { foreach ($result['items'] as $video) { echo "标题:" . $video['snippet']['title'] . "<br>"; echo "观看量:" . $video['statistics']['viewCount'] . "<br>"; echo "视频ID:" . $video['id'] . "<br><br>"; } } else { echo "请求失败:" . $result['error']['message']; } ?>
- 可修改
regionCode参数切换地区(如CN代表中国),maxResults调整返回数量。
2. 获取最受喜爱(点赞最多)的视频
通过search.list接口搭配order=likeCount参数,筛选点赞排序的视频。若需获取具体点赞数,需拿到视频ID后再调用videos.list接口获取statistics数据。
PHP示例代码:
<?php $apiKey = '你的API密钥'; $requestUrl = "https://www.googleapis.com/youtube/v3/search?part=snippet&order=likeCount&type=video®ionCode=US&maxResults=10&key=$apiKey"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $requestUrl); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($curl); curl_close($curl); $result = json_decode($response, true); if (isset($result['items'])) { foreach ($result['items'] as $item) { echo "标题:" . $item['snippet']['title'] . "<br>"; echo "视频ID:" . $item['id']['videoId'] . "<br><br>"; } } else { echo "请求失败:" . $result['error']['message']; } ?>
3. 关键词搜索视频
使用search.list接口,通过q参数传入搜索关键词,搭配type=video限定搜索结果为视频。
PHP示例代码:
<?php $apiKey = '你的API密钥'; $keyword = urlencode("PHP教程"); // 对关键词进行URL编码 $requestUrl = "https://www.googleapis.com/youtube/v3/search?part=snippet&q=$keyword&type=video&maxResults=10&key=$apiKey"; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $requestUrl); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($curl); curl_close($curl); $result = json_decode($response, true); if (isset($result['items'])) { foreach ($result['items'] as $item) { echo "标题:" . $item['snippet']['title'] . "<br>"; echo "视频ID:" . $item['id']['videoId'] . "<br>"; echo "缩略图:<img src='" . $item['snippet']['thumbnails']['medium']['url'] . "'><br><br>"; } } else { echo "请求失败:" . $result['error']['message']; } ?>
- 可添加
order参数调整排序规则(如viewCount按观看量排序、relevance按相关度排序)。
注意事项
- YouTube Data API v3有调用配额限制,不同接口请求消耗的配额不同,需合理控制请求频次;
- 生产环境要严格限制API密钥的使用范围(如绑定服务器IP),避免密钥泄露;
- 若需获取更多视频维度数据,可扩展
part参数(如contentDetails、status)。
内容的提问来源于stack exchange,提问作者Kherzikus
相关产品推荐
相关产品推荐

