如何以分页的方式从YouTube获得用户视频


How To Get User Video From YouTube In A Paginated Way

我试图得到我的频道视频,我几乎已经存档,但是YouTube检索每页50个结果,我的频道有150个视频,这将是更整洁的分页结果。有可能做到这一点与下面的代码?如果有,请告诉我怎么做

我是一个PHP程序员,但完全新的使用它和发送http请求到你管,包括分页的东西。

这是目前为止我写的

<?php
error_reporting(E_ALL);
$feedURL = 'http://gdata.youtube.com/feeds/api/users/gamertv273/uploads?start-index=1&max-results=10';
$sxml = simplexml_load_file($feedURL);
$i=0;
foreach ($sxml->entry as $entry) {
      $media = $entry->children('media', true);
      $watch = (string)$media->group->player->attributes()->url;
      $thumbnail = (string)$media->group->thumbnail[0]->attributes()->url;
      ?>
<link rel='previous' type='application/atom+xml'
  href='http://gdata.youtube.com/feeds/api/users/gamertv273/uploads?start-index=1&max-results=10'/>
<link rel='next' type='application/atom+xml'
  href='http://gdata.youtube.com/feeds/api/users/gamertv273/uploads?start-index=2&max-results=10'/>
      <div class="videoitem">
        <div class="videothumb"><a href="<?php echo $watch; ?>" class="watchvideo"><img src="<?php echo $thumbnail;?>"
        alt="<?php echo $media->group->title; ?>" /></a></div>

        <div class="videotitle">
            <h3><a href="<?php echo $watch; ?>" class="watchvideo"><?php echo $media->group->title; ?></a></h3>
        </div>
      </div>      
<?php $i++; if($i==3) { echo '<div class="clear small_v_margin"></div>'; $i=0; } } ?>

http://gdata.youtube.com/feeds/api/users/gamertv273/uploads?start-index=100&max-results=50

start-index为起始视频索引。

max-results是返回的条目数(最大允许为50)。

步骤1

首先,我建议您解析页码到您自己的页面,然后您的代码相应地查询YTube。例如

www.yourwebsite.com/your-page.php ? = 1页

在你的代码中:

<?php
$results_per_page = 20;
$start_index = $_GET['page'] - 1 * ($results_per_page + 1);
$feedURL = 'http://gdata.youtube.com/feeds/api/users/gamertv273/uploads?start-index=' . $start_index . '&max-results=' . $results_per_page;
//[rest of the code]
?>

如果你的页面是1,返回0-20,如果你的页面是2,返回20-40,等等。

步骤2

然后,你需要输入页码。如果你有126个视频,那么应该有7个页面,每个页面有20个结果。要知道总共有多少个视频,请参考下面的API:

http://gdata.youtube.com/feeds/api/users/gamertv273/uploads?v=2&alt=jsonc&max-results=0

您现在可以使用json_decode()解析json响应,获取totalItems并除以$results_per_page以获得可用页面的数量。然后,很容易打印标签的每页,与上/下一个按钮。

<a href="www.yourwebsite.com/your-page.php?page=1">previous page</a>
<a href="www.yourwebsite.com/your-page.php?page=3">next page</a>
<a href="www.yourwebsite.com/your-page.php?page=1">page 1</a>
<a href="www.yourwebsite.com/your-page.php?page=2">page 2</a>
<a href="www.yourwebsite.com/your-page.php?page=3">page 3</a>
<a href="www.yourwebsite.com/your-page.php?page=4">page 4</a>