【问题标题】:Retrevie YouTube Channel Name, Avatar and SubscribersRetrevie YouTube 频道名称、头像和订阅者
【发布时间】:2015-10-22 08:55:36
【问题描述】:

我有一个连接到 YouTube 的代码,然后填写表格然后提交到数据库。我正在努力检索 YouTube 频道名称、头像和订阅者。我已经可以检索频道 ID 和过去 30 天的观看次数:只需要有关头像、姓名和订阅者的帮助。我获取 ID 和过去 30 天查看次数的代码如下。

function get_access_token($authentication_code,$client_id,$client_secret,$redirect_uris){
  $url = "https://accounts.google.com/o/oauth2/token";
  $post="code={$authentication_code}&client_id={$client_id}&client_secret={$client_secret}&redirect_uri={$redirect_uris}&grant_type=authorization_code";
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_POST, true);
     curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  
     curl_setopt($ch, CURLOPT_COOKIEJAR,'cookie.txt');  
     curl_setopt($ch, CURLOPT_COOKIEFILE,'cookie.txt');  
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
     curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");  
   $st=curl_exec($ch);  
   return $result=json_decode($st,TRUE);   
   }

   function get_curl($url){
      $ch = curl_init();
      $headers = array("Content-type: application/json");
     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
       curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  
       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  
       curl_setopt($ch, CURLOPT_COOKIEJAR,'cookie.txt');  
       curl_setopt($ch, CURLOPT_COOKIEFILE,'cookie.txt');  
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
       curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");   
     $st=curl_exec($ch);  
    return $result=json_decode($st,TRUE);
   }
   function get_id($url){
      $ch = curl_init();
      $headers = array("Content-type: application/json");
     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
       curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  
       curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  
       curl_setopt($ch, CURLOPT_COOKIEJAR,'cookie.txt');  
       curl_setopt($ch, CURLOPT_COOKIEFILE,'cookie.txt');  
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
       curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");   
     $st=curl_exec($ch);  
    return $st;
   }



if(isset($_GET['code'])){
  $authentication_code=$_GET['code'];
}

if ($access_token=='' && $authentication_code!=''){
  /******Get The authorization Code/Access Token******/
  $result=get_access_token($authentication_code,$client_id,$client_secret,$redirect_uris);
  /***Take access token, also there is the expiration duration*****/
  $access_token=$result['access_token'];

  $refresh_token=$result['refresh_token'];
}

if(!$access_token){
  $auth_url="https://accounts.google.com/o/oauth2/auth";
  $message = "<form id=form-login action='{$auth_url}' method=get>
  <input type=hidden name=client_id value=$client_id>
  <input type=hidden name=redirect_uri value=$redirect_uris>
  <input type=hidden name=scope value=\"https://www.googleapis.com/auth/yt-analytics.readonly https://www.googleapis.com/auth/youtube.readonly\">
  <input type=hidden name=response_type value=code>
  <input type=hidden name=access_type value=offline>
  <div style=\"float: right;\" data-sr=\"enter bottom\" ><button class=\"button\" type=submit>Apply Now</button></div></form>";
} else {

  $end_date=date('Y-m-d');
  $start_date=date('Y-m-d',strtotime("-1 months"));

   $gcid="https://www.googleapis.com/youtube/v3/channels?part=id&mine=true&access_token={$access_token}";
   $channelfind=get_id($gcid);

   $s="https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date={$start_date}&end-date={$end_date}&metrics=views,comments,likes&dimensions=day&sort=day&access_token={$access_token}";
   $view_data=get_curl($s);



   $total_view=0;
   foreach($view_data['rows'] as $v){
    $total_view+=$v[1];
   }  //MONTHLY VIEWS NUMBER

   $channelid = explode('id": "', $channelfind);
   $channelid = explode('"
  }
 ]
}', $channelid[1]);
   $channelid = $channelid[0]; //CHANNELID

   $_SESSION['Channelid'] = $channelid;
   $_SESSION['access_token'] = $access_token;
   $_SESSION['Views'] = $total_view;
   header("location: index.php");

  }


  echo $message;

   ?>

有什么建议吗?

【问题讨论】:

  • 您是要获取自己频道或其他人频道的订阅者列表吗?
  • 我真的不想要一个列表,我只想要数量,它将为使用该应用程序的用户 youtube 频道提供

标签: php youtube youtube-api


【解决方案1】:

Subscriber count 是频道统计信息的一部分。

如果要获取订阅者数量,只需在请求中指定statistics 并获取subscriberCount

【讨论】:

  • 你能像我上面写一些代码,将其设置为 $_SESSION[susbcribers]
猜你喜欢
  • 1970-01-01
  • 2015-03-27
  • 2015-02-12
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 2015-10-14
  • 1970-01-01
  • 2021-02-19
相关资源
最近更新 更多