NAME

WWW::YouTube::XML::API - How to Interface with YouTube using HTTP Protocol and GData XML Atom API.

http://code.google.com/apis/youtube/developers_guide_protocol.html

SYNOPSIS

use WWW::YouTube;

## Standard feeds

foreach my $feed qw( top_rated top_favorites most_viewed most_recent most_discussed most_linked most_responded recently_featured watch_on_mobile ) { print "##\n## /feeds/api/standardfeeds/$feed\n##\n";

$request = WWW::YouTube::XML::API::standardfeeds( $feed );

$result = WWW::YouTube::XML::API::ua_request( $request );

if ( $result->is_success() )
{
   $xml_tree = WWW::YouTube::XML::parse_result( $result );

   WWW::YouTube::XML::example_show_xml_links( $xml_tree );

   $xml_tree->delete();

}
else
{
   print $result->as_string() . "\nFAILURE\n";

} ## end if

} ## end foreach

## Uploaded by user

my $request = WWW::YouTube::XML::API::uploaded_by_userid( $userid );

my $result = WWW::YouTube::XML::API::ua_request( $request );

if ( $result->is_success() ) { my $xml_tree = XML::TreeBuilder->new();

$xml_tree->parse( $result->content() );

$xml_tree->eof();

# do something here, then

$xml_tree->delete();

} ## end if

OPTIONS

--xml_ua_dmp

user agent transaction dump

--xml_request_dmp

transaction request dump

--xml_result_dmp

transaction result dump

DESCRIPTION

XML::API stands for XML Application Programming Interface

See: http://code.youtube.com http://code.google.com/apis/youtube http://code.google.com/apis/youtube/developers_guide_protocol.html

Demo

WWW::YouTube::XML::demo()

Retrieving and searching for videos

1. Standard video feeds

foreach my $feed qw( top_rated top_favorites most_viewed most_recent most_discussed most_linked most_responded recently_featured watch_on_mobile ) { print "##\n## /feeds/api/standardfeeds/$feed\n##\n";

$request = WWW::YouTube::XML::API::standardfeeds( $feed );

$result = WWW::YouTube::XML::API::ua_request( $request );

if ( $result->is_success() )
{
   $xml_tree = WWW::YouTube::XML::parse_result( $result );

   WWW::YouTube::XML::example_show_xml_links( $xml_tree );

   $xml_tree->delete();

}
else
{
   print $result->as_string() . "\nFAILURE\n";

} ## end if

} ## end foreach

NOTE: This also works. WWW::YouTube::XML::API::standardfeeds( 'US/top_rated?time=today' );

2. Videos uploaded by a specific user

$request = WWW::YouTube::XML::API::uploaded_by_userid([ $userid ]);

$result = WWW::YouTube::XML::API::ua_request( $request );

3. Related videos

Follow a link with rel="http://gdata.youtube.com/schemas/2007#video.related".

4. Browsing with categories and keywords

$request = WWW::YouTube::XML::API::browse( $categories_or_keywords );

$result = WWW::YouTube::XML::API::ua_request( $request );

See: http://code.google.com/apis/youtube/developers_guide_protocol.html#Browsing_with_Categories_and_Keywords

5. Searching for videos

$request = WWW::YouTube::XML::API::search( 'vq' => 'funny+video', 'max-results' => 10 );

$result = WWW::YouTube::XML::API::ua_request( $request );

See: http://code.google.com/apis/youtube/developers_guide_protocol.html#Searching_for_Videos

Uploading videos

1. Process flow diagrams
      1. AuthSub authentication
      2. ClientLogin authentication
      3. Browser-based upload
      4. Direct upload
2. Technical requirements for uploaded videos
3. Assigning developer tags
4. Browser-based uploading
      1. Step 1 - Uploading video metadata
            1. Variables in the upload request
      2. Step 2 - Extracting values from the API response
      3. Step 3 - Uploading the video file
5. Direct uploading
      1. Sending an Upload API Request
            1. Variables in the upload request
      2. Handling the Upload API Response
6. Checking the status of an uploaded video

Updating and deleting videos

1. Updating a video entry

$request = WWW::YouTube::XML::API::get_uploaded_by_userid_videoid( $userid, $videoid );

$result = WWW::YouTube::XML::API::ua_request( $request );

$xml_tree = WWW::YouTube::XML::parse_result( $result );

## Edit the Entry, then put the update

$request = WWW::YouTube::XML::API::put_uploaded_by_userid_videoid( $userid, $videoid, $xml_tree );

$result = WWW::YouTube::XML::API::ua_request( $request );

2. Deleting a video

$request = WWW::YouTube::XML::API::remove_uploaded_by_userid_videoid( $userid, $videoid );

$result = WWW::YouTube::XML::API::ua_request( $request );

Using community features

1. Adding a rating

$request = WWW::YouTube::XML::API::rating_by_videoid( $videoid, $xml_tree );

$result = WWW::YouTube::XML::API::ua_request( $request );

2. Comments

1. Retrieving comments for a video

$request = WWW::YouTube::XML::API::comments_by_videoid( $videoid );

$result = WWW::YouTube::XML::API::ua_request( $request );

2. Adding a comment in response to a video

$request = WWW::YouTube::XML::API::comment_by_videoid( $videoid, $xml_tree );

$result = WWW::YouTube::XML::API::ua_request( $request );

3. Video responses

1. Retrieving a list of video responses

$request = WWW::YouTube::XML::API::responses_by_videoid( $videoid );

$result = WWW::YouTube::XML::API::ua_request( $request );

2. Adding a video response

$request = WWW::YouTube::XML::API::response_by_videoid( $videoid, $xml_tree );

$result = WWW::YouTube::XML::API::ua_request( $request );

3. Deleting a video response

$request = WWW::YouTube::XML::API::remove_response_by_videoid_responseid( $videoid, $responseid );

$result = WWW::YouTube::XML::API::ua_request( $request );

4. Adding a complaint

$request = WWW::YouTube::XML::API::complaint_by_videoid( $videoid, $xml_tree );

$result = WWW::YouTube::XML::API::ua_request( $request );

5. Sharing videos with other users

$request = WWW::YouTube::XML::API::contact_by_userid( $userid, $xml_tree );

$result = WWW::YouTube::XML::API::ua_request( $request );

Saving and collecting videos

1. Favorite videos

1. Retrieving a user's favorite videos

$request = WWW::YouTube::XML::API::favorites_by_userid([ $userid ]);

$result = WWW::YouTube::XML::API::ua_request( $request );

2. Adding a favorite video

$request = WWW::YouTube::XML::API::favorite_by_userid( $userid, $xml_tree );

$result = WWW::YouTube::XML::API::ua_request( $request );

3. Deleting a favorite video

$request = WWW::YouTube::XML::API::remove_favorite_by_userid_videoid( $userid, $videoid );

$result = WWW::YouTube::XML::API::ua_request( $request );

2. Playlists

1. Retrieving a user's playlists

$request = WWW::YouTube::XML::API::playlists_by_userid([ $userid ]);

$result = WWW::YouTube::XML::API::ua_request( $request );

2. Retrieving a single playlist

Follow a gd:feedLink with rel="http://gdata.youtube.com/schemas/2007#playlist".

3. Adding a playlist

$request = WWW::YouTube::XML::API::playlist_by_userid( $userid, $xml_tree );

$result = WWW::YouTube::XML::API::ua_request( $request );

4. Updating a playlist

$request = WWW::YouTube::XML::API::get_playlist_by_userid_playlistid( $userid, $playlistid );

$result = WWW::YouTube::XML::API::ua_request( $request );

$xml_tree = WWW::YouTube::XML::parse_result( $result );

## Edit the Entry, then put the update

$request = WWW::YouTube::XML::API::put_playlist_by_userid_playlistid( $userid, $playlistid, $xml_tree );

$result = WWW::YouTube::XML::API::ua_request( $request );

1. Adding a video to a playlist

$request = WWW::YouTube::XML::API::add_to_playlist_by_playlistid( $playlistid, $xml_tree );

$result = WWW::YouTube::XML::API::ua_request( $request );

2. Editing video information in a playlist

$request = WWW::YouTube::XML::API::get_entry_by_playlistid_entryid( $playlistid, $entryid );

$result = WWW::YouTube::XML::API::ua_request( $request );

$xml_tree = WWW::YouTube::XML::parse_result( $result );

## Edit the Entry, then put the update

$request = WWW::YouTube::XML::API::put_entry_by_playlistid_entryid( $playlistid, $entryid, $xml_tree );

$result = WWW::YouTube::XML::API::ua_request( $request );

3. Removing a video from a playlist

$request = WWW::YouTube::XML::API::remove_entry_by_playlistid_entryid( $playlistid, $entryid );

$result = WWW::YouTube::XML::API::ua_request( $request );

5. Deleting a playlist

$request = WWW::YouTube::XML::API::remove_playlist_by_userid_playlistid( $userid, $playlistid );

$result = WWW::YouTube::XML::API::ua_request( $request );

3. Subscriptions

1. Retrieving a user's subscriptions

$request = WWW::YouTube::XML::API::subscriptions_by_userid([ $userid ]);

$result = WWW::YouTube::XML::API::ua_request( $request );

2. Adding a subscription

$request = WWW::YouTube::XML::API::subscribe_by_userid( $xml_tree );

$result = WWW::YouTube::XML::API::ua_request( $request );

3. Deleting a subscription

$request = WWW::YouTube::XML::API::remove_subscription_by_userid_subscriptionid( $userid, $subscriptionid );

$result = WWW::YouTube::XML::API::ua_request( $request );

Enabling user interaction

1. User profiles

1. Retrieving a user's profile

$request = WWW::YouTube::XML::API::profile_by_userid([ $userid ]);

$result = WWW::YouTube::XML::API::ua_request( $request );

2. Contacts

1. Retrieving a user's contacts

$request = WWW::YouTube::XML::API::contacts_by_userid([ $userid ]);

$result = WWW::YouTube::XML::API::ua_request( $request );

2. Adding a contact

$request = WWW::YouTube::XML::API::add_contact_by_userid( $userid, $xml_tree );

$result = WWW::YouTube::XML::API::ua_request( $request );

3. Updating a contact

$request = WWW::YouTube::XML::API::get_contact_by_userid_contactid( $userid, $contactid );

$result = WWW::YouTube::XML::API::ua_request( $request );

$xml_tree = WWW::YouTube::XML::parse_result( $result );

# Edit the Entry, then put the update

$request = WWW::YouTube::XML::API::put_contact_by_userid_contactid( $userid, $contactid, $xml_tree );

$result = WWW::YouTube::XML::API::ua_request( $request );

4. Deleting a contact

$request = WWW::YouTube::XML::API::remove_contact_by_userid_contactid( $userid, $contactid );

$result = WWW::YouTube::XML::API::ua_request( $request );

SEE ALSO

WWW::YouTube WWW::YouTube::ML::API WWW::YouTube::HTML::API WWW::YouTube::XML

AUTHOR

Copyright (C) 2008 Eric R. Meyers E<lt>Eric.R.Meyers@gmail.comE<gt>

4 POD Errors

The following errors were encountered while parsing the POD:

Around line 553:

'=item' outside of any '=over'

Around line 600:

You forgot a '=back' before '=head1'

Around line 602:

'=item' outside of any '=over'

Around line 614:

You forgot a '=back' before '=head1'