2013-12-20 8 views
3

Я хочу сделать этот запрос YouTube Analytics с PHP Client LibaryYouTube 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-код Образцы о том, как получить отчет YouTube Analytics от API? .
не удалось найти ее на странице Google Developers (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:

$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]; 
} 

EDIT: сделал это так что, чтобы получить результаты, вы можете выделить $ api_response ['metric you want'].

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())); 
} 
Смежные вопросы