p3in/l5-youtube-api

PHP 对 YouTube 数据 API v3 的包装器

这个包的规范仓库似乎已经消失,因此该包已被冻结。

dev-master 2016-06-24 17:08 UTC

This package is auto-updated.

Last update: 2019-03-10 03:12:05 UTC


README

Build Status

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 许可证 下发布。