2013-12-20 46 views
3

我想使这个YouTube数据分析请求的PHP客户端Libary的YouTube Analytics(分析)API PHP示例

https://www.googleapis.com/youtube/analytics/v1/reports 
?ids=channel==CHANNELID 
&start-date=STARTDATE 
&end-date=ENDDATE 
&metrics=views, 
estimatedMinutesWatched, 
averageViewDuration, 
comments, 
favoritesAdded, 
favoritesRemoved, 
likes, 
dislikes, 
shares, 
subscribersGained, 
subscribersLost 
&dimensions=7DayTotals 
&fields=rows 
&sort=day 

这可能吗? 是否有任何PHP代码示例了解如何从API获取YouTube分析报告? 。

$analytics = new Google_YouTubeAnalyticsService($client); 
// $client is your Google_Client object 

// here we set some params 
$id = 'channel==CHANNELID' 
$start_date = 'YYYY-MM-DD'; 
$end_date = 'YYYY-MM-DD'; 
$optparams = array(
    'dimensions' => '7DayTotals', 
    'sort' => 'day', 
); 

$metrics = array(
    'views', 
    'estimatedMinutesWatched', 
    'averageViewDuration', 
    'comments', 
    'favoritesAdded', 
    'favoritesRemoved', 
    'likes', 
    'dislikes', 
    'shares', 
    'subscribersGained', 
    'subscribersLost' 
); 

$api_response = $metrics; 

// You can only get one metric at a time, so we loop 
foreach ($metrics as $metric) 
{ 
    $api = $analytics->reports->query($id, $start_date, $end_date, $metric, $optparams); 
    if (isset($api['rows'])) $api_response[$metric] = $api['rows'][0][0]; 
} 

编辑:
找不到一个谷歌开发者页面上(https://developers.google.com/youtube/analytics/v1/code_samples/

感谢

回答

5

您可以通过以下方式添加指标,而不是逐个调用每个指标。

$metrics = 'views,estimatedMinutesWatched,averageViewDuration,comments,favoritesAdded,favoritesRemoved,likes,dislikes,shares,subscribersGained,subscribersLost'; 

您的结果将在文档中描述。 例子:

$optparams = array(
    'dimensions' => '7DayTotals', 
    'sort' => 'day', 
); 

$metrics = 'views,estimatedMinutesWatched,averageViewDuration,comments,favoritesAdded,favoritesRemoved,likes,dislikes,shares,subscribersGained,subscribersLost'; 

$api_response = $metrics; 
$api = $analytics->reports->query($id, $start_date, $end_date, $metric, $optparams); 

if (isset($api['rows'])) { 
    //Get values in form of multidimensional arrays. 
} 
6

授权和/或刷新令牌,在PHP之后使它因此,为了获得结果,您可以回显$ api_response ['you metric you']。

0

这一天收集逐天分析在过去的30天,然后将其插入到数据库中。 这里是代码:

set_include_path(get_include_path() . PATH_SEPARATOR . '/home/google-api-php-client/src'); 

require_once('Google/autoload.php'); 

require_once 'Google/Client.php'; 
require_once 'Google/Service/YouTube.php'; 

session_start(); 

$client = new Google_Client(); 
$client->setClientId($OAUTH2_CLIENT_ID); 
$client->setClientSecret($OAUTH2_CLIENT_SECRET); 
$client->setAccessType("offline"); 
$client->setScopes(array('https://www.googleapis.com/auth/youtube.force-ssl', 'https://www.googleapis.com/auth/youtubepartner-channel-audit', 'https://www.googleapis.com/auth/youtube', 'https://www.googleapis.com/auth/youtube.readonly', 'https://www.googleapis.com/auth/yt-analytics.readonly', 'https://www.googleapis.com/auth/yt-analytics-monetary.readonly','https://www.googleapis.com/auth/youtubepartner')); 
$client->setDeveloperKey($key); 

$analytics = new Google_Service_YouTubeAnalytics($client); 

$ids = 'channel==' . $channel_url . ''; 
$end_date = date("Y-m-d"); 
$start_date = date('Y-m-d', strtotime("-30 days")); 
$optparams = array(
'dimensions' => 'day', 
); 

$metric = 'views'; 

try{ 

$api = $analytics->reports->query($ids, $start_date, $end_date, $metric, $optparams); 

foreach ($api->rows as $r) { 
    $date = $r[0]; 
    $views = $r[1]; 

$stmt = $db->prepare("INSERT INTO test (date,views,channel_url) VALUES (:date,:views,:channel_url)"); 
$stmt->execute([':date' => $date, ':views' => $views, ':channel_url' => $channel_url]); 
} 
}catch (Google_Service_Exception $e) { 
    echo sprintf('<p>A service error occurred: <code>%s</code></p>', 
    htmlspecialchars($e->getMessage())); 
} 
相关问题