我想通过PHP客户端库实现此YouTube分析请求
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
这可能吗? 是否有关于如何从API获取YouTube Analytics报告的PHP代码示例? 在Google Developers页面上找不到。(https://developers.google.com/youtube/analytics/v1/code_samples/)
由于
答案 0 :(得分:7)
在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];
}
编辑:这样做,为了获得结果,你可以回应$ api_response ['你想要的指标']。
答案 1 :(得分: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()));
}