youtube data api v3 php搜索分页?

标签 youtube youtube-api youtube-data-api

我正在尝试使用youtube api v3 php搜索...

第一次我为此使用此api我是初学者...

我有3个问题;

1)在搜索列表下面如何显示分页号? (每页50条结果)

2)如何在列表中显示视频时长? (3:20分钟:秒)

3)如何订购viewCount

if ($_GET['q']) {
  require_once 'src/Google_Client.php';
  require_once 'src/contrib/Google_YoutubeService.php';
  $DEVELOPER_KEY = 'my key';

  $client = new Google_Client();
  $client->setDeveloperKey($DEVELOPER_KEY);
  $youtube = new Google_YoutubeService($client);

  try {
    $searchResponse = $youtube->search->listSearch('id,snippet', array(
      'q' => $_GET['q'],
      'maxResults' => 50,
      'type' => "video",
    ));

  foreach ($searchResponse['items'] as $searchResult) {

    $videos .= '<li style="clear:left"><img src="'.$searchResult['snippet']['thumbnails']['default']['url'].'" style="float:left; margin-right:18px" alt="" /><span style="float:left">'.$searchResult['snippet']['title'].'<br />'.$searchResult['id']['videoId'].'<br />'.$searchResult['snippet']['publishedAt'].'<br />'.$item['contentDetails']['duration'].'</span></li>';
}




$htmlBody .= <<<END
    <ul>$videos</ul>
END;
  } catch (Google_ServiceException $e) {
    $htmlBody .= sprintf('<p>A service error occurred: <code>%s</code></p>',
      htmlspecialchars($e->getMessage()));
  } catch (Google_Exception $e) {
    $htmlBody .= sprintf('<p>An client error occurred: <code>%s</code></p>',
      htmlspecialchars($e->getMessage()));
  }
}

最佳答案

1)下面的搜索列表如何显示分页号? (每50页的结果)

您需要编写自己的缓存逻辑来实现此功能,因为在每个结果中,您都将获得两个 token “NextPageToken”和“PreviousPageToken”,随后的查询必须包含该 token 号才能获取下一页或上一页 token ,如下所示。

因此,只要结果在高速缓存中不可用,那么您就应该发送nextpagetoken或前一页 token 。

https://www.googleapis.com/youtube/v3/search?key=API_KEY&part=snippet&q=japan&maxResults=10&order=date&pageToken=NEXT_or_PREVIOUS_PAGE_TOKEN

尤其是在您需要每页50页并且显示3个分页(如(1,2,NEXT))的情况下,则需要两次提取结果。两种结果都将保留在缓存中,因此第1页和第2页的结果将从缓存中检索。接下来,请确保您通过发送nextPageToken再次使Google查询。

因此,要显示分页1-n和每页50个结果,则需要对Google api进行n-1个查询。但是,如果每页显示10个结果,则可以对50个结果进行单个查询,使用该查询可以在检索到的结果的帮助下显示前5页(1-5),然后,您应该再次发送上一页 token ,如上。

注意-Google youtube api最多可提供50个结果。

2)视频时长如何显示在列表中? (3:20分钟:秒)

在简单的首次搜索响应中,Youtube API v3不会返回视频时长。要获取视频时长,我们需要对YouTube api进行一次额外的调用,如下所示。

https://www.googleapis.com/youtube/v3/videos?id=VIDEO_ID1%2CVIDEO_ID2&part=contentDetails&key=API_KEY(最多50个ID)

这个问题在“http://code.google.com/p/gdata-issues/issues/detail?id=4294”中突出显示。我也在这里发布了答案。

因此,如果要显示视频时长,则每次都需要打两个电话。

3)如何订购viewCount

在查询下面触发,它将提供按 View 计数排序的结果。

https://www.googleapis.com/youtube/v3/search?key=KEY&part=snippet&q=japan&maxResults=5&order=viewCount

有关详细信息,请引用-https://developers.google.com/youtube/v3/docs/search/list#order

关于youtube data api v3 php搜索分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22253925/

相关文章:

youtube - 如何在没有 OAuth 的情况下使用 Youtube Analytics API?

javascript - YouTube API 问题

youtube - 如何避免 YouTube V3 API 中出现 cmsUserAccountNotFound?

youtube-api - 安排直播

php - 允许将视频嵌入评论/文本中

javascript - 如何将带有评论,喜欢和观看的youTube视频嵌入到html页面中?

javascript - 如何找出YouTube上关注者的确切人数?

c# - 使用 c# 使用 youtube api 添加缩略图?

php - 如何从PHP和cakephp中的YouTube网址获取视频ID

html - 嵌入来自YouTube,Vimeo等的视频