p3in / l5-youtube-api
PHP 对 YouTube 数据 API v3 的包装器
这个包的规范仓库似乎已经消失,因此该包已被冻结。
dev-master
2016-06-24 17:08 UTC
Requires
- php: >5.5
Requires (Dev)
- phpunit/phpunit: 3.7.*@stable
This package is auto-updated.
Last update: 2019-03-10 03:12:05 UTC
README
是 madcoda/php-youtube-api 的“分支”,以允许上传。
要求
- PHP >=5.5
- PHP 中的 CURL 扩展
安装
编辑您的 composer.json
文件,并在 require
部分添加以下内容
"p3in/l5-youtube-api": "dev-master"
然后在您的命令行shell中运行以下命令
$ composer update
Laravel 5 项目的入门
安装
将此包添加到 composer.json
中,如果您还没有这样做的话,请运行 composer update。
composer -vvv update
转到 /config/app.php
,在 providers
中添加
P3in\Youtube\YoutubeServiceProvider::class,
在 aliases
中添加
'Youtube' => P3in\Youtube\Facades\Youtube::class,
配置
在命令行中,请运行
php artisan vendor:publish
在您的 /config/youtube.php
中,您应该填写您的 API 密钥
<?php return array( /* * You can set the API Key here */ 'key' => 'ABCDEFGHIJKLMNOPQabcdefghijklmnopq' );
测试一下
为了验证它是否正常工作,您可以自由地创建一个控制器并将其映射到一个路由,以下是一个简单的控制器示例
在 app/Http/routes.php
Route::get('/', 'YoutubeController@index');
在 app/Http/Controllers/YoutubeController.php
namespace App\Http\Controllers; class YoutubeController extends Controller { public function index() { dd(Youtube::getVideoInfo(Input::get('vid', 'dQw4w9WgXcQ'))); } }
(建设中)
查询数据 API
// Return a std PHP object $video = $youtube->getVideoInfo('rie-hPVJ7Sw'); // Return a std PHP object $channel = $youtube->getChannelByName('xdadevelopers'); // Return a std PHP object $channel = $youtube->getChannelById('UCk1SpWNzOs4MYmr0uICEntg'); // Return a std PHP object $playlist = $youtube->getPlaylistById('PL590L5WQmH8fJ54F369BLDSqIwcs-TCfs'); // Return an array of PHP objects $playlists = $youtube->getPlaylistsByChannelId('UCk1SpWNzOs4MYmr0uICEntg'); // Return an array of PHP objects $playlistItems = $youtube->getPlaylistItemsByPlaylistId('PL590L5WQmH8fJ54F369BLDSqIwcs-TCfs'); // Return an array of PHP objects $activities = $youtube->getActivitiesByChannelId('UCk1SpWNzOs4MYmr0uICEntg'); // Parse Youtube URL into videoId $videoId = $youtube->parseVIdFromURL('https://www.youtube.com/watch?v=moSFlvxnbgk'); // result: moSFlvxnbgk
搜索
// Search playlists, channels and videos, Return an array of PHP objects $results = $youtube->search('Android'); // Search only Videos, Return an array of PHP objects $videoList = $youtube->searchVideos('Android'); // Search only Videos in a given channel, Return an array of PHP objects $videoList = $youtube->searchChannelVideos('keyword', 'UCk1SpWNzOs4MYmr0uICEntg', 50); $results = $youtube->searchAdvanced(array( /* params */ ));
基本搜索分页
use P3in\Youtube; $youtube = new Youtube(array('key' => '/* Your API key here */')); // Set Default Parameters $params = array( 'q' => 'Android', 'type' => 'video', 'part' => 'id, snippet', 'maxResults' => 50 ); // Make Intial Call. With second argument to reveal page info such as page tokens. $search = $youtube->searchAdvanced($params, true); // check if we have a pageToken if (isset($search['info']['nextPageToken'])) { $params['pageToken'] = $search['info']['nextPageToken']; } // Make Another Call and Repeat $search = $youtube->searchAdvanced($params, true); // add results key with info parameter set print_r($search['results']); /* Alternative approach with new built in paginateResults function */ // Same Params as before $params = array( 'q' => 'Android', 'type' => 'video', 'part' => 'id, snippet', 'maxResults' => 50 ); // an array to store page tokens so we can go back and forth $pageTokens = array(); // make inital search $search = $youtube->paginateResults($params, null); // store token $pageTokens[] = $search['info']['nextPageToken']; // go to next page in result $search = $youtube->paginateResults($params, $pageTokens[0]); // store token $pageTokens[] = $search['info']['nextPageToken']; // go to next page in result $search = $youtube->paginateResults($params, $pageTokens[1]); // store token $pageTokens[] = $search['info']['nextPageToken']; // go back a page $search = $youtube->paginateResults($params, $pageTokens[0]); // add results key with info parameter set print_r($search['results']);
上面的分页相当简单。根据您试图实现的内容,您可能需要创建一个递归函数来遍历结果。
返回数据的格式
返回的 JSON 被解码为 PHP 对象(而不是数组)。请参阅官方 API 文档中的 "参考" 部分。
YouTube 数据 API v3
联系
对于错误、投诉和建议,请在此 提交问题 或发送电子邮件到 support@plus3interactive.com :)
许可
plus3interactive l5-youtube-api 在 MIT 许可证 下发布。