| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Reviewed: no -->
- <sect1 id="zend.gdata.youtube">
- <title>Using the YouTube Data API</title>
- <para>
- The YouTube Data <acronym>API</acronym> offers read and write access to YouTube's content.
- Users can perform unauthenticated requests to Google Data feeds to
- retrieve feeds of popular videos, comments, public information about
- YouTube user profiles, user playlists, favorites, subscriptions and so on.
- </para>
- <para>
- For more information on the YouTube Data <acronym>API</acronym>, please refer
- to the official <ulink
- url="http://code.google.com/apis/youtube/developers_guide_php.html"><acronym>PHP</acronym>
- Developer's Guide</ulink> on code.google.com.
- </para>
- <sect2 id="zend.gdata.youtube.authentication">
- <title>Authentication</title>
- <para>
- The YouTube Data <acronym>API</acronym> allows read-only access to public data, which
- does not require authentication. For any write requests, a user
- needs to authenticate either using ClientLogin or AuthSub authentication. Please refer
- to the <ulink
- url="http://code.google.com/apis/youtube/developers_guide_php.html#Authentication">Authentication
- section in the <acronym>PHP</acronym> Developer's Guide</ulink> for more detail.
- </para>
- </sect2>
- <sect2 id="zend.gdata.youtube.developer_key">
- <title>Developer Keys and Client ID</title>
- <para>
- A developer key identifies the YouTube developer that is submitting
- an <acronym>API</acronym> request. A client ID identifies your application for logging
- and debugging purposes. Please visit <ulink
- url="http://code.google.com/apis/youtube/dashboard/">http://code.google.com/apis/youtube/dashboard/</ulink>
- to obtain a developer key and client ID. The example below demonstrates how to pass the
- developer key and client ID to the <ulink
- url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube.html">Zend_Gdata_YouTube</ulink>
- service object.
- </para>
- <example id="zend.gdata.youtube.developer_key.example">
- <title>Passing a Developer Key and ClientID to Zend_Gdata_YouTube</title>
- <programlisting language="php"><![CDATA[
- $yt = new Zend_Gdata_YouTube($httpClient,
- $applicationId,
- $clientId,
- $developerKey);
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.gdata.youtube.videos">
- <title>Retrieving public video feeds</title>
- <para>
- The YouTube Data <acronym>API</acronym> provides numerous feeds that return a list of
- videos, such as standard feeds, related videos, video responses,
- user's uploads, and user's favorites. For example, the
- user's uploads feed returns all videos uploaded by a specific user. See the <ulink
- url="http://code.google.com/apis/youtube/reference.html#Video_Feeds">YouTube
- <acronym>API</acronym> reference guide</ulink> for a detailed list of available
- feeds.
- </para>
- <sect3 id="zend.gdata.youtube.videos.searching">
- <title>Searching for videos by metadata</title>
- <para>
- You can retrieve a list of videos that match specified
- search criteria, using the YouTubeQuery class. The following query
- looks for videos which contain the word "cat" in their
- metadata, starting with the 10th video and displaying 20
- videos per page, ordered by the view count.
- </para>
- <example id="zend.gdata.youtube.videos.searching.example">
- <title>Searching for videos</title>
- <programlisting language="php"><![CDATA[
- $yt = new Zend_Gdata_YouTube();
- $query = $yt->newVideoQuery();
- $query->videoQuery = 'cat';
- $query->startIndex = 10;
- $query->maxResults = 20;
- $query->orderBy = 'viewCount';
- echo $query->queryUrl . "\n";
- $videoFeed = $yt->getVideoFeed($query);
- foreach ($videoFeed as $videoEntry) {
- echo "---------VIDEO----------\n";
- echo "Title: " . $videoEntry->getVideoTitle() . "\n";
- echo "\nDescription:\n";
- echo $videoEntry->getVideoDescription();
- echo "\n\n\n";
- }
- ]]></programlisting>
- </example>
- <para>
- For more details on the different query parameters, please refer to the <ulink
- url="http://code.google.com/apis/youtube/reference.html#Searching_for_videos">
- Reference Guide</ulink>. The available helper functions in <ulink
- url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoQuery.html"><classname>Zend_Gdata_YouTube_VideoQuery</classname></ulink>
- for each of these parameters are described in more detail in the <ulink
- url="http://code.google.com/apis/youtube/developers_guide_php.html#SearchingVideos">PHP
- Developer's Guide</ulink>.
- </para>
- </sect3>
- <sect3 id="zend.gdata.youtube.videos.searchingcategories">
- <title>Searching for videos by categories and tags/keywords</title>
- <para>
- Searching for videos in specific categories is done by generating a <ulink
- url="http://code.google.com/apis/youtube/reference.html#Category_search">specially
- formatted <acronym>URL</acronym></ulink>. For example, to search for
- comedy videos which contain the keyword dog:
- </para>
- <example id="zend.gdata.youtube.videos.searchingcategories.example">
- <title>Searching for videos in specific categories</title>
- <programlisting language="php"><![CDATA[
- $yt = new Zend_Gdata_YouTube();
- $query = $yt->newVideoQuery();
- $query->category = 'Comedy/dog';
- echo $query->queryUrl . "\n";
- $videoFeed = $yt->getVideoFeed($query);
- ]]></programlisting>
- </example>
- </sect3>
- <sect3 id="zend.gdata.youtube.videos.standard">
- <title>Retrieving standard feeds</title>
- <para>
- The YouTube Data <acronym>API</acronym> has a number of <ulink
- url="http://code.google.com/apis/youtube/reference.html#Standard_feeds">standard
- feeds</ulink>. These standard feeds can be retrieved as <ulink
- url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoFeed.html">Zend_Gdata_YouTube_VideoFeed</ulink>
- objects using the specified <acronym>URL</acronym>s, using the predefined constants
- within the <ulink
- url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube.html">Zend_Gdata_YouTube</ulink>
- class (Zend_Gdata_YouTube::STANDARD_TOP_RATED_URI for example) or
- using the predefined helper methods (see code listing below).
- </para>
- <para>
- To retrieve the top rated videos using the helper method:
- </para>
- <example id="zend.gdata.youtube.videos.standard.example-1">
- <title>Retrieving a standard video feed</title>
- <programlisting language="php"><![CDATA[
- $yt = new Zend_Gdata_YouTube();
- $videoFeed = $yt->getTopRatedVideoFeed();
- ]]></programlisting>
- </example>
- <para>
- There are also query parameters to specify the time period
- over which the standard feed is computed.
- </para>
- <para>
- For example, to retrieve the top rated videos for today:
- </para>
- <example id="zend.gdata.youtube.videos.standard.example-2">
- <title>Using a Zend_Gdata_YouTube_VideoQuery to Retrieve Videos</title>
- <programlisting language="php"><![CDATA[
- $yt = new Zend_Gdata_YouTube();
- $query = $yt->newVideoQuery();
- $query->setTime('today');
- $videoFeed = $yt->getTopRatedVideoFeed($query);
- ]]></programlisting>
- </example>
- <para>
- Alternatively, you could just retrieve the feed using the
- <acronym>URL</acronym>:
- </para>
- <example id="zend.gdata.youtube.videos.standard.example-3">
- <title>Retrieving a video feed by URL</title>
- <programlisting language="php"><![CDATA[
- $yt = new Zend_Gdata_YouTube();
- $url = 'http://gdata.youtube.com/feeds/standardfeeds/top_rated?time=today'
- $videoFeed = $yt->getVideoFeed($url);
- ]]></programlisting>
- </example>
- </sect3>
- <sect3 id="zend.gdata.youtube.videos.user">
- <title>Retrieving videos uploaded by a user</title>
- <para>
- You can retrieve a list of videos uploaded by a particular user
- using a simple helper method. This example retrieves videos
- uploaded by the user 'liz'.
- </para>
- <example id="zend.gdata.youtube.videos.user.example">
- <title>Retrieving videos uploaded by a specific user</title>
- <programlisting language="php"><![CDATA[
- $yt = new Zend_Gdata_YouTube();
- $videoFeed = $yt->getUserUploads('liz');
- ]]></programlisting>
- </example>
- </sect3>
- <sect3 id="zend.gdata.youtube.videos.favorites">
- <title>Retrieving videos favorited by a user</title>
- <para>
- You can retrieve a list of a user's favorite videos
- using a simple helper method. This example retrieves videos
- favorited by the user 'liz'.
- </para>
- <example id="zend.gdata.youtube.videos.favorites.example">
- <title>Retrieving a user's favorite videos</title>
- <programlisting language="php"><![CDATA[
- $yt = new Zend_Gdata_YouTube();
- $videoFeed = $yt->getUserFavorites('liz');
- ]]></programlisting>
- </example>
- </sect3>
- <sect3 id="zend.gdata.youtube.videos.responses">
- <title>Retrieving video responses for a video</title>
- <para>
- You can retrieve a list of a video's video responses
- using a simple helper method. This example retrieves video
- response for a video with the ID 'abc123813abc'.
- </para>
- <example id="zend.gdata.youtube.videos.responses.example">
- <title>Retrieving a feed of video responses</title>
- <programlisting language="php"><![CDATA[
- $yt = new Zend_Gdata_YouTube();
- $videoFeed = $yt->getVideoResponseFeed('abc123813abc');
- ]]></programlisting>
- </example>
- </sect3>
- </sect2>
- <sect2 id="zend.gdata.youtube.comments">
- <title>Retrieving video comments</title>
- <para>
- The comments for each YouTube video can be retrieved in
- several ways. To retrieve the comments for the video with
- the ID 'abc123813abc', use the following code:
- </para>
- <example id="zend.gdata.youtube.videos.comments.example-1">
- <title>Retrieving a feed of video comments from a video ID</title>
- <programlisting language="php"><![CDATA[
- $yt = new Zend_Gdata_YouTube();
- $commentFeed = $yt->getVideoCommentFeed('abc123813abc');
- foreach ($commentFeed as $commentEntry) {
- echo $commentEntry->title->text . "\n";
- echo $commentEntry->content->text . "\n\n\n";
- }
- ]]></programlisting>
- </example>
- <para>
- Comments can also be retrieved for a video if you have a copy of the <ulink
- url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoEntry.html">Zend_Gdata_YouTube_VideoEntry</ulink>
- object:
- </para>
- <example id="zend.gdata.youtube.videos.comments.example-2">
- <title>Retrieving a Feed of Video Comments from a Zend_Gdata_YouTube_VideoEntry</title>
- <programlisting language="php"><![CDATA[
- $yt = new Zend_Gdata_YouTube();
- $videoEntry = $yt->getVideoEntry('abc123813abc');
- // we don't know the video ID in this example, but we do have the URL
- $commentFeed = $yt->getVideoCommentFeed(null,
- $videoEntry->comments->href);
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.gdata.youtube.playlists">
- <title>Retrieving playlist feeds</title>
- <para>
- The YouTube Data <acronym>API</acronym> provides information about users, including
- profiles, playlists, subscriptions, and more.
- </para>
- <sect3 id="zend.gdata.youtube.playlists.user">
- <title>Retrieving the playlists of a user</title>
- <para>
- The library provides a helper method to retrieve
- the playlists associated with a given user. To retrieve the
- playlists for the user 'liz':
- </para>
- <example id="zend.gdata.youtube.playlists.user.example">
- <title>Retrieving the playlists of a user</title>
- <programlisting language="php"><![CDATA[
- $yt = new Zend_Gdata_YouTube();
- $playlistListFeed = $yt->getPlaylistListFeed('liz');
- foreach ($playlistListFeed as $playlistEntry) {
- echo $playlistEntry->title->text . "\n";
- echo $playlistEntry->description->text . "\n";
- echo $playlistEntry->getPlaylistVideoFeedUrl() . "\n\n\n";
- }
- ]]></programlisting>
- </example>
- </sect3>
- <sect3 id="zend.gdata.youtube.playlists.special">
- <title>Retrieving a specific playlist</title>
- <para>
- The library provides a helper method to retrieve
- the videos associated with a given playlist. To retrieve the
- playlists for a specific playlist entry:
- </para>
- <example id="zend.gdata.youtube.playlists.special.example">
- <title>Retrieving a specific playlist</title>
- <programlisting language="php"><![CDATA[
- $feedUrl = $playlistEntry->getPlaylistVideoFeedUrl();
- $playlistVideoFeed = $yt->getPlaylistVideoFeed($feedUrl);
- ]]></programlisting>
- </example>
- </sect3>
- </sect2>
- <sect2 id="zend.gdata.youtube.subscriptions">
- <title>Retrieving a list of a user's subscriptions</title>
- <para>
- A user can have several types of subscriptions: channel
- subscription, tag subscription, or favorites subscription. A <ulink
- url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_SubscriptionEntry.html">Zend_Gdata_YouTube_SubscriptionEntry</ulink>
- is used to represent individual subscriptions.
- </para>
- <para>
- To retrieve all subscriptions for the user 'liz':
- </para>
- <example id="zend.gdata.youtube.subscriptions.example">
- <title>Retrieving all subscriptions for a user</title>
- <programlisting language="php"><![CDATA[
- $yt = new Zend_Gdata_YouTube();
- $subscriptionFeed = $yt->getSubscriptionFeed('liz');
- foreach ($subscriptionFeed as $subscriptionEntry) {
- echo $subscriptionEntry->title->text . "\n";
- }
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.gdata.youtube.profile">
- <title>Retrieving a user's profile</title>
- <para>
- You can retrieve the public profile information
- for any YouTube user. To retrieve the profile
- for the user 'liz':
- </para>
- <example id="zend.gdata.youtube.profile.example">
- <title>Retrieving a user's profile</title>
- <programlisting language="php"><![CDATA[
- $yt = new Zend_Gdata_YouTube();
- $userProfile = $yt->getUserProfile('liz');
- echo "username: " . $userProfile->username->text . "\n";
- echo "age: " . $userProfile->age->text . "\n";
- echo "hometown: " . $userProfile->hometown->text . "\n";
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.gdata.youtube.uploads">
- <title>Uploading Videos to YouTube</title>
- <para>
- Please make sure to review the diagrams in the <ulink
- url="http://code.google.com/apis/youtube/developers_guide_protocol.html#Process_Flows_for_Uploading_Videos">protocol
- guide</ulink> on code.google.com for a high-level
- overview of the upload process. Uploading videos can be done in one of
- two ways: either by uploading the video directly or by sending just the video
- meta-data and having a user upload the video through an <acronym>HTML</acronym> form.
- </para>
- <para>
- In order to upload a video directly, you must first construct a new <ulink
- url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoEntry.html">Zend_Gdata_YouTube_VideoEntry</ulink>
- object and specify some required meta-data. The following example shows uploading the
- Quicktime video "mytestmovie.mov" to YouTube with the following properties:
- </para>
- <table id="zend.gdata.youtube.uploads.metadata">
- <title>Metadata used in the code-sample below</title>
- <tgroup cols="2" align="left" colsep="1" rowsep="1">
- <thead>
- <row>
- <entry>Property</entry>
- <entry>Value</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry>Title</entry>
- <entry>My Test Movie</entry>
- </row>
- <row>
- <entry>Category</entry>
- <entry>Autos</entry>
- </row>
- <row>
- <entry>Keywords</entry>
- <entry>cars, funny</entry>
- </row>
- <row>
- <entry>Description</entry>
- <entry>My description</entry>
- </row>
- <row>
- <entry>Filename</entry>
- <entry>mytestmovie.mov</entry>
- </row>
- <row>
- <entry>File <acronym>MIME</acronym> type</entry>
- <entry>video/quicktime</entry>
- </row>
- <row>
- <entry>Video private?</entry>
- <entry><constant>FALSE</constant></entry>
- </row>
- <row>
- <entry>Video location</entry>
- <entry>37, -122 (lat, long)</entry>
- </row>
- <row>
- <entry>Developer Tags</entry>
- <entry>mydevelopertag, anotherdevelopertag</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <para>
- The code below creates a blank <ulink
- url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoEntry.html">Zend_Gdata_YouTube_VideoEntry</ulink>
- to be uploaded. A <ulink
- url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_App_MediaFileSource.html">Zend_Gdata_App_MediaFileSource</ulink>
- object is then used to hold the actual video file. Under the hood, the <ulink
- url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_Extension_MediaGroup.html">Zend_Gdata_YouTube_Extension_MediaGroup</ulink>
- object is used to hold all of the video's meta-data. Our helper methods detailed below
- allow you to just set the video meta-data without having to worry about the media group
- object. The $uploadUrl is the location where the new entry gets posted to.
- This can be specified either with the $userName of the
- currently authenticated user, or, alternatively, you can simply use the
- string 'default' to refer to the currently authenticated user.
- </para>
- <example id="zend.gdata.youtube.uploads.example">
- <title>Uploading a video</title>
- <programlisting language="php"><![CDATA[
- $yt = new Zend_Gdata_YouTube($httpClient);
- $myVideoEntry = new Zend_Gdata_YouTube_VideoEntry();
- $filesource = $yt->newMediaFileSource('mytestmovie.mov');
- $filesource->setContentType('video/quicktime');
- $filesource->setSlug('mytestmovie.mov');
- $myVideoEntry->setMediaSource($filesource);
- $myVideoEntry->setVideoTitle('My Test Movie');
- $myVideoEntry->setVideoDescription('My Test Movie');
- // Note that category must be a valid YouTube category !
- $myVideoEntry->setVideoCategory('Comedy');
- // Set keywords, note that this must be a comma separated string
- // and that each keyword cannot contain whitespace
- $myVideoEntry->SetVideoTags('cars, funny');
- // Optionally set some developer tags
- $myVideoEntry->setVideoDeveloperTags(array('mydevelopertag',
- 'anotherdevelopertag'));
- // Optionally set the video's location
- $yt->registerPackage('Zend_Gdata_Geo');
- $yt->registerPackage('Zend_Gdata_Geo_Extension');
- $where = $yt->newGeoRssWhere();
- $position = $yt->newGmlPos('37.0 -122.0');
- $where->point = $yt->newGmlPoint($position);
- $myVideoEntry->setWhere($where);
- // Upload URI for the currently authenticated user
- $uploadUrl =
- 'http://uploads.gdata.youtube.com/feeds/users/default/uploads';
- // Try to upload the video, catching a Zend_Gdata_App_HttpException
- // if availableor just a regular Zend_Gdata_App_Exception
- try {
- $newEntry = $yt->insertEntry($myVideoEntry,
- $uploadUrl,
- 'Zend_Gdata_YouTube_VideoEntry');
- } catch (Zend_Gdata_App_HttpException $httpException) {
- echo $httpException->getRawResponseBody();
- } catch (Zend_Gdata_App_Exception $e) {
- echo $e->getMessage();
- }
- ]]></programlisting>
- </example>
- <para>
- To upload a video as private, simply use: $myVideoEntry->setVideoPrivate(); prior to
- performing the upload. $videoEntry->isVideoPrivate() can be used to check whether a
- video entry is private or not.
- </para>
- </sect2>
- <sect2 id="zend.gdata.youtube.uploads.browser">
- <title>Browser-based upload</title>
- <para>
- Browser-based uploading is performed almost identically to direct uploading,
- except that you do not attach a <ulink
- url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_App_MediaFileSource.html">Zend_Gdata_App_MediaFileSource</ulink>
- object to the <ulink
- url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoEntry.html">Zend_Gdata_YouTube_VideoEntry</ulink>
- you are constructing. Instead you simply submit all of your video's meta-data to receive
- back a token element which can be used to construct an <acronym>HTML</acronym> upload
- form.
- </para>
- <example id="zend.gdata.youtube.uploads.browser.example-1">
- <title>Browser-based upload</title>
- <programlisting language="php"><![CDATA[
- $yt = new Zend_Gdata_YouTube($httpClient);
- $myVideoEntry= new Zend_Gdata_YouTube_VideoEntry();
- $myVideoEntry->setVideoTitle('My Test Movie');
- $myVideoEntry->setVideoDescription('My Test Movie');
- // Note that category must be a valid YouTube category
- $myVideoEntry->setVideoCategory('Comedy');
- $myVideoEntry->SetVideoTags('cars, funny');
- $tokenHandlerUrl = 'http://gdata.youtube.com/action/GetUploadToken';
- $tokenArray = $yt->getFormUploadToken($myVideoEntry, $tokenHandlerUrl);
- $tokenValue = $tokenArray['token'];
- $postUrl = $tokenArray['url'];
- ]]></programlisting>
- </example>
- <para>
- The above code prints out a link and a token that is used to construct an
- <acronym>HTML</acronym> form to display in the user's browser. A simple example form is
- shown below with $tokenValue representing the content of the returned token element,
- as shown being retrieved from $myVideoEntry above. In order for the user
- to be redirected to your website after submitting the form, make sure to
- append a $nextUrl parameter to the $postUrl above, which functions in the
- same way as the $next parameter of an AuthSub link. The only difference is
- that here, instead of a single-use token, a status and an id variable are
- returned in the <acronym>URL</acronym>.
- </para>
- <example id="zend.gdata.youtube.uploads.browser.example-2">
- <title>Browser-based upload: Creating the HTML form</title>
- <programlisting language="php"><![CDATA[
- // place to redirect user after upload
- $nextUrl = 'http://mysite.com/youtube_uploads';
- $form = '<form action="'. $postUrl .'?nexturl='. $nextUrl .
- '" method="post" enctype="multipart/form-data">'.
- '<input name="file" type="file"/>'.
- '<input name="token" type="hidden" value="'. $tokenValue .'"/>'.
- '<input value="Upload Video File" type="submit" />'.
- '</form>';
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.gdata.youtube.uploads.status">
- <title>Checking upload status</title>
- <para>
- After uploading a video, it will immediately be visible in an
- authenticated user's uploads feed. However, it will not be public on
- the site until it has been processed. Videos that have been rejected or
- failed to upload successfully will also only be in the authenticated
- user's uploads feed. The following code checks the status of a <ulink
- url="http://framework.zend.com/apidoc/core/Zend_Gdata/Zend_Gdata_YouTube_VideoEntry.html">Zend_Gdata_YouTube_VideoEntry</ulink>
- to see if it is not live yet or if it has been rejected.
- </para>
- <example id="zend.gdata.youtube.uploads.status.example">
- <title>Checking video upload status</title>
- <programlisting language="php"><![CDATA[
- try {
- $control = $videoEntry->getControl();
- } catch (Zend_Gdata_App_Exception $e) {
- echo $e->getMessage();
- }
- if ($control instanceof Zend_Gdata_App_Extension_Control) {
- if ($control->getDraft() != null &&
- $control->getDraft()->getText() == 'yes') {
- $state = $videoEntry->getVideoState();
- if ($state instanceof Zend_Gdata_YouTube_Extension_State) {
- print 'Upload status: '
- . $state->getName()
- .' '. $state->getText();
- } else {
- print 'Not able to retrieve the video status information'
- .' yet. ' . "Please try again shortly.\n";
- }
- }
- }
- ]]></programlisting>
- </example>
- </sect2>
- <sect2 id="zend.gdata.youtube.other">
- <title>Other Functions</title>
- <para>
- In addition to the functionality described above, the YouTube <acronym>API</acronym>
- contains many other functions that allow you to modify video meta-data,
- delete video entries and use the full range of community features on the site. Some of
- the community features that can be modified through the <acronym>API</acronym> include:
- ratings, comments, playlists, subscriptions, user profiles, contacts and messages.
- </para>
- <para>
- Please refer to the full documentation available in the <ulink
- url="http://code.google.com/apis/youtube/developers_guide_php.html">PHP Developer's
- Guide</ulink> on code.google.com.
- </para>
- </sect2>
- </sect1>
|