Blob Blame History Raw
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>GDataYouTubeService: GData Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets Vsnapshot">
<link rel="home" href="index.html" title="GData Reference Manual">
<link rel="up" href="ch13.html" title="YouTube API">
<link rel="prev" href="ch13.html" title="YouTube API">
<link rel="next" href="GDataYouTubeFeed.html" title="GDataYouTubeFeed">
<meta name="generator" content="GTK-Doc V1.26.1 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
                  <a href="#GDataYouTubeService.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span> 
                  <a href="#GDataYouTubeService.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces">  <span class="dim">|</span> 
                  <a href="#GDataYouTubeService.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties">  <span class="dim">|</span> 
                  <a href="#GDataYouTubeService.properties" class="shortcut">Properties</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch13.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="ch13.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="GDataYouTubeFeed.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="GDataYouTubeService"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="GDataYouTubeService.top_of_page"></a>GDataYouTubeService</span></h2>
<p>GDataYouTubeService — GData YouTube service object</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
<a name="GDataYouTubeService.stability-level"></a><h2>Stability Level</h2>
<acronym title="The intention of a Stable interface is to enable arbitrary third parties to
develop applications to these interfaces, release them, and have confidence that
they will run on all minor releases of the product (after the one in which the
interface was introduced, and within the same major release). Even at a major
release, incompatible changes are expected to be rare, and to have strong
justifications.
"><span class="acronym">Stable</span></acronym>, unless otherwise indicated
</div>
<div class="refsect1">
<a name="GDataYouTubeService.functions"></a><h2>Functions</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="functions_return">
<col class="functions_name">
</colgroup>
<tbody>
<tr>
<td class="function_type">
<a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="returnvalue">GDataYouTubeService</span></a> *
</td>
<td class="function_name">
<a class="link" href="GDataYouTubeService.html#gdata-youtube-service-new" title="gdata_youtube_service_new ()">gdata_youtube_service_new</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="GDataAuthorizationDomain.html" title="GDataAuthorizationDomain"><span class="returnvalue">GDataAuthorizationDomain</span></a> *
</td>
<td class="function_name">
<a class="link" href="GDataYouTubeService.html#gdata-youtube-service-get-primary-authorization-domain" title="gdata_youtube_service_get_primary_authorization_domain ()">gdata_youtube_service_get_primary_authorization_domain</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="GDataFeed.html" title="GDataFeed"><span class="returnvalue">GDataFeed</span></a> *
</td>
<td class="function_name">
<a class="link" href="GDataYouTubeService.html#gdata-youtube-service-query-videos" title="gdata_youtube_service_query_videos ()">gdata_youtube_service_query_videos</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="GDataYouTubeService.html#gdata-youtube-service-query-videos-async" title="gdata_youtube_service_query_videos_async ()">gdata_youtube_service_query_videos_async</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="GDataFeed.html" title="GDataFeed"><span class="returnvalue">GDataFeed</span></a> *
</td>
<td class="function_name">
<a class="link" href="GDataYouTubeService.html#gdata-youtube-service-query-related" title="gdata_youtube_service_query_related ()">gdata_youtube_service_query_related</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="GDataYouTubeService.html#gdata-youtube-service-query-related-async" title="gdata_youtube_service_query_related_async ()">gdata_youtube_service_query_related_async</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="GDataFeed.html" title="GDataFeed"><span class="returnvalue">GDataFeed</span></a> *
</td>
<td class="function_name">
<a class="link" href="GDataYouTubeService.html#gdata-youtube-service-query-standard-feed" title="gdata_youtube_service_query_standard_feed ()">gdata_youtube_service_query_standard_feed</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="GDataYouTubeService.html#gdata-youtube-service-query-standard-feed-async" title="gdata_youtube_service_query_standard_feed_async ()">gdata_youtube_service_query_standard_feed_async</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="GDataUploadStream.html" title="GDataUploadStream"><span class="returnvalue">GDataUploadStream</span></a> *
</td>
<td class="function_name">
<a class="link" href="GDataYouTubeService.html#gdata-youtube-service-upload-video" title="gdata_youtube_service_upload_video ()">gdata_youtube_service_upload_video</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="GDataYouTubeVideo.html" title="GDataYouTubeVideo"><span class="returnvalue">GDataYouTubeVideo</span></a> *
</td>
<td class="function_name">
<a class="link" href="GDataYouTubeService.html#gdata-youtube-service-finish-video-upload" title="gdata_youtube_service_finish_video_upload ()">gdata_youtube_service_finish_video_upload</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="GDataAPPCategories.html" title="GDataAPPCategories"><span class="returnvalue">GDataAPPCategories</span></a> *
</td>
<td class="function_name">
<a class="link" href="GDataYouTubeService.html#gdata-youtube-service-get-categories" title="gdata_youtube_service_get_categories ()">gdata_youtube_service_get_categories</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="GDataYouTubeService.html#gdata-youtube-service-get-categories-async" title="gdata_youtube_service_get_categories_async ()">gdata_youtube_service_get_categories_async</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="GDataAPPCategories.html" title="GDataAPPCategories"><span class="returnvalue">GDataAPPCategories</span></a> *
</td>
<td class="function_name">
<a class="link" href="GDataYouTubeService.html#gdata-youtube-service-get-categories-finish" title="gdata_youtube_service_get_categories_finish ()">gdata_youtube_service_get_categories_finish</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">const <a href="../glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
</td>
<td class="function_name">
<a class="link" href="GDataYouTubeService.html#gdata-youtube-service-get-developer-key" title="gdata_youtube_service_get_developer_key ()">gdata_youtube_service_get_developer_key</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="GDataYouTubeService.properties"></a><h2>Properties</h2>
<div class="informaltable"><table class="informaltable" border="0">
<colgroup>
<col width="150px" class="properties_type">
<col width="300px" class="properties_name">
<col width="200px" class="properties_flags">
</colgroup>
<tbody><tr>
<td class="property_type">
<a href="../glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
<td class="property_name"><a class="link" href="GDataYouTubeService.html#GDataYouTubeService--developer-key" title="The “developer-key” property">developer-key</a></td>
<td class="property_flags">Read / Write / Construct Only</td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
<a name="GDataYouTubeService.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="name">
<col class="description">
</colgroup>
<tbody>
<tr>
<td class="datatype_keyword"> </td>
<td class="function_name"><a class="link" href="GDataYouTubeService.html#GDataYouTubeService-struct" title="GDataYouTubeService">GDataYouTubeService</a></td>
</tr>
<tr>
<td class="datatype_keyword"> </td>
<td class="function_name"><a class="link" href="GDataYouTubeService.html#GDataYouTubeServiceClass" title="GDataYouTubeServiceClass">GDataYouTubeServiceClass</a></td>
</tr>
<tr>
<td class="datatype_keyword">enum</td>
<td class="function_name"><a class="link" href="GDataYouTubeService.html#GDataYouTubeServiceError" title="enum GDataYouTubeServiceError">GDataYouTubeServiceError</a></td>
</tr>
<tr>
<td class="datatype_keyword">enum</td>
<td class="function_name"><a class="link" href="GDataYouTubeService.html#GDataYouTubeStandardFeedType" title="enum GDataYouTubeStandardFeedType">GDataYouTubeStandardFeedType</a></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="GDataYouTubeService.object-hierarchy"></a><h2>Object Hierarchy</h2>
<pre class="screen">    <a href="../gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
    <span class="lineart">╰──</span> <a class="link" href="GDataService.html" title="GDataService">GDataService</a>
        <span class="lineart">╰──</span> GDataYouTubeService
</pre>
</div>
<div class="refsect1">
<a name="GDataYouTubeService.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
<p>
GDataYouTubeService implements
 <a class="link" href="GDataBatchable.html" title="GDataBatchable">GDataBatchable</a>.</p>
</div>
<div class="refsect1">
<a name="GDataYouTubeService.includes"></a><h2>Includes</h2>
<pre class="synopsis">#include &lt;gdata/services/youtube/gdata-youtube-service.h&gt;
</pre>
</div>
<div class="refsect1">
<a name="GDataYouTubeService.description"></a><h2>Description</h2>
<p><a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> is a subclass of <a class="link" href="GDataService.html" title="GDataService"><span class="type">GDataService</span></a> for communicating with the GData API of YouTube. It supports querying for and
uploading videos using version 3 of the API.</p>
<p>The YouTube API supports returning different sets of properties for
<a href="GDataYouTubeVideo.html#GDataYouTubeVideo-struct"><span class="type">GDataYouTubeVideos</span></a> depending on the specific query. For search results, only
‘snippet’ properties are returned (including <a class="link" href="GDataEntry.html#GDataEntry--title" title="The “title” property"><span class="type">“title”</span></a>,
<a class="link" href="GDataEntry.html#GDataEntry--summary" title="The “summary” property"><span class="type">“summary”</span></a> and the set of thumbnails). For querying single videos,
a more complete set of properties are returned — so use
<a class="link" href="GDataService.html#gdata-service-query-single-entry-async" title="gdata_service_query_single_entry_async ()"><code class="function">gdata_service_query_single_entry_async()</code></a> to get further details on a video.</p>
<p>For more details of YouTube's GData API, see the <a class="ulink" href="https://developers.google.com/youtube/v3/docs/" target="_top">
online documentation</a>.</p>
<div class="example">
<a name="id-1.5.2.2.10.5"></a><p class="title"><b>Example 11. Getting a Localized List of YouTube Categories</b></p>
<div class="example-contents">
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
    <tbody>
      <tr>
        <td class="listing_lines" align="right"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24</pre></td>
        <td class="listing_code"><pre class="programlisting"><span class="usertype">GDataYouTubeService</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">service</span><span class="symbol">;</span>
<span class="usertype">GDataAPPCategories</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">app_categories</span><span class="symbol">;</span>
<span class="usertype">GList</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">categories</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">i</span><span class="symbol">;</span>

<span class="comment">/* Create a service and set its locale to Italian, which localizes the categories to Italian */</span>
<span class="normal">service </span><span class="symbol">=</span><span class="normal"> </span><span class="function">create_youtube_service</span><span class="normal"> </span><span class="symbol">();</span>
<span class="function"><a href="GDataService.html#gdata-service-set-locale">gdata_service_set_locale</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function">GDATA_SERVICE</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">service</span><span class="symbol">),</span><span class="normal"> </span><span class="string">"it"</span><span class="symbol">);</span>

<span class="comment">/* Query the server for the current list of YouTube categories (in Italian) */</span>
<span class="normal">app_categories </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDataYouTubeService.html#gdata-youtube-service-get-categories">gdata_youtube_service_get_categories</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">service</span><span class="symbol">,</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
<span class="normal">categories </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDataAPPCategories.html#gdata-app-categories-get-categories">gdata_app_categories_get_categories</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">app_categories</span><span class="symbol">);</span>

<span class="comment">/* Iterate through the categories */</span>
<span class="keyword">for</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">i </span><span class="symbol">=</span><span class="normal"> categories</span><span class="symbol">;</span><span class="normal"> i </span><span class="symbol">!=</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span><span class="normal"> i </span><span class="symbol">=</span><span class="normal"> i</span><span class="symbol">-&gt;</span><span class="normal">next</span><span class="symbol">)</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="usertype">GDataYouTubeCategory</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">category </span><span class="symbol">=</span><span class="normal"> </span><span class="function">GDATA_YOUTUBE_CATEGORY</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">i</span><span class="symbol">-&gt;</span><span class="normal">data</span><span class="symbol">);</span>

<span class="normal">    </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="GDataYouTubeCategory.html#gdata-youtube-category-is-deprecated">gdata_youtube_category_is_deprecated</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">category</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#FALSE:CAPS">FALSE</a> </span><span class="symbol">&amp;&amp;</span><span class="normal"> </span><span class="function"><a href="GDataYouTubeCategory.html#gdata-youtube-category-is-browsable">gdata_youtube_category_is_browsable</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">category</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"IT"</span><span class="symbol">)</span><span class="normal"> </span><span class="symbol">==</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#TRUE:CAPS">TRUE</a></span><span class="symbol">)</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">        </span><span class="comment">/* Do something with the category here, as it's not deprecated, and is browsable in the given region */</span>
<span class="normal">        </span><span class="function">add_to_ui</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="GDataCategory.html#gdata-category-get-term">gdata_category_get_term</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function">GDATA_CATEGORY</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">category</span><span class="symbol">)),</span><span class="normal"> </span><span class="function"><a href="GDataCategory.html#gdata-category-get-label">gdata_category_get_label</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function">GDATA_CATEGORY</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">category</span><span class="symbol">)));</span>
<span class="normal">    </span><span class="cbracket">}</span>
<span class="cbracket">}</span>

<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">app_categories</span><span class="symbol">);</span>
<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">service</span><span class="symbol">);</span></pre></td>
      </tr>
    </tbody>
  </table>
</div>

</div>
<br class="example-break"><div class="example">
<a name="id-1.5.2.2.10.6"></a><p class="title"><b>Example 12. Uploading a Video from Disk</b></p>
<div class="example-contents">
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
    <tbody>
      <tr>
        <td class="listing_lines" align="right"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99</pre></td>
        <td class="listing_code"><pre class="programlisting"><span class="usertype">GDataYouTubeService</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">service</span><span class="symbol">;</span>
<span class="usertype">GDataYouTubeVideo</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">video</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">uploaded_video</span><span class="symbol">;</span>
<span class="usertype">GDataMediaCategory</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">category</span><span class="symbol">;</span>
<span class="keyword">const</span><span class="normal"> <a href="../glib/glib-Basic-Types.html#gchar">gchar</a> </span><span class="symbol">*</span><span class="normal"> </span><span class="keyword">const</span><span class="normal"> tags</span><span class="symbol">[]</span><span class="normal"> </span><span class="symbol">=</span><span class="normal"> </span><span class="cbracket">{</span><span class="normal"> </span><span class="string">"tag1"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"tag2"</span><span class="symbol">,</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a> </span><span class="cbracket">}</span><span class="symbol">;</span>
<span class="usertype">GFile</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">video_file</span><span class="symbol">;</span>
<span class="usertype">GFileInfo</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">file_info</span><span class="symbol">;</span>
<span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">slug</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">content_type</span><span class="symbol">;</span>
<span class="usertype">GFileInputStream</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">file_stream</span><span class="symbol">;</span>
<span class="usertype">GDataUploadStream</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">upload_stream</span><span class="symbol">;</span>
<span class="usertype">GError</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">error </span><span class="symbol">=</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>

<span class="comment">/* Create a service */</span>
<span class="normal">service </span><span class="symbol">=</span><span class="normal"> </span><span class="function">create_youtube_service</span><span class="normal"> </span><span class="symbol">();</span>

<span class="comment">/* Get the video file to upload */</span>
<span class="normal">video_file </span><span class="symbol">=</span><span class="normal"> </span><span class="function">g_file_new_for_path</span><span class="normal"> </span><span class="symbol">(</span><span class="string">"sample.ogg"</span><span class="symbol">);</span>

<span class="comment">/* Get the file's display name and content type */</span>
<span class="normal">file_info </span><span class="symbol">=</span><span class="normal"> </span><span class="function">g_file_query_info</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">video_file</span><span class="symbol">,</span><span class="normal"> G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME </span><span class="string">","</span><span class="normal"> G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE</span><span class="symbol">,</span>
<span class="normal">                               G_FILE_QUERY_INFO_NONE</span><span class="symbol">,</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">error</span><span class="symbol">);</span>

<span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error </span><span class="symbol">!=</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">)</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="function"><a href="../glib/glib-Message-Logging.html#g-error">g_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"Error getting video file information: %s"</span><span class="symbol">,</span><span class="normal"> error</span><span class="symbol">-&gt;</span><span class="normal">message</span><span class="symbol">);</span>
<span class="normal">    </span><span class="function"><a href="../glib/glib-Error-Reporting.html#g-error-free">g_error_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error</span><span class="symbol">);</span>
<span class="normal">    </span><span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">video_file</span><span class="symbol">);</span>
<span class="normal">    </span><span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">service</span><span class="symbol">);</span>
<span class="normal">    </span><span class="keyword">return</span><span class="symbol">;</span>
<span class="cbracket">}</span>

<span class="normal">slug </span><span class="symbol">=</span><span class="normal"> </span><span class="function">g_file_info_get_display_name</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">file_info</span><span class="symbol">);</span>
<span class="normal">content_type </span><span class="symbol">=</span><span class="normal"> </span><span class="function">g_file_info_get_content_type</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">file_info</span><span class="symbol">);</span>

<span class="comment">/* Get an input stream for the file */</span>
<span class="normal">file_stream </span><span class="symbol">=</span><span class="normal"> </span><span class="function">g_file_read</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">video_file</span><span class="symbol">,</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">error</span><span class="symbol">);</span>

<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">video_file</span><span class="symbol">);</span>

<span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error </span><span class="symbol">!=</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">)</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="function"><a href="../glib/glib-Message-Logging.html#g-error">g_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"Error getting video file stream: %s"</span><span class="symbol">,</span><span class="normal"> error</span><span class="symbol">-&gt;</span><span class="normal">message</span><span class="symbol">);</span>
<span class="normal">    </span><span class="function"><a href="../glib/glib-Error-Reporting.html#g-error-free">g_error_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error</span><span class="symbol">);</span>
<span class="normal">    </span><span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">file_info</span><span class="symbol">);</span>
<span class="normal">    </span><span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">service</span><span class="symbol">);</span>
<span class="normal">    </span><span class="keyword">return</span><span class="symbol">;</span>
<span class="cbracket">}</span>

<span class="comment">/* Create the video to upload */</span>
<span class="normal">video </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDataYouTubeVideo.html#gdata-youtube-video-new">gdata_youtube_video_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal"><a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>

<span class="function"><a href="GDataEntry.html#gdata-entry-set-title">gdata_entry_set_title</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function">GDATA_ENTRY</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">video</span><span class="symbol">),</span><span class="normal"> </span><span class="string">"Video Title"</span><span class="symbol">);</span>
<span class="function"><a href="GDataYouTubeVideo.html#gdata-youtube-video-set-description">gdata_youtube_video_set_description</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">video</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Video description."</span><span class="symbol">);</span>
<span class="function"><a href="GDataYouTubeVideo.html#gdata-youtube-video-set-keywords">gdata_youtube_video_set_keywords</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">video</span><span class="symbol">,</span><span class="normal"> video_tags</span><span class="symbol">);</span>

<span class="normal">category </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDataMediaCategory.html#gdata-media-category-new">gdata_media_category_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"People"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"http://gdata.youtube.com/schemas/2007/categories.cat"</span><span class="symbol">,</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
<span class="function"><a href="GDataYouTubeVideo.html#gdata-youtube-video-set-category">gdata_youtube_video_set_category</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">video</span><span class="symbol">,</span><span class="normal"> category</span><span class="symbol">);</span>
<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">category</span><span class="symbol">);</span>

<span class="comment">/* Get an upload stream for the video */</span>
<span class="normal">upload_stream </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDataYouTubeService.html#gdata-youtube-service-upload-video">gdata_youtube_service_upload_video</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">service</span><span class="symbol">,</span><span class="normal"> video</span><span class="symbol">,</span><span class="normal"> slug</span><span class="symbol">,</span><span class="normal"> content_type</span><span class="symbol">,</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">error</span><span class="symbol">);</span>

<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">video</span><span class="symbol">);</span>
<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">file_info</span><span class="symbol">);</span>

<span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error </span><span class="symbol">!=</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">)</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="function"><a href="../glib/glib-Message-Logging.html#g-error">g_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"Error getting upload stream: %s"</span><span class="symbol">,</span><span class="normal"> error</span><span class="symbol">-&gt;</span><span class="normal">message</span><span class="symbol">);</span>
<span class="normal">    </span><span class="function"><a href="../glib/glib-Error-Reporting.html#g-error-free">g_error_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error</span><span class="symbol">);</span>
<span class="normal">    </span><span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">file_stream</span><span class="symbol">);</span>
<span class="normal">    </span><span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">service</span><span class="symbol">);</span>
<span class="normal">    </span><span class="keyword">return</span><span class="symbol">;</span>
<span class="cbracket">}</span>

<span class="comment">/* Upload the video. This is a blocking operation, and should normally be done asynchronously. */</span>
<span class="function">g_output_stream_splice</span><span class="normal"> </span><span class="symbol">(</span><span class="function">G_OUTPUT_STREAM</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">upload_stream</span><span class="symbol">),</span><span class="normal"> </span><span class="function">G_INPUT_STREAM</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">file_stream</span><span class="symbol">),</span>
<span class="normal">                        G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE </span><span class="symbol">|</span><span class="normal"> G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET</span><span class="symbol">,</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">error</span><span class="symbol">);</span>

<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">file_stream</span><span class="symbol">);</span>

<span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error </span><span class="symbol">!=</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">)</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="function"><a href="../glib/glib-Message-Logging.html#g-error">g_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"Error splicing streams: %s"</span><span class="symbol">,</span><span class="normal"> error</span><span class="symbol">-&gt;</span><span class="normal">message</span><span class="symbol">);</span>
<span class="normal">    </span><span class="function"><a href="../glib/glib-Error-Reporting.html#g-error-free">g_error_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error</span><span class="symbol">);</span>
<span class="normal">    </span><span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">upload_stream</span><span class="symbol">);</span>
<span class="normal">    </span><span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">service</span><span class="symbol">);</span>
<span class="normal">    </span><span class="keyword">return</span><span class="symbol">;</span>
<span class="cbracket">}</span>

<span class="comment">/* Finish off the upload by parsing the returned updated video entry */</span>
<span class="normal">uploaded_video </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDataYouTubeService.html#gdata-youtube-service-finish-video-upload">gdata_youtube_service_finish_video_upload</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">service</span><span class="symbol">,</span><span class="normal"> upload_stream</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">error</span><span class="symbol">);</span>

<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">upload_stream</span><span class="symbol">);</span>
<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">service</span><span class="symbol">);</span>

<span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error </span><span class="symbol">!=</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">)</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="function"><a href="../glib/glib-Message-Logging.html#g-error">g_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"Error uploading video: %s"</span><span class="symbol">,</span><span class="normal"> error</span><span class="symbol">-&gt;</span><span class="normal">message</span><span class="symbol">);</span>
<span class="normal">    </span><span class="function"><a href="../glib/glib-Error-Reporting.html#g-error-free">g_error_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error</span><span class="symbol">);</span>
<span class="normal">    </span><span class="keyword">return</span><span class="symbol">;</span>
<span class="cbracket">}</span>

<span class="comment">/* Do something with the uploaded video */</span>

<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">uploaded_video</span><span class="symbol">);</span></pre></td>
      </tr>
    </tbody>
  </table>
</div>

</div>
<br class="example-break"><div class="example">
<a name="id-1.5.2.2.10.7"></a><p class="title"><b>Example 13. Querying for Videos from a Standard Feed</b></p>
<div class="example-contents">
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
    <tbody>
      <tr>
        <td class="listing_lines" align="right"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27</pre></td>
        <td class="listing_code"><pre class="programlisting"><span class="usertype">GDataYouTubeService</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">service</span><span class="symbol">;</span>
<span class="usertype">GDataFeed</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">feed</span><span class="symbol">;</span>
<span class="usertype">GList</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">i</span><span class="symbol">;</span>
<span class="usertype">GError</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">error </span><span class="symbol">=</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>

<span class="comment">/* Create a service */</span>
<span class="normal">service </span><span class="symbol">=</span><span class="normal"> </span><span class="function">create_youtube_service</span><span class="normal"> </span><span class="symbol">();</span>

<span class="comment">/* Query for the top page of videos in the most popular feed */</span>
<span class="normal">feed </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDataYouTubeService.html#gdata-youtube-service-query-standard-feed">gdata_youtube_service_query_standard_feed</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">service</span><span class="symbol">,</span><span class="normal"> <a href="GDataYouTubeService.html#GDATA-YOUTUBE-MOST-POPULAR-FEED:CAPS">GDATA_YOUTUBE_MOST_POPULAR_FEED</a></span><span class="symbol">,</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">error</span><span class="symbol">);</span>

<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">service</span><span class="symbol">);</span>

<span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error </span><span class="symbol">!=</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">)</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="function"><a href="../glib/glib-Message-Logging.html#g-error">g_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"Error querying for most popular videos: %s"</span><span class="symbol">,</span><span class="normal"> error</span><span class="symbol">-&gt;</span><span class="normal">message</span><span class="symbol">);</span>
<span class="normal">    </span><span class="function"><a href="../glib/glib-Error-Reporting.html#g-error-free">g_error_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error</span><span class="symbol">);</span>
<span class="normal">    </span><span class="keyword">return</span><span class="symbol">;</span>
<span class="cbracket">}</span>

<span class="comment">/* Iterate through the videos */</span>
<span class="keyword">for</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">i </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDataFeed.html#gdata-feed-get-entries">gdata_feed_get_entries</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">feed</span><span class="symbol">);</span><span class="normal"> i </span><span class="symbol">!=</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span><span class="normal"> i </span><span class="symbol">=</span><span class="normal"> i</span><span class="symbol">-&gt;</span><span class="normal">next</span><span class="symbol">)</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="usertype">GDataYouTubeVideo</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">video </span><span class="symbol">=</span><span class="normal"> </span><span class="function">GDATA_YOUTUBE_VIDEO</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">i</span><span class="symbol">-&gt;</span><span class="normal">data</span><span class="symbol">);</span>

<span class="normal">    </span><span class="comment">/* Do something with the video, like insert it into the UI */</span>
<span class="cbracket">}</span>

<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">feed</span><span class="symbol">);</span></pre></td>
      </tr>
    </tbody>
  </table>
</div>

</div>
<br class="example-break"><div class="example">
<a name="id-1.5.2.2.10.8"></a><p class="title"><b>Example 14. Querying for Videos using Search Terms</b></p>
<div class="example-contents">
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
    <tbody>
      <tr>
        <td class="listing_lines" align="right"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33</pre></td>
        <td class="listing_code"><pre class="programlisting"><span class="usertype">GDataYouTubeService</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">service</span><span class="symbol">;</span>
<span class="usertype">GDataYouTubeQuery</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">query</span><span class="symbol">;</span>
<span class="usertype">GDataFeed</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">feed</span><span class="symbol">;</span>
<span class="usertype">GList</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">i</span><span class="symbol">;</span>
<span class="usertype">GError</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">error </span><span class="symbol">=</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span>

<span class="comment">/* Create a service */</span>
<span class="normal">service </span><span class="symbol">=</span><span class="normal"> </span><span class="function">create_youtube_service</span><span class="normal"> </span><span class="symbol">();</span>

<span class="comment">/* Build a query with the given search terms, also matching only videos which are CC-licensed */</span>
<span class="normal">query </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDataYouTubeQuery.html#gdata-youtube-query-new">gdata_youtube_query_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">my_space_separated_search_terms</span><span class="symbol">);</span>
<span class="function"><a href="GDataYouTubeQuery.html#gdata-youtube-query-set-license">gdata_youtube_query_set_license</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">query</span><span class="symbol">,</span><span class="normal"> <a href="GDataYouTubeVideo.html#GDATA-YOUTUBE-LICENSE-CC:CAPS">GDATA_YOUTUBE_LICENSE_CC</a></span><span class="symbol">);</span>

<span class="comment">/* Query for the videos matching the query parameters */</span>
<span class="normal">feed </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDataYouTubeService.html#gdata-youtube-service-query-videos">gdata_youtube_service_query_videos</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">service</span><span class="symbol">,</span><span class="normal"> query</span><span class="symbol">,</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">error</span><span class="symbol">);</span>

<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">query</span><span class="symbol">);</span>
<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">service</span><span class="symbol">);</span>

<span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error </span><span class="symbol">!=</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">)</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="function"><a href="../glib/glib-Message-Logging.html#g-error">g_error</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"Error querying for videos matching search terms ‘%s’: %s"</span><span class="symbol">,</span><span class="normal"> my_space_separated_search_terms</span><span class="symbol">,</span><span class="normal"> error</span><span class="symbol">-&gt;</span><span class="normal">message</span><span class="symbol">);</span>
<span class="normal">    </span><span class="function"><a href="../glib/glib-Error-Reporting.html#g-error-free">g_error_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">error</span><span class="symbol">);</span>
<span class="normal">    </span><span class="keyword">return</span><span class="symbol">;</span>
<span class="cbracket">}</span>

<span class="comment">/* Iterate through the videos */</span>
<span class="keyword">for</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">i </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="GDataFeed.html#gdata-feed-get-entries">gdata_feed_get_entries</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">feed</span><span class="symbol">);</span><span class="normal"> i </span><span class="symbol">!=</span><span class="normal"> <a href="../glib/glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">;</span><span class="normal"> i </span><span class="symbol">=</span><span class="normal"> i</span><span class="symbol">-&gt;</span><span class="normal">next</span><span class="symbol">)</span><span class="normal"> </span><span class="cbracket">{</span>
<span class="normal">    </span><span class="usertype">GDataYouTubeVideo</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">video </span><span class="symbol">=</span><span class="normal"> </span><span class="function">GDATA_YOUTUBE_VIDEO</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">i</span><span class="symbol">-&gt;</span><span class="normal">data</span><span class="symbol">);</span>

<span class="normal">    </span><span class="comment">/* Do something with the video, like insert it into the UI */</span>
<span class="cbracket">}</span>

<span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref">g_object_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">feed</span><span class="symbol">);</span></pre></td>
      </tr>
    </tbody>
  </table>
</div>

</div>
<br class="example-break">
</div>
<div class="refsect1">
<a name="GDataYouTubeService.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
<a name="gdata-youtube-service-new"></a><h3>gdata_youtube_service_new ()</h3>
<pre class="programlisting"><a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="returnvalue">GDataYouTubeService</span></a> *
gdata_youtube_service_new (<em class="parameter"><code>const <a href="../glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *developer_key</code></em>,
                           <em class="parameter"><code><a class="link" href="GDataAuthorizer.html" title="GDataAuthorizer"><span class="type">GDataAuthorizer</span></a> *authorizer</code></em>);</pre>
<p>Creates a new <a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> using the given <a class="link" href="GDataAuthorizer.html" title="GDataAuthorizer"><span class="type">GDataAuthorizer</span></a>. If <em class="parameter"><code>authorizer</code></em>
 is <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, all requests are made as an unauthenticated user.
The <em class="parameter"><code>developer_key</code></em>
 must be unique for your application, and as</p>
<a class="ulink" href="https://developers.google.com/youtube/registering_an_application" target="_top">registered with Google</a>.
<div class="refsect3">
<a name="gdata-youtube-service-new.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>developer_key</p></td>
<td class="parameter_description"><p>your application's developer API key</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>authorizer</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataAuthorizer.html" title="GDataAuthorizer"><span class="type">GDataAuthorizer</span></a> to authorize the service's requests, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gdata-youtube-service-new.returns"></a><h4>Returns</h4>
<p> a new <a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a>, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>; unref with <a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a></p>
</div>
<p class="since">Since: <a class="link" href="ix11.html#api-index-0.9.0">0.9.0</a></p>
</div>
<hr>
<div class="refsect2">
<a name="gdata-youtube-service-get-primary-authorization-domain"></a><h3>gdata_youtube_service_get_primary_authorization_domain ()</h3>
<pre class="programlisting"><a class="link" href="GDataAuthorizationDomain.html" title="GDataAuthorizationDomain"><span class="returnvalue">GDataAuthorizationDomain</span></a> *
gdata_youtube_service_get_primary_authorization_domain
                               (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>The primary <a class="link" href="GDataAuthorizationDomain.html" title="GDataAuthorizationDomain"><span class="type">GDataAuthorizationDomain</span></a> for interacting with YouTube. This will not normally need to be used, as it's used internally
by the <a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> methods. However, if using the plain <a class="link" href="GDataService.html" title="GDataService"><span class="type">GDataService</span></a> methods to implement custom queries or requests which libgdata
does not support natively, then this domain may be needed to authorize the requests.</p>
<p>The domain never changes, and is interned so that pointer comparison can be used to differentiate it from other authorization domains.</p>
<div class="refsect3">
<a name="gdata-youtube-service-get-primary-authorization-domain.returns"></a><h4>Returns</h4>
<p>the service's authorization domain. </p>
<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
</div>
<p class="since">Since: <a class="link" href="ix11.html#api-index-0.9.0">0.9.0</a></p>
</div>
<hr>
<div class="refsect2">
<a name="gdata-youtube-service-query-videos"></a><h3>gdata_youtube_service_query_videos ()</h3>
<pre class="programlisting"><a class="link" href="GDataFeed.html" title="GDataFeed"><span class="returnvalue">GDataFeed</span></a> *
gdata_youtube_service_query_videos (<em class="parameter"><code><a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> *self</code></em>,
                                    <em class="parameter"><code><a class="link" href="GDataQuery.html" title="GDataQuery"><span class="type">GDataQuery</span></a> *query</code></em>,
                                    <em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
                                    <em class="parameter"><code><a class="link" href="GDataService.html#GDataQueryProgressCallback" title="GDataQueryProgressCallback ()"><span class="type">GDataQueryProgressCallback</span></a> progress_callback</code></em>,
                                    <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> progress_user_data</code></em>,
                                    <em class="parameter"><code><a href="../glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>Queries the service for videos matching the parameters set on the <a class="link" href="GDataQuery.html" title="GDataQuery"><span class="type">GDataQuery</span></a>. This searches site-wide, and imposes no other restrictions or
parameters on the query.</p>
<p>Parameters and errors are as for <a class="link" href="GDataService.html#gdata-service-query" title="gdata_service_query ()"><code class="function">gdata_service_query()</code></a>.</p>
<div class="refsect3">
<a name="gdata-youtube-service-query-videos.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>self</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>query</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataQuery.html" title="GDataQuery"><span class="type">GDataQuery</span></a> with the query parameters, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>cancellable</p></td>
<td class="parameter_description"><p>optional <span class="type">GCancellable</span> object, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>progress_callback</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataService.html#GDataQueryProgressCallback" title="GDataQueryProgressCallback ()"><span class="type">GDataQueryProgressCallback</span></a> to call when an entry is loaded, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="The callback is valid only during the call to the method."><span class="acronym">scope call</span></acronym>][<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> progress_user_data]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>progress_user_data</p></td>
<td class="parameter_description"><p>data to pass to the <em class="parameter"><code>progress_callback</code></em>
function. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>error</p></td>
<td class="parameter_description"><p>a <a href="../glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gdata-youtube-service-query-videos.returns"></a><h4>Returns</h4>
<p>a <a class="link" href="GDataFeed.html" title="GDataFeed"><span class="type">GDataFeed</span></a> of query results, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>; unref with <a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gdata-youtube-service-query-videos-async"></a><h3>gdata_youtube_service_query_videos_async ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gdata_youtube_service_query_videos_async
                               (<em class="parameter"><code><a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> *self</code></em>,
                                <em class="parameter"><code><a class="link" href="GDataQuery.html" title="GDataQuery"><span class="type">GDataQuery</span></a> *query</code></em>,
                                <em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
                                <em class="parameter"><code><a class="link" href="GDataService.html#GDataQueryProgressCallback" title="GDataQueryProgressCallback ()"><span class="type">GDataQueryProgressCallback</span></a> progress_callback</code></em>,
                                <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> progress_user_data</code></em>,
                                <em class="parameter"><code><a href="../glib/glib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> destroy_progress_user_data</code></em>,
                                <em class="parameter"><code><span class="type">GAsyncReadyCallback</span> callback</code></em>,
                                <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
<p>Queries the service for videos matching the parameters set on the <a class="link" href="GDataQuery.html" title="GDataQuery"><span class="type">GDataQuery</span></a>. This searches site-wide, and imposes no other restrictions or
parameters on the query. <em class="parameter"><code>self</code></em>
 and <em class="parameter"><code>query</code></em>
 are both reffed when this function is called, so can safely be freed after this function returns.</p>
<p>For more details, see <a class="link" href="GDataYouTubeService.html#gdata-youtube-service-query-videos" title="gdata_youtube_service_query_videos ()"><code class="function">gdata_youtube_service_query_videos()</code></a>, which is the synchronous version of this function.</p>
<p>When the operation is finished, <em class="parameter"><code>callback</code></em>
 will be called. You can then call <a class="link" href="GDataService.html#gdata-service-query-finish" title="gdata_service_query_finish ()"><code class="function">gdata_service_query_finish()</code></a>
to get the results of the operation.</p>
<div class="refsect3">
<a name="gdata-youtube-service-query-videos-async.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>self</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataService.html" title="GDataService"><span class="type">GDataService</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>query</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataQuery.html" title="GDataQuery"><span class="type">GDataQuery</span></a> with the query parameters, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>cancellable</p></td>
<td class="parameter_description"><p>optional <span class="type">GCancellable</span> object, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>progress_callback</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataService.html#GDataQueryProgressCallback" title="GDataQueryProgressCallback ()"><span class="type">GDataQueryProgressCallback</span></a> to call when an entry is loaded, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> progress_user_data]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>progress_user_data</p></td>
<td class="parameter_description"><p>data to pass to the <em class="parameter"><code>progress_callback</code></em>
function. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>destroy_progress_user_data</p></td>
<td class="parameter_description"><p>the function to call when <em class="parameter"><code>progress_callback</code></em>
will not be called any more, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. This function will be
called with <em class="parameter"><code>progress_user_data</code></em>
as a parameter and can be used to free any memory allocated for it. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>callback</p></td>
<td class="parameter_description"><p>a <span class="type">GAsyncReadyCallback</span> to call when authentication is finished</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>user_data</p></td>
<td class="parameter_description"><p>data to pass to the <em class="parameter"><code>callback</code></em>
function. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix12.html#api-index-0.9.1">0.9.1</a></p>
</div>
<hr>
<div class="refsect2">
<a name="gdata-youtube-service-query-related"></a><h3>gdata_youtube_service_query_related ()</h3>
<pre class="programlisting"><a class="link" href="GDataFeed.html" title="GDataFeed"><span class="returnvalue">GDataFeed</span></a> *
gdata_youtube_service_query_related (<em class="parameter"><code><a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> *self</code></em>,
                                     <em class="parameter"><code><a class="link" href="GDataYouTubeVideo.html" title="GDataYouTubeVideo"><span class="type">GDataYouTubeVideo</span></a> *video</code></em>,
                                     <em class="parameter"><code><a class="link" href="GDataQuery.html" title="GDataQuery"><span class="type">GDataQuery</span></a> *query</code></em>,
                                     <em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
                                     <em class="parameter"><code><a class="link" href="GDataService.html#GDataQueryProgressCallback" title="GDataQueryProgressCallback ()"><span class="type">GDataQueryProgressCallback</span></a> progress_callback</code></em>,
                                     <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> progress_user_data</code></em>,
                                     <em class="parameter"><code><a href="../glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>Queries the service for videos related to <em class="parameter"><code>video</code></em>
. The algorithm determining which videos are related is on the server side.</p>
<p>Parameters and other errors are as for <a class="link" href="GDataService.html#gdata-service-query" title="gdata_service_query ()"><code class="function">gdata_service_query()</code></a>.</p>
<div class="refsect3">
<a name="gdata-youtube-service-query-related.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>self</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>video</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataYouTubeVideo.html" title="GDataYouTubeVideo"><span class="type">GDataYouTubeVideo</span></a> for which to find related videos</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>query</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataQuery.html" title="GDataQuery"><span class="type">GDataQuery</span></a> with the query parameters, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>cancellable</p></td>
<td class="parameter_description"><p>optional <span class="type">GCancellable</span> object, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>progress_callback</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataService.html#GDataQueryProgressCallback" title="GDataQueryProgressCallback ()"><span class="type">GDataQueryProgressCallback</span></a> to call when an entry is loaded, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="The callback is valid only during the call to the method."><span class="acronym">scope call</span></acronym>][<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> progress_user_data]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>progress_user_data</p></td>
<td class="parameter_description"><p>data to pass to the <em class="parameter"><code>progress_callback</code></em>
function. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>error</p></td>
<td class="parameter_description"><p>a <a href="../glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gdata-youtube-service-query-related.returns"></a><h4>Returns</h4>
<p>a <a class="link" href="GDataFeed.html" title="GDataFeed"><span class="type">GDataFeed</span></a> of query results; unref with <a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gdata-youtube-service-query-related-async"></a><h3>gdata_youtube_service_query_related_async ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gdata_youtube_service_query_related_async
                               (<em class="parameter"><code><a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> *self</code></em>,
                                <em class="parameter"><code><a class="link" href="GDataYouTubeVideo.html" title="GDataYouTubeVideo"><span class="type">GDataYouTubeVideo</span></a> *video</code></em>,
                                <em class="parameter"><code><a class="link" href="GDataQuery.html" title="GDataQuery"><span class="type">GDataQuery</span></a> *query</code></em>,
                                <em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
                                <em class="parameter"><code><a class="link" href="GDataService.html#GDataQueryProgressCallback" title="GDataQueryProgressCallback ()"><span class="type">GDataQueryProgressCallback</span></a> progress_callback</code></em>,
                                <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> progress_user_data</code></em>,
                                <em class="parameter"><code><a href="../glib/glib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> destroy_progress_user_data</code></em>,
                                <em class="parameter"><code><span class="type">GAsyncReadyCallback</span> callback</code></em>,
                                <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
<p>Queries the service for videos related to <em class="parameter"><code>video</code></em>
. The algorithm determining which videos are related is on the server side.
<em class="parameter"><code>self</code></em>
 and <em class="parameter"><code>query</code></em>
 are both reffed when this function is called, so can safely be freed after this function returns.</p>
<p>For more details, see <a class="link" href="GDataYouTubeService.html#gdata-youtube-service-query-related" title="gdata_youtube_service_query_related ()"><code class="function">gdata_youtube_service_query_related()</code></a>, which is the synchronous version of this function.</p>
<p>When the operation is finished, <em class="parameter"><code>callback</code></em>
 will be called. You can then call <a class="link" href="GDataService.html#gdata-service-query-finish" title="gdata_service_query_finish ()"><code class="function">gdata_service_query_finish()</code></a>
to get the results of the operation.</p>
<div class="refsect3">
<a name="gdata-youtube-service-query-related-async.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>self</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataService.html" title="GDataService"><span class="type">GDataService</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>video</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataYouTubeVideo.html" title="GDataYouTubeVideo"><span class="type">GDataYouTubeVideo</span></a> for which to find related videos</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>query</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataQuery.html" title="GDataQuery"><span class="type">GDataQuery</span></a> with the query parameters, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>cancellable</p></td>
<td class="parameter_description"><p>optional <span class="type">GCancellable</span> object, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>progress_callback</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataService.html#GDataQueryProgressCallback" title="GDataQueryProgressCallback ()"><span class="type">GDataQueryProgressCallback</span></a> to call when an entry is loaded, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> progress_user_data]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>progress_user_data</p></td>
<td class="parameter_description"><p>data to pass to the <em class="parameter"><code>progress_callback</code></em>
function. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>destroy_progress_user_data</p></td>
<td class="parameter_description"><p>the function to call when <em class="parameter"><code>progress_callback</code></em>
will not be called any more, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. This function will be
called with <em class="parameter"><code>progress_user_data</code></em>
as a parameter and can be used to free any memory allocated for it. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>callback</p></td>
<td class="parameter_description"><p>a <span class="type">GAsyncReadyCallback</span> to call when authentication is finished</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>user_data</p></td>
<td class="parameter_description"><p>data to pass to the <em class="parameter"><code>callback</code></em>
function. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix12.html#api-index-0.9.1">0.9.1</a></p>
</div>
<hr>
<div class="refsect2">
<a name="gdata-youtube-service-query-standard-feed"></a><h3>gdata_youtube_service_query_standard_feed ()</h3>
<pre class="programlisting"><a class="link" href="GDataFeed.html" title="GDataFeed"><span class="returnvalue">GDataFeed</span></a> *
gdata_youtube_service_query_standard_feed
                               (<em class="parameter"><code><a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> *self</code></em>,
                                <em class="parameter"><code><a class="link" href="GDataYouTubeService.html#GDataYouTubeStandardFeedType" title="enum GDataYouTubeStandardFeedType"><span class="type">GDataYouTubeStandardFeedType</span></a> feed_type</code></em>,
                                <em class="parameter"><code><a class="link" href="GDataQuery.html" title="GDataQuery"><span class="type">GDataQuery</span></a> *query</code></em>,
                                <em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
                                <em class="parameter"><code><a class="link" href="GDataService.html#GDataQueryProgressCallback" title="GDataQueryProgressCallback ()"><span class="type">GDataQueryProgressCallback</span></a> progress_callback</code></em>,
                                <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> progress_user_data</code></em>,
                                <em class="parameter"><code><a href="../glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>Queries the service's standard <em class="parameter"><code>feed_type</code></em>
 feed to build a <a class="link" href="GDataFeed.html" title="GDataFeed"><span class="type">GDataFeed</span></a>.</p>
<p>Note that with the port from v2 to v3 of the YouTube API in libgdata
0.17.0, all feed types except <a class="link" href="GDataYouTubeService.html#GDATA-YOUTUBE-MOST-POPULAR-FEED:CAPS"><code class="literal">GDATA_YOUTUBE_MOST_POPULAR_FEED</code></a> have been
deprecated. Other feed types will now transparently return
<a class="link" href="GDataYouTubeService.html#GDATA-YOUTUBE-MOST-POPULAR-FEED:CAPS"><code class="literal">GDATA_YOUTUBE_MOST_POPULAR_FEED</code></a>, limited to the past 24 hours.</p>
<p>Parameters and errors are as for <a class="link" href="GDataService.html#gdata-service-query" title="gdata_service_query ()"><code class="function">gdata_service_query()</code></a>.</p>
<div class="refsect3">
<a name="gdata-youtube-service-query-standard-feed.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>self</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>feed_type</p></td>
<td class="parameter_description"><p>the feed type to query, from <a class="link" href="GDataYouTubeService.html#GDataYouTubeStandardFeedType" title="enum GDataYouTubeStandardFeedType"><span class="type">GDataYouTubeStandardFeedType</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>query</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataQuery.html" title="GDataQuery"><span class="type">GDataQuery</span></a> with the query parameters, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>cancellable</p></td>
<td class="parameter_description"><p>optional <span class="type">GCancellable</span> object, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>progress_callback</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataService.html#GDataQueryProgressCallback" title="GDataQueryProgressCallback ()"><span class="type">GDataQueryProgressCallback</span></a> to call when an entry is loaded, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="The callback is valid only during the call to the method."><span class="acronym">scope call</span></acronym>][<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> progress_user_data]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>progress_user_data</p></td>
<td class="parameter_description"><p>data to pass to the <em class="parameter"><code>progress_callback</code></em>
function. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>error</p></td>
<td class="parameter_description"><p>a <a href="../glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gdata-youtube-service-query-standard-feed.returns"></a><h4>Returns</h4>
<p>a <a class="link" href="GDataFeed.html" title="GDataFeed"><span class="type">GDataFeed</span></a> of query results, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>; unref with <a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
</div>
<hr>
<div class="refsect2">
<a name="gdata-youtube-service-query-standard-feed-async"></a><h3>gdata_youtube_service_query_standard_feed_async ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gdata_youtube_service_query_standard_feed_async
                               (<em class="parameter"><code><a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> *self</code></em>,
                                <em class="parameter"><code><a class="link" href="GDataYouTubeService.html#GDataYouTubeStandardFeedType" title="enum GDataYouTubeStandardFeedType"><span class="type">GDataYouTubeStandardFeedType</span></a> feed_type</code></em>,
                                <em class="parameter"><code><a class="link" href="GDataQuery.html" title="GDataQuery"><span class="type">GDataQuery</span></a> *query</code></em>,
                                <em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
                                <em class="parameter"><code><a class="link" href="GDataService.html#GDataQueryProgressCallback" title="GDataQueryProgressCallback ()"><span class="type">GDataQueryProgressCallback</span></a> progress_callback</code></em>,
                                <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> progress_user_data</code></em>,
                                <em class="parameter"><code><a href="../glib/glib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> destroy_progress_user_data</code></em>,
                                <em class="parameter"><code><span class="type">GAsyncReadyCallback</span> callback</code></em>,
                                <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
<p>Queries the service's standard <em class="parameter"><code>feed_type</code></em>
 feed to build a <a class="link" href="GDataFeed.html" title="GDataFeed"><span class="type">GDataFeed</span></a>. <em class="parameter"><code>self</code></em>
 and
<em class="parameter"><code>query</code></em>
 are both reffed when this function is called, so can safely be freed after this function returns.</p>
<p>For more details, see <a class="link" href="GDataYouTubeService.html#gdata-youtube-service-query-standard-feed" title="gdata_youtube_service_query_standard_feed ()"><code class="function">gdata_youtube_service_query_standard_feed()</code></a>, which is the synchronous version of this function.</p>
<p>When the operation is finished, <em class="parameter"><code>callback</code></em>
 will be called. You can then call <a class="link" href="GDataService.html#gdata-service-query-finish" title="gdata_service_query_finish ()"><code class="function">gdata_service_query_finish()</code></a>
to get the results of the operation.</p>
<div class="refsect3">
<a name="gdata-youtube-service-query-standard-feed-async.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>self</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataService.html" title="GDataService"><span class="type">GDataService</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>feed_type</p></td>
<td class="parameter_description"><p>the feed type to query, from <a class="link" href="GDataYouTubeService.html#GDataYouTubeStandardFeedType" title="enum GDataYouTubeStandardFeedType"><span class="type">GDataYouTubeStandardFeedType</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>query</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataQuery.html" title="GDataQuery"><span class="type">GDataQuery</span></a> with the query parameters, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>cancellable</p></td>
<td class="parameter_description"><p>optional <span class="type">GCancellable</span> object, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>progress_callback</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataService.html#GDataQueryProgressCallback" title="GDataQueryProgressCallback ()"><span class="type">GDataQueryProgressCallback</span></a> to call when an entry is loaded, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym> progress_user_data]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>progress_user_data</p></td>
<td class="parameter_description"><p>data to pass to the <em class="parameter"><code>progress_callback</code></em>
function. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>destroy_progress_user_data</p></td>
<td class="parameter_description"><p>the function to call when <em class="parameter"><code>progress_callback</code></em>
will not be called any more, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. This function will be
called with <em class="parameter"><code>progress_user_data</code></em>
as a parameter and can be used to free any memory allocated for it. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>callback</p></td>
<td class="parameter_description"><p>a <span class="type">GAsyncReadyCallback</span> to call when authentication is finished</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>user_data</p></td>
<td class="parameter_description"><p>data to pass to the <em class="parameter"><code>callback</code></em>
function. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix12.html#api-index-0.9.1">0.9.1</a></p>
</div>
<hr>
<div class="refsect2">
<a name="gdata-youtube-service-upload-video"></a><h3>gdata_youtube_service_upload_video ()</h3>
<pre class="programlisting"><a class="link" href="GDataUploadStream.html" title="GDataUploadStream"><span class="returnvalue">GDataUploadStream</span></a> *
gdata_youtube_service_upload_video (<em class="parameter"><code><a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> *self</code></em>,
                                    <em class="parameter"><code><a class="link" href="GDataYouTubeVideo.html" title="GDataYouTubeVideo"><span class="type">GDataYouTubeVideo</span></a> *video</code></em>,
                                    <em class="parameter"><code>const <a href="../glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *slug</code></em>,
                                    <em class="parameter"><code>const <a href="../glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *content_type</code></em>,
                                    <em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
                                    <em class="parameter"><code><a href="../glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>Uploads a video to YouTube, using the properties from <em class="parameter"><code>video</code></em>
 and the file data written to the resulting <a class="link" href="GDataUploadStream.html" title="GDataUploadStream"><span class="type">GDataUploadStream</span></a>.</p>
<p>If <em class="parameter"><code>video</code></em>
 has already been inserted, a <a class="link" href="GDataService.html#GDATA-SERVICE-ERROR-ENTRY-ALREADY-INSERTED:CAPS"><code class="literal">GDATA_SERVICE_ERROR_ENTRY_ALREADY_INSERTED</code></a> error will be returned. If no user is authenticated
with the service, <a class="link" href="GDataService.html#GDATA-SERVICE-ERROR-AUTHENTICATION-REQUIRED:CAPS"><code class="literal">GDATA_SERVICE_ERROR_AUTHENTICATION_REQUIRED</code></a> will be returned.</p>
<p>The stream returned by this function should be written to using the standard <span class="type">GOutputStream</span> methods, asychronously or synchronously. Once the stream
is closed (using <code class="function">g_output_stream_close()</code>), <a class="link" href="GDataYouTubeService.html#gdata-youtube-service-finish-video-upload" title="gdata_youtube_service_finish_video_upload ()"><code class="function">gdata_youtube_service_finish_video_upload()</code></a> should be called on it to parse and return the updated
<a class="link" href="GDataYouTubeVideo.html" title="GDataYouTubeVideo"><span class="type">GDataYouTubeVideo</span></a> for the uploaded video. This must be done, as <em class="parameter"><code>video</code></em>
 isn't updated in-place.</p>
<p>In order to cancel the upload, a <span class="type">GCancellable</span> passed in to <em class="parameter"><code>cancellable</code></em>
 must be cancelled using <code class="function">g_cancellable_cancel()</code>. Cancelling the individual
<span class="type">GOutputStream</span> operations on the <a class="link" href="GDataUploadStream.html" title="GDataUploadStream"><span class="type">GDataUploadStream</span></a> will not cancel the entire upload; merely the write or close operation in question. See the
<a class="link" href="GDataUploadStream.html#GDataUploadStream--cancellable" title="The “cancellable” property"><span class="type">“cancellable”</span></a> for more details.</p>
<p>Any upload errors will be thrown by the stream methods, and may come from the <a class="link" href="GDataService.html#GDataServiceError" title="enum GDataServiceError"><span class="type">GDataServiceError</span></a> domain.</p>
<div class="refsect3">
<a name="gdata-youtube-service-upload-video.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>self</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>video</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataYouTubeVideo.html" title="GDataYouTubeVideo"><span class="type">GDataYouTubeVideo</span></a> to insert</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>slug</p></td>
<td class="parameter_description"><p>the filename to give to the uploaded file</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>content_type</p></td>
<td class="parameter_description"><p>the content type of the uploaded data</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>cancellable</p></td>
<td class="parameter_description"><p>a <span class="type">GCancellable</span> for the entire upload stream, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>error</p></td>
<td class="parameter_description"><p>a <a href="../glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gdata-youtube-service-upload-video.returns"></a><h4>Returns</h4>
<p>a <a class="link" href="GDataUploadStream.html" title="GDataUploadStream"><span class="type">GDataUploadStream</span></a> to write the video data to, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>; unref with <a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
<p class="since">Since: <a class="link" href="ix10.html#api-index-0.8.0">0.8.0</a></p>
</div>
<hr>
<div class="refsect2">
<a name="gdata-youtube-service-finish-video-upload"></a><h3>gdata_youtube_service_finish_video_upload ()</h3>
<pre class="programlisting"><a class="link" href="GDataYouTubeVideo.html" title="GDataYouTubeVideo"><span class="returnvalue">GDataYouTubeVideo</span></a> *
gdata_youtube_service_finish_video_upload
                               (<em class="parameter"><code><a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> *self</code></em>,
                                <em class="parameter"><code><a class="link" href="GDataUploadStream.html" title="GDataUploadStream"><span class="type">GDataUploadStream</span></a> *upload_stream</code></em>,
                                <em class="parameter"><code><a href="../glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>Finish off a video upload operation started by <a class="link" href="GDataYouTubeService.html#gdata-youtube-service-upload-video" title="gdata_youtube_service_upload_video ()"><code class="function">gdata_youtube_service_upload_video()</code></a>, parsing the result and returning the new <a class="link" href="GDataYouTubeVideo.html" title="GDataYouTubeVideo"><span class="type">GDataYouTubeVideo</span></a>.</p>
<p>If an error occurred during the upload operation, it will have been returned during the operation (e.g. by <code class="function">g_output_stream_splice()</code> or one
of the other stream methods). In such a case, <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> will be returned but <em class="parameter"><code>error</code></em>
 will remain unset. <em class="parameter"><code>error</code></em>
 is only set in the case that the server
indicates that the operation was successful, but an error is encountered in parsing the result sent by the server.</p>
<div class="refsect3">
<a name="gdata-youtube-service-finish-video-upload.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>self</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>upload_stream</p></td>
<td class="parameter_description"><p>the <a class="link" href="GDataUploadStream.html" title="GDataUploadStream"><span class="type">GDataUploadStream</span></a> from the operation</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>error</p></td>
<td class="parameter_description"><p>a <a href="../glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gdata-youtube-service-finish-video-upload.returns"></a><h4>Returns</h4>
<p>the new <a class="link" href="GDataYouTubeVideo.html" title="GDataYouTubeVideo"><span class="type">GDataYouTubeVideo</span></a>, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>; unref with <a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
<p class="since">Since: <a class="link" href="ix10.html#api-index-0.8.0">0.8.0</a></p>
</div>
<hr>
<div class="refsect2">
<a name="gdata-youtube-service-get-categories"></a><h3>gdata_youtube_service_get_categories ()</h3>
<pre class="programlisting"><a class="link" href="GDataAPPCategories.html" title="GDataAPPCategories"><span class="returnvalue">GDataAPPCategories</span></a> *
gdata_youtube_service_get_categories (<em class="parameter"><code><a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> *self</code></em>,
                                      <em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
                                      <em class="parameter"><code><a href="../glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>Gets a list of the categories currently in use on YouTube. The returned <a class="link" href="GDataAPPCategories.html" title="GDataAPPCategories"><span class="type">GDataAPPCategories</span></a> contains a list of <a class="link" href="GDataYouTubeCategory.html" title="GDataYouTubeCategory"><span class="type">GDataYouTubeCategory</span></a>s which
enumerate the current YouTube categories.</p>
<p>The category labels (<a class="link" href="GDataCategory.html#GDataCategory--label" title="The “label” property"><span class="type">“label”</span></a>) are localised based on the value of <a class="link" href="GDataService.html#GDataService--locale" title="The “locale” property"><span class="type">“locale”</span></a>.</p>
<div class="refsect3">
<a name="gdata-youtube-service-get-categories.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>self</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>cancellable</p></td>
<td class="parameter_description"><p>a <span class="type">GCancellable</span>, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>error</p></td>
<td class="parameter_description"><p>a <a href="../glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gdata-youtube-service-get-categories.returns"></a><h4>Returns</h4>
<p>a <a class="link" href="GDataAPPCategories.html" title="GDataAPPCategories"><span class="type">GDataAPPCategories</span></a>, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>; unref with <a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
<p class="since">Since: <a class="link" href="ix09.html#api-index-0.7.0">0.7.0</a></p>
</div>
<hr>
<div class="refsect2">
<a name="gdata-youtube-service-get-categories-async"></a><h3>gdata_youtube_service_get_categories_async ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gdata_youtube_service_get_categories_async
                               (<em class="parameter"><code><a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> *self</code></em>,
                                <em class="parameter"><code><span class="type">GCancellable</span> *cancellable</code></em>,
                                <em class="parameter"><code><span class="type">GAsyncReadyCallback</span> callback</code></em>,
                                <em class="parameter"><code><a href="../glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
<p>Gets a list of the categories currently in use on YouTube. <em class="parameter"><code>self</code></em>
 is reffed when this function is called, so can safely be unreffed after this
function returns.</p>
<p>For more details, see <a class="link" href="GDataYouTubeService.html#gdata-youtube-service-get-categories" title="gdata_youtube_service_get_categories ()"><code class="function">gdata_youtube_service_get_categories()</code></a>, which is the synchronous version of this function.</p>
<p>When the operation is finished, <em class="parameter"><code>callback</code></em>
 will be called. You can then call <a class="link" href="GDataYouTubeService.html#gdata-youtube-service-get-categories-finish" title="gdata_youtube_service_get_categories_finish ()"><code class="function">gdata_youtube_service_get_categories_finish()</code></a> to get the results of the
operation.</p>
<div class="refsect3">
<a name="gdata-youtube-service-get-categories-async.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>self</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>cancellable</p></td>
<td class="parameter_description"><p>optional <span class="type">GCancellable</span> object, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
</tr>
<tr>
<td class="parameter_name"><p>callback</p></td>
<td class="parameter_description"><p>a <span class="type">GAsyncReadyCallback</span> to call when the request is finished</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>user_data</p></td>
<td class="parameter_description"><p>data to pass to the <em class="parameter"><code>callback</code></em>
function. </p></td>
<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
</tr>
</tbody>
</table></div>
</div>
<p class="since">Since: <a class="link" href="ix09.html#api-index-0.7.0">0.7.0</a></p>
</div>
<hr>
<div class="refsect2">
<a name="gdata-youtube-service-get-categories-finish"></a><h3>gdata_youtube_service_get_categories_finish ()</h3>
<pre class="programlisting"><a class="link" href="GDataAPPCategories.html" title="GDataAPPCategories"><span class="returnvalue">GDataAPPCategories</span></a> *
gdata_youtube_service_get_categories_finish
                               (<em class="parameter"><code><a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> *self</code></em>,
                                <em class="parameter"><code><span class="type">GAsyncResult</span> *async_result</code></em>,
                                <em class="parameter"><code><a href="../glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
<p>Finishes an asynchronous request for a list of categories on YouTube, as started with <a class="link" href="GDataYouTubeService.html#gdata-youtube-service-get-categories-async" title="gdata_youtube_service_get_categories_async ()"><code class="function">gdata_youtube_service_get_categories_async()</code></a>.</p>
<div class="refsect3">
<a name="gdata-youtube-service-get-categories-finish.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>self</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>async_result</p></td>
<td class="parameter_description"><p>a <span class="type">GAsyncResult</span></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>error</p></td>
<td class="parameter_description"><p>a <a href="../glib/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gdata-youtube-service-get-categories-finish.returns"></a><h4>Returns</h4>
<p>a <a class="link" href="GDataAPPCategories.html" title="GDataAPPCategories"><span class="type">GDataAPPCategories</span></a>, or <a href="../glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>; unref with <a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. </p>
<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
</div>
<p class="since">Since: <a class="link" href="ix09.html#api-index-0.7.0">0.7.0</a></p>
</div>
<hr>
<div class="refsect2">
<a name="gdata-youtube-service-get-developer-key"></a><h3>gdata_youtube_service_get_developer_key ()</h3>
<pre class="programlisting">const <a href="../glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gdata_youtube_service_get_developer_key
                               (<em class="parameter"><code><a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> *self</code></em>);</pre>
<p>Gets the <a class="link" href="GDataYouTubeService.html#GDataYouTubeService--developer-key" title="The “developer-key” property"><span class="type">“developer-key”</span></a> property from the <a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a>.</p>
<div class="refsect3">
<a name="gdata-youtube-service-get-developer-key.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>self</p></td>
<td class="parameter_description"><p>a <a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="gdata-youtube-service-get-developer-key.returns"></a><h4>Returns</h4>
<p> the developer key property</p>
</div>
</div>
</div>
<div class="refsect1">
<a name="GDataYouTubeService.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="GDataYouTubeService-struct"></a><h3>GDataYouTubeService</h3>
<pre class="programlisting">typedef struct _GDataYouTubeService GDataYouTubeService;</pre>
<p>All the fields in the <a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> structure are private and should never be accessed directly.</p>
</div>
<hr>
<div class="refsect2">
<a name="GDataYouTubeServiceClass"></a><h3>GDataYouTubeServiceClass</h3>
<pre class="programlisting">typedef struct {
} GDataYouTubeServiceClass;
</pre>
<p>All the fields in the <a class="link" href="GDataYouTubeService.html#GDataYouTubeServiceClass" title="GDataYouTubeServiceClass"><span class="type">GDataYouTubeServiceClass</span></a> structure are private and should never be accessed directly.</p>
</div>
<hr>
<div class="refsect2">
<a name="GDataYouTubeServiceError"></a><h3>enum GDataYouTubeServiceError</h3>
<p>Error codes for <a class="link" href="GDataYouTubeService.html" title="GDataYouTubeService"><span class="type">GDataYouTubeService</span></a> operations.</p>
<div class="refsect3">
<a name="GDataYouTubeServiceError.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="300px" class="enum_members_name">
<col class="enum_members_description">
<col width="200px" class="enum_members_annotations">
</colgroup>
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GDATA-YOUTUBE-SERVICE-ERROR-API-QUOTA-EXCEEDED:CAPS"></a>GDATA_YOUTUBE_SERVICE_ERROR_API_QUOTA_EXCEEDED</p></td>
<td class="enum_member_description">
<p>the API request quota for this developer account has been exceeded</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GDATA-YOUTUBE-SERVICE-ERROR-ENTRY-QUOTA-EXCEEDED:CAPS"></a>GDATA_YOUTUBE_SERVICE_ERROR_ENTRY_QUOTA_EXCEEDED</p></td>
<td class="enum_member_description">
<p>the entry (e.g. video) quota for this user account has been exceeded</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GDATA-YOUTUBE-SERVICE-ERROR-CHANNEL-REQUIRED:CAPS"></a>GDATA_YOUTUBE_SERVICE_ERROR_CHANNEL_REQUIRED</p></td>
<td class="enum_member_description">
<p>the currently authenticated user doesn't have a YouTube channel, but the current action requires one;
if this error is received, inform the user that they need a YouTube channel, and provide a link to</p>
<a class="ulink" href="https://www.youtube.com/create_channel" target="_top">https://www.youtube.com/create_channel</a>
</td>
<td class="enum_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="GDataYouTubeStandardFeedType"></a><h3>enum GDataYouTubeStandardFeedType</h3>
<p>Standard feed types for standard feed queries with
<a class="link" href="GDataYouTubeService.html#gdata-youtube-service-query-standard-feed" title="gdata_youtube_service_query_standard_feed ()"><code class="function">gdata_youtube_service_query_standard_feed()</code></a>. For more information, see the</p>
<a class="ulink" href="https://developers.google.com/youtube/2.0/developers_guide_protocol_video_feeds#Standard_feeds" target="_top">online
documentation</a>.
<div class="refsect3">
<a name="GDataYouTubeStandardFeedType.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="300px" class="enum_members_name">
<col class="enum_members_description">
<col width="200px" class="enum_members_annotations">
</colgroup>
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GDATA-YOUTUBE-TOP-RATED-FEED:CAPS"></a>GDATA_YOUTUBE_TOP_RATED_FEED</p></td>
<td class="enum_member_description">
<p>This feed contains the most highly rated
  YouTube videos. Deprecated: 0.17.0: Google no longer supports this feed
  type, and it will return results equivalent to
  <a class="link" href="GDataYouTubeService.html#GDATA-YOUTUBE-MOST-POPULAR-FEED:CAPS"><code class="literal">GDATA_YOUTUBE_MOST_POPULAR_FEED</code></a>.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GDATA-YOUTUBE-TOP-FAVORITES-FEED:CAPS"></a>GDATA_YOUTUBE_TOP_FAVORITES_FEED</p></td>
<td class="enum_member_description">
<p>This feed contains videos most frequently
  flagged as favorite videos. Deprecated: 0.17.0: Google no longer
  supports this feed type, and it will return results equivalent to
  <a class="link" href="GDataYouTubeService.html#GDATA-YOUTUBE-MOST-POPULAR-FEED:CAPS"><code class="literal">GDATA_YOUTUBE_MOST_POPULAR_FEED</code></a>.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GDATA-YOUTUBE-MOST-VIEWED-FEED:CAPS"></a>GDATA_YOUTUBE_MOST_VIEWED_FEED</p></td>
<td class="enum_member_description">
<p>This feed contains the most frequently
  watched YouTube videos. Deprecated: 0.17.0: Google no longer supports
  this feed type, and it will return results equivalent to
  <a class="link" href="GDataYouTubeService.html#GDATA-YOUTUBE-MOST-POPULAR-FEED:CAPS"><code class="literal">GDATA_YOUTUBE_MOST_POPULAR_FEED</code></a>.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GDATA-YOUTUBE-MOST-POPULAR-FEED:CAPS"></a>GDATA_YOUTUBE_MOST_POPULAR_FEED</p></td>
<td class="enum_member_description">
<p>This feed contains the most popular YouTube
  videos, selected using an algorithm that combines many different signals to
  determine overall popularity. As of version 0.17.0, this is the only
  supported feed type.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GDATA-YOUTUBE-MOST-RECENT-FEED:CAPS"></a>GDATA_YOUTUBE_MOST_RECENT_FEED</p></td>
<td class="enum_member_description">
<p>This feed contains the videos most recently
  submitted to YouTube. Deprecated: 0.17.0: Google no longer supports
  this feed type, and it will return results equivalent to
  <a class="link" href="GDataYouTubeService.html#GDATA-YOUTUBE-MOST-POPULAR-FEED:CAPS"><code class="literal">GDATA_YOUTUBE_MOST_POPULAR_FEED</code></a>.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GDATA-YOUTUBE-MOST-DISCUSSED-FEED:CAPS"></a>GDATA_YOUTUBE_MOST_DISCUSSED_FEED</p></td>
<td class="enum_member_description">
<p>This feed contains the YouTube videos
  that have received the most comments. Deprecated: 0.17.0: Google no
  longer supports this feed type, and it will return results equivalent to
  <a class="link" href="GDataYouTubeService.html#GDATA-YOUTUBE-MOST-POPULAR-FEED:CAPS"><code class="literal">GDATA_YOUTUBE_MOST_POPULAR_FEED</code></a>.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GDATA-YOUTUBE-MOST-LINKED-FEED:CAPS"></a>GDATA_YOUTUBE_MOST_LINKED_FEED</p></td>
<td class="enum_member_description">
<p>This feed contains the YouTube videos that
  receive the most links from other websites. Deprecated: 0.17.0: Google
  no longer supports this feed type, and it will return results equivalent to
  <a class="link" href="GDataYouTubeService.html#GDATA-YOUTUBE-MOST-POPULAR-FEED:CAPS"><code class="literal">GDATA_YOUTUBE_MOST_POPULAR_FEED</code></a>.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GDATA-YOUTUBE-MOST-RESPONDED-FEED:CAPS"></a>GDATA_YOUTUBE_MOST_RESPONDED_FEED</p></td>
<td class="enum_member_description">
<p>This feed contains YouTube videos that
  receive the most video responses. Deprecated: 0.17.0: Google no longer
  supports this feed type, and it will return results equivalent to
  <a class="link" href="GDataYouTubeService.html#GDATA-YOUTUBE-MOST-POPULAR-FEED:CAPS"><code class="literal">GDATA_YOUTUBE_MOST_POPULAR_FEED</code></a>.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GDATA-YOUTUBE-RECENTLY-FEATURED-FEED:CAPS"></a>GDATA_YOUTUBE_RECENTLY_FEATURED_FEED</p></td>
<td class="enum_member_description">
<p>This feed contains videos recently
  featured on the YouTube home page or featured videos tab. Deprecated:
  0.17.0: Google no longer supports this feed type, and it will return
  results equivalent to <a class="link" href="GDataYouTubeService.html#GDATA-YOUTUBE-MOST-POPULAR-FEED:CAPS"><code class="literal">GDATA_YOUTUBE_MOST_POPULAR_FEED</code></a>.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GDATA-YOUTUBE-WATCH-ON-MOBILE-FEED:CAPS"></a>GDATA_YOUTUBE_WATCH_ON_MOBILE_FEED</p></td>
<td class="enum_member_description">
<p>This feed contains videos suitable for
  playback on mobile devices. Deprecated: 0.17.0: Google no longer
  supports this feed type, and it will return results equivalent to
  <a class="link" href="GDataYouTubeService.html#GDATA-YOUTUBE-MOST-POPULAR-FEED:CAPS"><code class="literal">GDATA_YOUTUBE_MOST_POPULAR_FEED</code></a>.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
</div>
<div class="refsect1">
<a name="GDataYouTubeService.property-details"></a><h2>Property Details</h2>
<div class="refsect2">
<a name="GDataYouTubeService--developer-key"></a><h3>The <code class="literal">“developer-key”</code> property</h3>
<pre class="programlisting">  “developer-key”            <a href="../glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
<p>The developer key your application has registered with the YouTube API. For more information, see the <a class="ulink" href="https://developers.google.com/youtube/registering_an_application" target="_top">online documentation</a>.</p>
<p>With the port from v2 to v3 of the YouTube API in libgdata
0.17.0, it might be necessary to update your application’s
developer key.</p>
<p>Flags: Read / Write / Construct Only</p>
<p>Default value: NULL</p>
</div>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.26.1</div>
</body>
</html>