2013-05-03 59 views
0

我无法找到一种让YouTube不在Feed中返回重复视频的方法。 我目前正在使用API​​ v1,并且我明白v2和v3也是我应该移动的地方。我正在使用ZF 1和它的Gdata库,如果API级别支持我想做的事情,那么它不应该很重要。Youtube API get feed忽略重复项

但是,我无法在这两个版本中看到解决方案。

继承人发生了什么。 由于某些原因,服务器代码偶尔会并行上传重复视频。 Youtube检测到,然后它似乎列出饲料上的视频作为重复,它不会玩。

https://gdata.youtube.com/feeds/api/users/username/uploads/?max-results=50

所以我从那个用户占50个视频。无论如何要告诉YouTube,不要返回重复的视频。

我的意思是它似乎很明显,它不应该对吗?

有人知道任何有关从Feed中过滤重复项的内容吗? 我看看返回的数据,没有指示状态或任何其他信息,这会告诉我一个片段重复的方法。

希望有人知道解决方案。

干杯!

回答

0

好的,所以我解决了这个问题,结果是你可以在feed中查询一个状态属性。请参阅下面的代码,以了解如何检查状态并在其被拒绝时忽略它。

Damn Zend Framework v1对于这种事情,文档几乎是不存在的。

$applicationId = 'App ID'; 
$clientId = 'Client ID'; 
$youtubeDeveloperKey = 'Developer Key'; 
$token = unserialize($gdata_oauth_access_token); 
$httpClient = $token->getHttpClient($this->_oauthOptions); 
$yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $youtubeDeveloperKey); 

$url = 'https://gdata.youtube.com/feeds/api/users/' . $youtube_user_name . '/uploads/?max-results=50'; 
$videoFeed = $yt->getVideoFeed($url); 

// process the feed 
foreach ($videoFeed as $videoEntry) { 
    $state = $videoEntry->getVideoState(); 
    if (is_object($state) && $state->name == 'rejected') { 
     // skip this video 
     continue; 
    } 
} 
0

在V2和V3中,您都获得了“拒绝”状态。你有没有检查过这可能是否也在V1?

+0

是的,但这是不好的,因为我不在乎视频是否被拒绝,我关心它没有显示在Feed中。我想如果它被拒绝了,我可以尝试使用它的代码通过API删除它? Hrm ....会查看我是否可以记录我上传的状态并查看它们是什么。 – 2013-05-06 00:55:40

+0

哦,事实上,如果它拒绝了,你确实在乎:),因为如果它被拒绝,总是有它在状态中被拒绝的原因。在你的情况下,对象中会有一个“重复”。 – codingbuddha 2013-05-06 04:36:59