2011-06-06 166 views
18

因此,我可以使用PHP客户端库将视频上传到YouTube(直接上传),并将其设置为私有,但可以将其设置为不公开吗?手动将视频上传到YouTube未上传

<yt:accessControl action="list" permission="denied"/> 

如果您不能添加它(通常使用Zend),你可以使用此代码添加相应的Zend:

+7

我在问完全相同的问题,为什么这个“关闭不是一个真正的问题”? babonk问是否可以将上传的视频设置为“不公开”。如果您有任何通过PHP上传到YouTube的经验,这是一个可以接受的问题。 – Owen 2011-10-05 12:08:38

+1

我不认识男人。 5人认为这是一个糟糕的问题。 – John 2011-10-10 19:35:56

+3

这是一个非常合法的问题,下面是答案:http://groups.google.com/group/youtube-api-gdata/browse_thread/thread/c5b08f33f80359e0/4553feb293104c0b – 2011-11-14 18:42:21

回答

5

您必须使用此代码作为请求的XML元素的子项:

//Creates an extension to Zend Framework 
$element = new Zend_Gdata_App_Extension_Element('yt:accessControl', 'yt', 'http://gdata.youtube.com/schemas/2007', ''); 

//Adds the corresponding XML child/attribute 
$element->extensionAttributes = array(array('namespaceUri' => '', 'name' => 'action', 'value' => 'list'), array('namespaceUri' => '', 'name' => 'permission', 'value' => 'denied')); 

//Adds this extension to you video entry where "$myVideo" is your video to be uploaded 
$myVideo->extensionElements = array($element); 

希望这有助于:d

0

做..与API版本2和Zend GDATA。 如果您查看$ videoEntry的内容,您将注意到 $ _extensionElements和$ _extensionArributes。 因此,从VideoEntry 的扩展类向后看,您会发现抽象类Zend_Gdata_App_Base ,它有一个函数setExtensionElements(array)。 所以只有做别人说创建accesControlElement 并将其传递给该功能。 和IT WORKS。

$videoEntry = $yt->getFullVideoEntry($id); 

if ($videoEntry->getEditLink() !== null) { 

    echo "<b>Video is editable by current user</b><br />"; 

    $putUrl = $videoEntry->getEditLink()->getHref(); 

    //set video to unlisted 
    $accessControlElement = new Zend_Gdata_App_Extension_Element(
     'yt:accessControl', 'yt', 'http://gdata.youtube.com/schemas/2007', '' 
    ); 
    $accessControlElement->extensionAttributes = array(
     array(
      'namespaceUri' => '', 
      'name' => 'action', 
      'value' => 'list' 
     ), 
     array(
      'namespaceUri' => '', 
      'name' => 'permission', 
      'value' => 'denied' 
     )); 

    // here is the hidden function 
    // it´s on a abstract class Zend/Gdata/App/Base/Base.php 
    // Where ZEND/Gdata/Youtube/VideoEntry.php extends 

    $videoEntry->setExtensionElements(array($accessControlElement)); 

    $yt->updateEntry($videoEntry, $putUrl); 

}else{ 

    echo "<b>EL Video no es editable por este usuario</b><br />"; 

}