YouTube Analytics API php Samples

后端 未结 3 1348
别跟我提以往
别跟我提以往 2021-01-06 13:04

I want to make this YouTube Analytics Request with the PHP Client Libary

https://www.googleapis.com/youtube/analytics/v1/reports  
?ids=channel==CHANNELID
         


        
相关标签:
3条回答
  • 2021-01-06 13:26

    After authorizing and/or refreshing tokens, in 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: made it so that, to get results, you can echo $api_response['metric you want'].

    0 讨论(0)
  • 2021-01-06 13:35

    This collects day-by-day analytics over the last 30 days and then inserts it into a database. Here's the code:

    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()));
    }
    
    0 讨论(0)
  • 2021-01-06 13:41

    You can add metrics in the following way rather than calling each metric one by one.

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

    Your result will be in the from as depicted in the documentation. Example:

    $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. 
    }
    
    0 讨论(0)
提交回复
热议问题