Caution: The documentation you are viewing is
for an older version of Zend Framework.
You can find the documentation of the current version at docs.zendframework.com
Using the YouTube Data API - Zend_Gdata
The YouTube Data API 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.
For more information on the YouTube Data API, please refer to the official » PHP Developer's Guide on code.google.com.
The YouTube Data API 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 » Authentication section in the PHP Developer's Guide for more detail.
A developer key identifies the YouTube developer that is submitting an API request. A client ID identifies your application for logging and debugging purposes. Please visit » http://code.google.com/apis/youtube/dashboard/ to obtain a developer key and client ID. The example below demonstrates how to pass the developer key and client ID to the » Zend_Gdata_YouTube service object.
Example #1 Passing a Developer Key and ClientID to Zend_Gdata_YouTube
The YouTube Data API 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 » YouTube API reference guide for a detailed list of available feeds.
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.
Example #2 Searching for videos
For more details on the different query parameters, please refer to the » Reference Guide. The available helper functions in » Zend_Gdata_YouTube_VideoQuery for each of these parameters are described in more detail in the » PHP Developer's Guide.
Searching for videos in specific categories is done by generating a » specially formatted URL. For example, to search for comedy videos which contain the keyword dog:
Example #3 Searching for videos in specific categories
The YouTube Data API has a number of » standard feeds. These standard feeds can be retrieved as » Zend_Gdata_YouTube_VideoFeed objects using the specified URLs, using the predefined constants within the » Zend_Gdata_YouTube class (Zend_Gdata_YouTube::STANDARD_TOP_RATED_URI for example) or using the predefined helper methods (see code listing below).
To retrieve the top rated videos using the helper method:
Example #4 Retrieving a standard video feed
There are also query parameters to specify the time period over which the standard feed is computed.
For example, to retrieve the top rated videos for today:
Example #5 Using a Zend_Gdata_YouTube_VideoQuery to Retrieve Videos
Alternatively, you could just retrieve the feed using the URL:
Example #6 Retrieving a video feed by URL
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'.
Example #7 Retrieving videos uploaded by a specific user
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'.
Example #8 Retrieving a user's favorite videos
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'.
Example #9 Retrieving a feed of video responses
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:
Example #10 Retrieving a feed of video comments from a video ID
Comments can also be retrieved for a video if you have a copy of the » Zend_Gdata_YouTube_VideoEntry object:
Example #11 Retrieving a Feed of Video Comments from a Zend_Gdata_YouTube_VideoEntry
The YouTube Data API provides information about users, including profiles, playlists, subscriptions, and more.
The library provides a helper method to retrieve the playlists associated with a given user. To retrieve the playlists for the user 'liz':
Example #12 Retrieving the playlists of a user
The library provides a helper method to retrieve the videos associated with a given playlist. To retrieve the playlists for a specific playlist entry:
Example #13 Retrieving a specific playlist
A user can have several types of subscriptions: channel subscription, tag subscription, or favorites subscription. A » Zend_Gdata_YouTube_SubscriptionEntry is used to represent individual subscriptions.
To retrieve all subscriptions for the user 'liz':
Example #14 Retrieving all subscriptions for a user
You can retrieve the public profile information for any YouTube user. To retrieve the profile for the user 'liz':
Please make sure to review the diagrams in the » protocol guide 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 HTML form.
In order to upload a video directly, you must first construct a new » Zend_Gdata_YouTube_VideoEntry object and specify some required meta-data. The following example shows uploading the Quicktime video "mytestmovie.mov" to YouTube with the following properties:
|Title||My Test Movie|
|File MIME type||video/quicktime|
|Video location||37, -122 (lat, long)|
|Developer Tags||mydevelopertag, anotherdevelopertag|
The code below creates a blank » Zend_Gdata_YouTube_VideoEntry to be uploaded. A » Zend_Gdata_App_MediaFileSource object is then used to hold the actual video file. Under the hood, the » Zend_Gdata_YouTube_Extension_MediaGroup 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.
Example #16 Uploading a video
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.
Browser-based uploading is performed almost identically to direct uploading, except that you do not attach a » Zend_Gdata_App_MediaFileSource object to the » Zend_Gdata_YouTube_VideoEntry 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 HTML upload form.
Example #17 Browser-based upload
The above code prints out a link and a token that is used to construct an HTML 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 URL.
Example #18 Browser-based upload: Creating the HTML form
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 » Zend_Gdata_YouTube_VideoEntry to see if it is not live yet or if it has been rejected.
Example #19 Checking video upload status
In addition to the functionality described above, the YouTube API 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 API include: ratings, comments, playlists, subscriptions, user profiles, contacts and messages.
Please refer to the full documentation available in the » PHP Developer's Guide on code.google.com.