CodeIgniter:将视频上传到YouTube



我使用的是CodeIgniter+Zend库。我想让用户上传视频到我的网站,然后我会上传到我的YouTube频道。这是我第一次接触YouTube API。有人能给我指正确的方向吗?

我这样看对吗:http://code.google.com/apis/youtube/2.0/developers_guide_protocol.html#Direct_uploading?有没有人有一段代码可以展示如何通过PHP进行上传?

试试它的工作

class Addvideo extends Controller {

    function Addvideo()
    {
        parent::Controller();

        $this->load->library("zend");
        $this->zend->load("Zend/Gdata/AuthSub");
        $this->zend->load("Zend/Gdata/ClientLogin");
        $authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin';
        /************Authentication**************/
        $this->zend->load("Zend/Gdata/YouTube");
        $this->zend->load("Zend/Gdata/HttpClient");
        $this->zend->load("Zend/Gdata/App/MediaFileSource");
        $this->zend->load("Zend/Gdata/App/HttpException");
        $this->zend->load("Zend/Uri/Http");

        $youtube = new Zend_Gdata_YouTube();
        $myVideoEntry = new Zend_Gdata_YouTube_VideoEntry();
        $Gdata_AuthSub=new Zend_Gdata_AuthSub();
        $this->load->helper("text");
    }
        function index(){
            $data['result']='videos';
            $this->load->view('videos/newform', $data); 
        }
    function indexed(){
        $title = 'GruppoDSE Video';
        $description = 'Description';
        $youtube = new Zend_Gdata_YouTube();    
        $authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin';
        $httpClient = Zend_Gdata_ClientLogin::getHttpClient(
                $username = $this->config->item('username'),
                $password = $this->config->item('password'),
                $service = 'youtube',
                $client = null,
                $source = 'Arts Connector', // a short string identifying your application
                $loginToken = null,
                $loginCaptcha = null,
                $authenticationURL); 
        $developerKey = $this->config->item('developer_key');
        $applicationId = 'Arts Connector';
        $clientId = 'My video upload client - v1';
        $yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey);
        // create a new VideoEntry object
        $myVideoEntry = new Zend_Gdata_YouTube_VideoEntry();
        $myVideoEntry->setVideoTitle($title);
        $myVideoEntry->setVideoDescription($description);
        // The category must be a valid YouTube category!
        $myVideoEntry->setVideoCategory('Autos');
        // Set keywords. Please note that this must be a comma-separated string
        // and that individual keywords cannot contain whitespace
        $myVideoEntry->SetVideoTags('cars, funny');
        $tokenHandlerUrl = 'http://gdata.youtube.com/action/GetUploadToken';
        $tokenArray = $yt->getFormUploadToken($myVideoEntry, $tokenHandlerUrl);
        $data['tokenValue'] = $tokenArray['token'];
        $data['postUrl'] = $tokenArray['url']; 

            // place to redirect user after upload
            $data['nextUrl'] = 'http://www.avantajsoftwares.com/gruppo/uploadVideo';
            $res="Il file video aggiungere con successo, il risultato atteso verrà visualizzato dopo alcune volte";
            $this->session->set_userdata('greenFlag',$res);
            // build the form
            $this->load->view('videos/form', $data);
        }
    function AddVideoAjax(){
             $title=$_POST['title'];
             $description=$_POST['description'];
        $youtube = new Zend_Gdata_YouTube();    
        $authenticationURL= 'https://www.google.com/youtube/accounts/ClientLogin';
        $httpClient = Zend_Gdata_ClientLogin::getHttpClient(
                $username = $this->config->item('username'),
                $password = $this->config->item('password'),
                $service = 'youtube',
                $client = null,
                $source = 'Arts Connector', // a short string identifying your application
                $loginToken = null,
                $loginCaptcha = null,
                $authenticationURL); 
        $developerKey = $this->config->item('developer_key');
        $applicationId = 'Arts Connector';
        $clientId = 'My video upload client - v1';
        try {
        $yt = new Zend_Gdata_YouTube($httpClient, $applicationId, $clientId, $developerKey);
        // create a new VideoEntry object
        $myVideoEntry = new Zend_Gdata_YouTube_VideoEntry();
        $myVideoEntry->setVideoTitle($title);
        $myVideoEntry->setVideoDescription($description);
        // The category must be a valid YouTube category!
        $myVideoEntry->setVideoCategory('Education');
        // Set keywords. Please note that this must be a comma-separated string
        // and that individual keywords cannot contain whitespace
        $myVideoEntry->SetVideoTags('Seminar, Events');
        $tokenHandlerUrl = 'http://gdata.youtube.com/action/GetUploadToken';
        $tokenArray = $yt->getFormUploadToken($myVideoEntry, $tokenHandlerUrl);
        $tokenValue = $tokenArray['token'];
        $postUrl = $tokenArray['url']; 

            // place to redirect user after upload
            $nextUrl = 'http://www.avantajsoftwares.com/gruppo/Addvideo';
            $res="Il file video aggiungere con successo, il risultato atteso verrà visualizzato dopo alcune volte";
            $this->session->set_userdata('greenFlag',$res);
            // build the form
            echo  $form = '<form action="'. $postUrl .'?nexturl='. $nextUrl .
                    '" method="post" enctype="multipart/form-data" onsubmit="return valid()">'. 
                    '<div style="float:left;"><input name="file" type="file" id="file"/></div><div class="preloader"></div>'. 
                    '<input name="token" type="hidden" value="'.  $tokenValue .'"/>'.
                    '<div style="clear:both"></div>'.
                    '<div class="login-footer" id="prog_bar style="cursor:pointer"><input value="Carica video" type="submit" id="validate" class="button" onclick="progress_bar()"/></div>'. 
                    '</form>';

            } catch (Zend_Gdata_App_Exception $e) {
                echo $return="<div class='login-footer' style='width:130px;'><a style='height:16px; padding-top:7px;' class='button' href=".site_url()."Addvideo>Riprova di nuovo</a></div>";
            }
            // Assuming that $videoEntry is the object that was returned during the upload
             //$state = $myVideoEntry->getVideoState();


        }
    function getAuthSubRequestUrl()
        {
            $gdata_AuthSub = new Zend_Gdata_AuthSub();
            $next = 'http://www.avantajsoftwares.com/gruppo/videos';
            $scope = 'http://gdata.youtube.com';
            $secure = false;
            $session = true;
            return $data=$gdata_AuthSub->getAuthSubTokenUri($next, $scope, $secure, $session);
        }
    function getAuthSubHttpClient()
        {
            echo $_SESSION['sessionToken'];
            if (!isset($_SESSION['sessionToken']) && !isset($_GET['token']) ){
                echo '<a href="' . $this->getAuthSubRequestUrl() . '">Login!</a>';
                return;
            } else if (!isset($_SESSION['sessionToken']) && isset($_GET['token'])) {
              $_SESSION['sessionToken'] = Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET['token']);
            }
            $httpClient = Zend_Gdata_AuthSub::getHttpClient($_SESSION['sessionToken']);
            return $httpClient;
        }

    /*************************** Class end ***********************************/
}

由于Zend的大小和复杂性,我不建议将其与CI一起使用。我专门为CodeIgniter开发了一个库https://github.com/jimdoescode/CodeIgniter-YouTube-API-Library

该库提供了几种不同的上传到YouTube的选项。你可以直接上传存储在服务器上的视频到youtube。还有一个选项可以使用表单将视频从客户端上传到youtube。看看它,如果你有任何问题,请告诉我。

文档包含Zend Gdata的此方法以及其他方法:上传视频

相关内容

  • 没有找到相关文章

最新更新