blob: d451c12472c8b32a1bcc12059f7fd9e2f2afb454 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><title>Python: module gdata.photos.service</title>
</head><body bgcolor="#f0f0f8">
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
<tr bgcolor="#7799ee">
<td valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="gdata.html"><font color="#ffffff">gdata</font></a>.<a href="gdata.photos.html"><font color="#ffffff">photos</font></a>.service</strong></big></big> (version 176)</font></td
><td align=right valign=bottom
><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/usr/local/google/home/afshar/src/external-gdata-release/google3/src/gdata/photos/service.py">/usr/local/google/home/afshar/src/external-gdata-release/google3/src/gdata/photos/service.py</a></font></td></tr></table>
<p><tt>Google&nbsp;PhotoService&nbsp;provides&nbsp;a&nbsp;human-friendly&nbsp;interface&nbsp;to<br>
Google&nbsp;Photo&nbsp;(a.k.a&nbsp;Picasa&nbsp;Web)&nbsp;services[1].<br>
&nbsp;<br>
It&nbsp;extends&nbsp;gdata.service.<a href="gdata.service.html#GDataService">GDataService</a>&nbsp;and&nbsp;as&nbsp;such&nbsp;hides&nbsp;all&nbsp;the<br>
nasty&nbsp;details&nbsp;about&nbsp;authenticating,&nbsp;parsing&nbsp;and&nbsp;communicating&nbsp;with<br>
Google&nbsp;Photos.&nbsp;<br>
&nbsp;<br>
[1]:&nbsp;<a href="http://code.google.com/apis/picasaweb/gdata.html">http://code.google.com/apis/picasaweb/gdata.html</a><br>
&nbsp;<br>
Example:<br>
&nbsp;&nbsp;import&nbsp;gdata.photos,&nbsp;gdata.photos.service<br>
&nbsp;&nbsp;pws&nbsp;=&nbsp;gdata.photos.service.<a href="#PhotosService">PhotosService</a>()<br>
&nbsp;&nbsp;pws.ClientLogin(username,&nbsp;password)<br>
&nbsp;&nbsp;#Get&nbsp;all&nbsp;albums<br>
&nbsp;&nbsp;albums&nbsp;=&nbsp;pws.GetUserFeed().entry<br>
&nbsp;&nbsp;#&nbsp;Get&nbsp;all&nbsp;photos&nbsp;in&nbsp;second&nbsp;album<br>
&nbsp;&nbsp;photos&nbsp;=&nbsp;pws.GetFeed(albums[1].GetPhotosUri()).entry<br>
&nbsp;&nbsp;#&nbsp;Get&nbsp;all&nbsp;tags&nbsp;for&nbsp;photos&nbsp;in&nbsp;second&nbsp;album&nbsp;and&nbsp;print&nbsp;them<br>
&nbsp;&nbsp;tags&nbsp;=&nbsp;pws.GetFeed(albums[1].GetTagsUri()).entry<br>
&nbsp;&nbsp;print&nbsp;[&nbsp;tag.summary.text&nbsp;for&nbsp;tag&nbsp;in&nbsp;tags&nbsp;]<br>
&nbsp;&nbsp;#&nbsp;Get&nbsp;all&nbsp;comments&nbsp;for&nbsp;the&nbsp;first&nbsp;photos&nbsp;in&nbsp;list&nbsp;and&nbsp;print&nbsp;them<br>
&nbsp;&nbsp;comments&nbsp;=&nbsp;pws.GetCommentFeed(photos[0].GetCommentsUri()).entry<br>
&nbsp;&nbsp;print&nbsp;[&nbsp;c.summary.text&nbsp;for&nbsp;c&nbsp;in&nbsp;comments&nbsp;]<br>
&nbsp;<br>
&nbsp;&nbsp;#&nbsp;Get&nbsp;a&nbsp;photo&nbsp;to&nbsp;work&nbsp;with<br>
&nbsp;&nbsp;photo&nbsp;=&nbsp;photos[0]<br>
&nbsp;&nbsp;#&nbsp;Update&nbsp;metadata<br>
&nbsp;<br>
&nbsp;&nbsp;#&nbsp;Attributes&nbsp;from&nbsp;the&nbsp;&lt;gphoto:*&gt;&nbsp;namespace<br>
&nbsp;&nbsp;photo.summary.text&nbsp;=&nbsp;u'A&nbsp;nice&nbsp;view&nbsp;from&nbsp;my&nbsp;veranda'<br>
&nbsp;&nbsp;photo.title.text&nbsp;=&nbsp;u'Verandaview.jpg'<br>
&nbsp;<br>
&nbsp;&nbsp;#&nbsp;Attributes&nbsp;from&nbsp;the&nbsp;&lt;media:*&gt;&nbsp;namespace<br>
&nbsp;&nbsp;photo.media.keywords.text&nbsp;=&nbsp;u'Home,&nbsp;Long-exposure,&nbsp;Sunset'&nbsp;#&nbsp;Comma-separated<br>
&nbsp;<br>
&nbsp;&nbsp;#&nbsp;Adding&nbsp;attributes&nbsp;to&nbsp;media&nbsp;object<br>
&nbsp;<br>
&nbsp;&nbsp;#&nbsp;Rotate&nbsp;90&nbsp;degrees&nbsp;clockwise<br>
&nbsp;&nbsp;photo.rotation&nbsp;=&nbsp;gdata.photos.Rotation(text='90')&nbsp;<br>
&nbsp;<br>
&nbsp;&nbsp;#&nbsp;Submit&nbsp;modified&nbsp;photo&nbsp;object<br>
&nbsp;&nbsp;photo&nbsp;=&nbsp;pws.UpdatePhotoMetadata(photo)<br>
&nbsp;&nbsp;<br>
&nbsp;&nbsp;#&nbsp;Make&nbsp;sure&nbsp;you&nbsp;only&nbsp;modify&nbsp;the&nbsp;newly&nbsp;returned&nbsp;object,&nbsp;else&nbsp;you'll&nbsp;get<br>
&nbsp;&nbsp;#&nbsp;versioning&nbsp;errors.&nbsp;See&nbsp;Optimistic-concurrency<br>
&nbsp;<br>
&nbsp;&nbsp;#&nbsp;Add&nbsp;comment&nbsp;to&nbsp;a&nbsp;picture<br>
&nbsp;&nbsp;comment&nbsp;=&nbsp;pws.InsertComment(photo,&nbsp;u'I&nbsp;wish&nbsp;the&nbsp;water&nbsp;always&nbsp;was&nbsp;this&nbsp;warm')<br>
&nbsp;<br>
&nbsp;&nbsp;#&nbsp;Remove&nbsp;comment&nbsp;because&nbsp;it&nbsp;was&nbsp;silly<br>
&nbsp;&nbsp;print&nbsp;"*blush*"<br>
&nbsp;&nbsp;pws.Delete(comment.GetEditLink().href)</tt></p>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#aa55cc">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="StringIO.html">StringIO</a><br>
<a href="atom.html">atom</a><br>
</td><td width="25%" valign=top><a href="gdata.html">gdata</a><br>
<a href="os.html">os</a><br>
</td><td width="25%" valign=top><a href="sys.html">sys</a><br>
<a href="time.html">time</a><br>
</td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ee77aa">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl>
<dt><font face="helvetica, arial"><a href="exceptions.html#Exception">exceptions.Exception</a>(<a href="exceptions.html#BaseException">exceptions.BaseException</a>)
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="gdata.photos.service.html#GooglePhotosException">GooglePhotosException</a>
</font></dt></dl>
</dd>
<dt><font face="helvetica, arial"><a href="gdata.service.html#GDataService">gdata.service.GDataService</a>(<a href="atom.service.html#AtomService">atom.service.AtomService</a>)
</font></dt><dd>
<dl>
<dt><font face="helvetica, arial"><a href="gdata.photos.service.html#PhotosService">PhotosService</a>
</font></dt></dl>
</dd>
</dl>
<p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="GooglePhotosException">class <strong>GooglePhotosException</strong></a>(<a href="exceptions.html#Exception">exceptions.Exception</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="gdata.photos.service.html#GooglePhotosException">GooglePhotosException</a></dd>
<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
<dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd>
<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="GooglePhotosException-__init__"><strong>__init__</strong></a>(self, response)</dt></dl>
<hr>
Data descriptors defined here:<br>
<dl><dt><strong>__weakref__</strong></dt>
<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
</dl>
<hr>
Data and other attributes inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
<dl><dt><strong>__new__</strong> = &lt;built-in method __new__ of type object&gt;<dd><tt>T.<a href="#GooglePhotosException-__new__">__new__</a>(S,&nbsp;...)&nbsp;-&gt;&nbsp;a&nbsp;new&nbsp;object&nbsp;with&nbsp;type&nbsp;S,&nbsp;a&nbsp;subtype&nbsp;of&nbsp;T</tt></dl>
<hr>
Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
<dl><dt><a name="GooglePhotosException-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#GooglePhotosException-__delattr__">__delattr__</a>('name')&nbsp;&lt;==&gt;&nbsp;del&nbsp;x.name</tt></dd></dl>
<dl><dt><a name="GooglePhotosException-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#GooglePhotosException-__getattribute__">__getattribute__</a>('name')&nbsp;&lt;==&gt;&nbsp;x.name</tt></dd></dl>
<dl><dt><a name="GooglePhotosException-__getitem__"><strong>__getitem__</strong></a>(...)</dt><dd><tt>x.<a href="#GooglePhotosException-__getitem__">__getitem__</a>(y)&nbsp;&lt;==&gt;&nbsp;x[y]</tt></dd></dl>
<dl><dt><a name="GooglePhotosException-__getslice__"><strong>__getslice__</strong></a>(...)</dt><dd><tt>x.<a href="#GooglePhotosException-__getslice__">__getslice__</a>(i,&nbsp;j)&nbsp;&lt;==&gt;&nbsp;x[i:j]<br>
&nbsp;<br>
Use&nbsp;of&nbsp;negative&nbsp;indices&nbsp;is&nbsp;not&nbsp;supported.</tt></dd></dl>
<dl><dt><a name="GooglePhotosException-__reduce__"><strong>__reduce__</strong></a>(...)</dt></dl>
<dl><dt><a name="GooglePhotosException-__repr__"><strong>__repr__</strong></a>(...)</dt><dd><tt>x.<a href="#GooglePhotosException-__repr__">__repr__</a>()&nbsp;&lt;==&gt;&nbsp;repr(x)</tt></dd></dl>
<dl><dt><a name="GooglePhotosException-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#GooglePhotosException-__setattr__">__setattr__</a>('name',&nbsp;value)&nbsp;&lt;==&gt;&nbsp;x.name&nbsp;=&nbsp;value</tt></dd></dl>
<dl><dt><a name="GooglePhotosException-__setstate__"><strong>__setstate__</strong></a>(...)</dt></dl>
<dl><dt><a name="GooglePhotosException-__str__"><strong>__str__</strong></a>(...)</dt><dd><tt>x.<a href="#GooglePhotosException-__str__">__str__</a>()&nbsp;&lt;==&gt;&nbsp;str(x)</tt></dd></dl>
<dl><dt><a name="GooglePhotosException-__unicode__"><strong>__unicode__</strong></a>(...)</dt></dl>
<hr>
Data descriptors inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
<dl><dt><strong>__dict__</strong></dt>
</dl>
<dl><dt><strong>args</strong></dt>
</dl>
<dl><dt><strong>message</strong></dt>
</dl>
</td></tr></table> <p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#ffc8d8">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#000000" face="helvetica, arial"><a name="PhotosService">class <strong>PhotosService</strong></a>(<a href="gdata.service.html#GDataService">gdata.service.GDataService</a>)</font></td></tr>
<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt>Method resolution order:</dt>
<dd><a href="gdata.photos.service.html#PhotosService">PhotosService</a></dd>
<dd><a href="gdata.service.html#GDataService">gdata.service.GDataService</a></dd>
<dd><a href="atom.service.html#AtomService">atom.service.AtomService</a></dd>
<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
</dl>
<hr>
Methods defined here:<br>
<dl><dt><a name="PhotosService-Delete"><strong>Delete</strong></a>(self, object_or_uri, *args, **kwargs)</dt><dd><tt>Delete&nbsp;an&nbsp;object.<br>
&nbsp;<br>
Re-implementing&nbsp;the&nbsp;<a href="gdata.service.html#GDataService">GDataService</a>.Delete&nbsp;method,&nbsp;to&nbsp;add&nbsp;some<br>
convenience.<br>
&nbsp;<br>
Arguments:<br>
object_or_uri:&nbsp;Any&nbsp;object&nbsp;that&nbsp;has&nbsp;a&nbsp;GetEditLink()&nbsp;method&nbsp;that<br>
&nbsp;&nbsp;returns&nbsp;a&nbsp;link,&nbsp;or&nbsp;a&nbsp;uri&nbsp;to&nbsp;that&nbsp;object.<br>
&nbsp;<br>
Returns:<br>
?&nbsp;or&nbsp;<a href="#GooglePhotosException">GooglePhotosException</a>&nbsp;on&nbsp;errors</tt></dd></dl>
<dl><dt><a name="PhotosService-GetContacts"><strong>GetContacts</strong></a>(self, user<font color="#909090">='default'</font>, limit<font color="#909090">=None</font>)</dt><dd><tt>Retrieve&nbsp;a&nbsp;feed&nbsp;that&nbsp;contains&nbsp;a&nbsp;list&nbsp;of&nbsp;your&nbsp;contacts<br>
&nbsp;<br>
Arguments:<br>
user:&nbsp;Username&nbsp;of&nbsp;the&nbsp;user&nbsp;whose&nbsp;contacts&nbsp;you&nbsp;want<br>
&nbsp;<br>
Returns<br>
gdata.photos.UserFeed,&nbsp;with&nbsp;UserEntry&nbsp;entries<br>
&nbsp;<br>
See:<br>
<a href="http://groups.google.com/group/Google-Picasa-Data-API/msg/819b0025b5ff5e38">http://groups.google.com/group/Google-Picasa-Data-API/msg/819b0025b5ff5e38</a></tt></dd></dl>
<dl><dt><a name="PhotosService-GetEntry"><strong>GetEntry</strong></a>(self, uri, limit<font color="#909090">=None</font>, start_index<font color="#909090">=None</font>)</dt><dd><tt>Get&nbsp;an&nbsp;Entry.<br>
&nbsp;<br>
Arguments:<br>
uri:&nbsp;the&nbsp;uri&nbsp;to&nbsp;the&nbsp;entry<br>
limit&nbsp;(optional):&nbsp;the&nbsp;maximum&nbsp;number&nbsp;of&nbsp;entries&nbsp;to&nbsp;return.&nbsp;Defaults&nbsp;to&nbsp;what<br>
&nbsp;&nbsp;the&nbsp;server&nbsp;returns.<br>
&nbsp;<br>
Returns:<br>
one&nbsp;of&nbsp;gdata.photos.AlbumEntry,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gdata.photos.UserEntry,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gdata.photos.PhotoEntry,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gdata.photos.CommentEntry,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gdata.photos.TagEntry,<br>
&nbsp;&nbsp;depending&nbsp;on&nbsp;the&nbsp;results&nbsp;of&nbsp;the&nbsp;query.<br>
Raises:<br>
<a href="#GooglePhotosException">GooglePhotosException</a></tt></dd></dl>
<dl><dt><a name="PhotosService-GetFeed"><strong>GetFeed</strong></a>(self, uri, limit<font color="#909090">=None</font>, start_index<font color="#909090">=None</font>)</dt><dd><tt>Get&nbsp;a&nbsp;feed.<br>
&nbsp;<br>
&nbsp;The&nbsp;results&nbsp;are&nbsp;ordered&nbsp;by&nbsp;the&nbsp;values&nbsp;of&nbsp;their&nbsp;`updated'&nbsp;elements,<br>
&nbsp;with&nbsp;the&nbsp;most&nbsp;recently&nbsp;updated&nbsp;entry&nbsp;appearing&nbsp;first&nbsp;in&nbsp;the&nbsp;feed.<br>
&nbsp;<br>
Arguments:<br>
uri:&nbsp;the&nbsp;uri&nbsp;to&nbsp;fetch<br>
limit&nbsp;(optional):&nbsp;the&nbsp;maximum&nbsp;number&nbsp;of&nbsp;entries&nbsp;to&nbsp;return.&nbsp;Defaults&nbsp;to&nbsp;what<br>
&nbsp;&nbsp;the&nbsp;server&nbsp;returns.<br>
&nbsp;<br>
Returns:<br>
one&nbsp;of&nbsp;gdata.photos.AlbumFeed,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gdata.photos.UserFeed,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gdata.photos.PhotoFeed,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gdata.photos.CommentFeed,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gdata.photos.TagFeed,<br>
&nbsp;&nbsp;depending&nbsp;on&nbsp;the&nbsp;results&nbsp;of&nbsp;the&nbsp;query.<br>
Raises:<br>
<a href="#GooglePhotosException">GooglePhotosException</a><br>
&nbsp;<br>
See:<br>
<a href="http://code.google.com/apis/picasaweb/gdata.html#Get_Album_Feed_Manual">http://code.google.com/apis/picasaweb/gdata.html#Get_Album_Feed_Manual</a></tt></dd></dl>
<dl><dt><a name="PhotosService-GetTaggedPhotos"><strong>GetTaggedPhotos</strong></a>(self, tag, user<font color="#909090">='default'</font>, limit<font color="#909090">=None</font>)</dt><dd><tt>Get&nbsp;all&nbsp;photos&nbsp;belonging&nbsp;to&nbsp;a&nbsp;specific&nbsp;user,&nbsp;tagged&nbsp;by&nbsp;the&nbsp;given&nbsp;keyword<br>
&nbsp;<br>
Arguments:<br>
tag:&nbsp;The&nbsp;tag&nbsp;you're&nbsp;looking&nbsp;for,&nbsp;e.g.&nbsp;`dog'<br>
user&nbsp;(optional):&nbsp;Whose&nbsp;images/videos&nbsp;you&nbsp;want&nbsp;to&nbsp;search,&nbsp;defaults<br>
&nbsp;&nbsp;to&nbsp;current&nbsp;user<br>
limit&nbsp;(optional):&nbsp;the&nbsp;maximum&nbsp;number&nbsp;of&nbsp;entries&nbsp;to&nbsp;return.<br>
&nbsp;&nbsp;Defaults&nbsp;to&nbsp;everything&nbsp;the&nbsp;server&nbsp;returns.<br>
&nbsp;<br>
Returns:<br>
gdata.photos.UserFeed&nbsp;containing&nbsp;PhotoEntry&nbsp;elements</tt></dd></dl>
<dl><dt><a name="PhotosService-GetUserFeed"><strong>GetUserFeed</strong></a>(self, kind<font color="#909090">='album'</font>, user<font color="#909090">='default'</font>, limit<font color="#909090">=None</font>)</dt><dd><tt>Get&nbsp;user-based&nbsp;feed,&nbsp;containing&nbsp;albums,&nbsp;photos,&nbsp;comments&nbsp;or&nbsp;tags;<br>
&nbsp;&nbsp;defaults&nbsp;to&nbsp;albums.<br>
&nbsp;<br>
The&nbsp;entries&nbsp;are&nbsp;ordered&nbsp;by&nbsp;the&nbsp;values&nbsp;of&nbsp;their&nbsp;`updated'&nbsp;elements,<br>
with&nbsp;the&nbsp;most&nbsp;recently&nbsp;updated&nbsp;entry&nbsp;appearing&nbsp;first&nbsp;in&nbsp;the&nbsp;feed.<br>
&nbsp;<br>
Arguments:<br>
kind:&nbsp;the&nbsp;kind&nbsp;of&nbsp;entries&nbsp;to&nbsp;get,&nbsp;either&nbsp;`album',&nbsp;`photo',<br>
&nbsp;&nbsp;`comment'&nbsp;or&nbsp;`tag',&nbsp;or&nbsp;a&nbsp;python&nbsp;list&nbsp;of&nbsp;these.&nbsp;Defaults&nbsp;to&nbsp;`album'.<br>
user&nbsp;(optional):&nbsp;whose&nbsp;albums&nbsp;we're&nbsp;querying.&nbsp;Defaults&nbsp;to&nbsp;current&nbsp;user.<br>
limit&nbsp;(optional):&nbsp;the&nbsp;maximum&nbsp;number&nbsp;of&nbsp;entries&nbsp;to&nbsp;return.<br>
&nbsp;&nbsp;Defaults&nbsp;to&nbsp;everything&nbsp;the&nbsp;server&nbsp;returns.<br>
&nbsp;<br>
&nbsp;<br>
Returns:<br>
gdata.photos.UserFeed,&nbsp;containing&nbsp;appropriate&nbsp;Entry&nbsp;elements<br>
&nbsp;<br>
See:<br>
<a href="http://code.google.com/apis/picasaweb/gdata.html#Get_Album_Feed_Manual">http://code.google.com/apis/picasaweb/gdata.html#Get_Album_Feed_Manual</a><br>
<a href="http://googledataapis.blogspot.com/2007/07/picasa-web-albums-adds-new-api-features.html">http://googledataapis.blogspot.com/2007/07/picasa-web-albums-adds-new-api-features.html</a></tt></dd></dl>
<dl><dt><a name="PhotosService-InsertAlbum"><strong>InsertAlbum</strong></a>(self, title, summary, location<font color="#909090">=None</font>, access<font color="#909090">='public'</font>, commenting_enabled<font color="#909090">='true'</font>, timestamp<font color="#909090">=None</font>)</dt><dd><tt>Add&nbsp;an&nbsp;album.<br>
&nbsp;<br>
Needs&nbsp;authentication,&nbsp;see&nbsp;<a href="#PhotosService-ClientLogin">ClientLogin</a>()<br>
&nbsp;<br>
Arguments:<br>
title:&nbsp;Album&nbsp;title&nbsp;<br>
summary:&nbsp;Album&nbsp;summary&nbsp;/&nbsp;description<br>
access&nbsp;(optional):&nbsp;`private'&nbsp;or&nbsp;`public'.&nbsp;Public&nbsp;albums&nbsp;are&nbsp;searchable<br>
&nbsp;&nbsp;by&nbsp;everyone&nbsp;on&nbsp;the&nbsp;internet.&nbsp;Defaults&nbsp;to&nbsp;`public'<br>
commenting_enabled&nbsp;(optional):&nbsp;`true'&nbsp;or&nbsp;`false'.&nbsp;Defaults&nbsp;to&nbsp;`true'.<br>
timestamp&nbsp;(optional):&nbsp;A&nbsp;date&nbsp;and&nbsp;time&nbsp;for&nbsp;the&nbsp;album,&nbsp;in&nbsp;milliseconds&nbsp;since<br>
&nbsp;&nbsp;Unix&nbsp;epoch[1]&nbsp;UTC.&nbsp;Defaults&nbsp;to&nbsp;now.<br>
&nbsp;<br>
Returns:<br>
The&nbsp;newly&nbsp;created&nbsp;gdata.photos.AlbumEntry<br>
&nbsp;<br>
See:<br>
<a href="http://code.google.com/apis/picasaweb/gdata.html#Add_Album_Manual_Installed">http://code.google.com/apis/picasaweb/gdata.html#Add_Album_Manual_Installed</a><br>
&nbsp;<br>
[1]:&nbsp;<a href="http://en.wikipedia.org/wiki/Unix_epoch">http://en.wikipedia.org/wiki/Unix_epoch</a></tt></dd></dl>
<dl><dt><a name="PhotosService-InsertComment"><strong>InsertComment</strong></a>(self, photo_or_uri, comment)</dt><dd><tt>Add&nbsp;a&nbsp;comment&nbsp;to&nbsp;a&nbsp;photo.<br>
&nbsp;<br>
Needs&nbsp;authentication,&nbsp;see&nbsp;<a href="#PhotosService-ClientLogin">ClientLogin</a>()<br>
&nbsp;<br>
Arguments:<br>
photo_or_uri:&nbsp;a&nbsp;gdata.photos.PhotoEntry&nbsp;that&nbsp;is&nbsp;about&nbsp;to&nbsp;be&nbsp;commented<br>
&nbsp;&nbsp;,&nbsp;or&nbsp;a&nbsp;`post'&nbsp;uri&nbsp;pointing&nbsp;to&nbsp;it<br>
(string)&nbsp;comment:&nbsp;The&nbsp;actual&nbsp;comment<br>
&nbsp;<br>
Returns:<br>
The&nbsp;new&nbsp;gdata.photos.CommentEntry<br>
&nbsp;<br>
Example:<br>
p&nbsp;=&nbsp;<a href="#PhotosService-GetFeed">GetFeed</a>(PhotoUri)<br>
tag&nbsp;=&nbsp;<a href="#PhotosService-InsertComment">InsertComment</a>(p,&nbsp;'OOOH!&nbsp;I&nbsp;would&nbsp;have&nbsp;loved&nbsp;to&nbsp;be&nbsp;there.<br>
&nbsp;&nbsp;Who's&nbsp;that&nbsp;in&nbsp;the&nbsp;back?')</tt></dd></dl>
<dl><dt><a name="PhotosService-InsertPhoto"><strong>InsertPhoto</strong></a>(self, album_or_uri, photo, filename_or_handle, content_type<font color="#909090">='image/jpeg'</font>)</dt><dd><tt>Add&nbsp;a&nbsp;PhotoEntry<br>
&nbsp;<br>
Needs&nbsp;authentication,&nbsp;see&nbsp;<a href="#PhotosService-ClientLogin">ClientLogin</a>()<br>
&nbsp;<br>
Arguments:<br>
album_or_uri:&nbsp;AlbumFeed&nbsp;or&nbsp;uri&nbsp;of&nbsp;the&nbsp;album&nbsp;where&nbsp;the&nbsp;photo&nbsp;should&nbsp;go<br>
photo:&nbsp;PhotoEntry&nbsp;to&nbsp;add<br>
filename_or_handle:&nbsp;A&nbsp;file-like&nbsp;object&nbsp;or&nbsp;file&nbsp;name&nbsp;where&nbsp;the&nbsp;image/video<br>
&nbsp;&nbsp;will&nbsp;be&nbsp;read&nbsp;from<br>
content_type&nbsp;(optional):&nbsp;Internet&nbsp;media&nbsp;type&nbsp;(a.k.a.&nbsp;mime&nbsp;type)&nbsp;of<br>
&nbsp;&nbsp;media&nbsp;object.&nbsp;Currently&nbsp;Google&nbsp;Photos&nbsp;supports&nbsp;these&nbsp;types:<br>
&nbsp;&nbsp;&nbsp;o&nbsp;image/bmp<br>
&nbsp;&nbsp;&nbsp;o&nbsp;image/gif<br>
&nbsp;&nbsp;&nbsp;o&nbsp;image/jpeg<br>
&nbsp;&nbsp;&nbsp;o&nbsp;image/png<br>
&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;Images&nbsp;will&nbsp;be&nbsp;converted&nbsp;to&nbsp;jpeg&nbsp;on&nbsp;upload.&nbsp;Defaults&nbsp;to&nbsp;`image/jpeg'</tt></dd></dl>
<dl><dt><a name="PhotosService-InsertPhotoSimple"><strong>InsertPhotoSimple</strong></a>(self, album_or_uri, title, summary, filename_or_handle, content_type<font color="#909090">='image/jpeg'</font>, keywords<font color="#909090">=None</font>)</dt><dd><tt>Add&nbsp;a&nbsp;photo&nbsp;without&nbsp;constructing&nbsp;a&nbsp;PhotoEntry.<br>
&nbsp;<br>
Needs&nbsp;authentication,&nbsp;see&nbsp;<a href="#PhotosService-ClientLogin">ClientLogin</a>()<br>
&nbsp;<br>
Arguments:<br>
album_or_uri:&nbsp;AlbumFeed&nbsp;or&nbsp;uri&nbsp;of&nbsp;the&nbsp;album&nbsp;where&nbsp;the&nbsp;photo&nbsp;should&nbsp;go<br>
title:&nbsp;Photo&nbsp;title<br>
summary:&nbsp;Photo&nbsp;summary&nbsp;/&nbsp;description<br>
filename_or_handle:&nbsp;A&nbsp;file-like&nbsp;object&nbsp;or&nbsp;file&nbsp;name&nbsp;where&nbsp;the&nbsp;image/video<br>
&nbsp;&nbsp;will&nbsp;be&nbsp;read&nbsp;from<br>
content_type&nbsp;(optional):&nbsp;Internet&nbsp;media&nbsp;type&nbsp;(a.k.a.&nbsp;mime&nbsp;type)&nbsp;of<br>
&nbsp;&nbsp;media&nbsp;object.&nbsp;Currently&nbsp;Google&nbsp;Photos&nbsp;supports&nbsp;these&nbsp;types:<br>
&nbsp;&nbsp;&nbsp;o&nbsp;image/bmp<br>
&nbsp;&nbsp;&nbsp;o&nbsp;image/gif<br>
&nbsp;&nbsp;&nbsp;o&nbsp;image/jpeg<br>
&nbsp;&nbsp;&nbsp;o&nbsp;image/png<br>
&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;Images&nbsp;will&nbsp;be&nbsp;converted&nbsp;to&nbsp;jpeg&nbsp;on&nbsp;upload.&nbsp;Defaults&nbsp;to&nbsp;`image/jpeg'<br>
keywords&nbsp;(optional):&nbsp;a&nbsp;1)&nbsp;comma&nbsp;separated&nbsp;string&nbsp;or&nbsp;2)&nbsp;a&nbsp;python&nbsp;list()&nbsp;of<br>
&nbsp;&nbsp;keywords&nbsp;(a.k.a.&nbsp;tags)&nbsp;to&nbsp;add&nbsp;to&nbsp;the&nbsp;image.<br>
&nbsp;&nbsp;E.g.&nbsp;1)&nbsp;`dog,&nbsp;vacation,&nbsp;happy'&nbsp;2)&nbsp;['dog',&nbsp;'happy',&nbsp;'vacation']<br>
&nbsp;<br>
Returns:<br>
The&nbsp;newly&nbsp;created&nbsp;gdata.photos.PhotoEntry&nbsp;or&nbsp;<a href="#GooglePhotosException">GooglePhotosException</a>&nbsp;on&nbsp;errors<br>
&nbsp;<br>
See:<br>
<a href="http://code.google.com/apis/picasaweb/gdata.html#Add_Album_Manual_Installed">http://code.google.com/apis/picasaweb/gdata.html#Add_Album_Manual_Installed</a><br>
[1]:&nbsp;<a href="http://en.wikipedia.org/wiki/Unix_epoch">http://en.wikipedia.org/wiki/Unix_epoch</a></tt></dd></dl>
<dl><dt><a name="PhotosService-InsertTag"><strong>InsertTag</strong></a>(self, photo_or_uri, tag)</dt><dd><tt>Add&nbsp;a&nbsp;tag&nbsp;(a.k.a.&nbsp;keyword)&nbsp;to&nbsp;a&nbsp;photo.<br>
&nbsp;<br>
Needs&nbsp;authentication,&nbsp;see&nbsp;<a href="#PhotosService-ClientLogin">ClientLogin</a>()<br>
&nbsp;<br>
Arguments:<br>
photo_or_uri:&nbsp;a&nbsp;gdata.photos.PhotoEntry&nbsp;that&nbsp;will&nbsp;be&nbsp;tagged,&nbsp;or&nbsp;a<br>
&nbsp;&nbsp;`post'&nbsp;uri&nbsp;pointing&nbsp;to&nbsp;it<br>
(string)&nbsp;tag:&nbsp;The&nbsp;tag/keyword<br>
&nbsp;<br>
Returns:<br>
The&nbsp;new&nbsp;gdata.photos.TagEntry<br>
&nbsp;<br>
Example:<br>
p&nbsp;=&nbsp;<a href="#PhotosService-GetFeed">GetFeed</a>(PhotoUri)<br>
tag&nbsp;=&nbsp;<a href="#PhotosService-InsertTag">InsertTag</a>(p,&nbsp;'Beautiful&nbsp;sunsets')</tt></dd></dl>
<dl><dt><a name="PhotosService-SearchCommunityPhotos"><strong>SearchCommunityPhotos</strong></a>(self, query, limit<font color="#909090">=100</font>)</dt><dd><tt>Search&nbsp;through&nbsp;all&nbsp;public&nbsp;photos&nbsp;and&nbsp;return&nbsp;a&nbsp;feed.<br>
This&nbsp;will&nbsp;look&nbsp;for&nbsp;matches&nbsp;in&nbsp;file&nbsp;names&nbsp;and&nbsp;image&nbsp;tags&nbsp;(a.k.a.&nbsp;keywords)<br>
&nbsp;<br>
Arguments:<br>
query:&nbsp;The&nbsp;string&nbsp;you're&nbsp;looking&nbsp;for,&nbsp;e.g.&nbsp;`vacation'<br>
limit&nbsp;(optional):&nbsp;Don't&nbsp;return&nbsp;more&nbsp;than&nbsp;`limit'&nbsp;hits,&nbsp;defaults&nbsp;to&nbsp;100<br>
&nbsp;<br>
Returns:<br>
gdata.GDataFeed&nbsp;with&nbsp;PhotoEntry&nbsp;elements</tt></dd></dl>
<dl><dt><a name="PhotosService-SearchContactsPhotos"><strong>SearchContactsPhotos</strong></a>(self, user<font color="#909090">='default'</font>, search<font color="#909090">=None</font>, limit<font color="#909090">=None</font>)</dt><dd><tt>Search&nbsp;over&nbsp;your&nbsp;contacts'&nbsp;photos&nbsp;and&nbsp;return&nbsp;a&nbsp;feed<br>
&nbsp;<br>
Arguments:<br>
user:&nbsp;Username&nbsp;of&nbsp;the&nbsp;user&nbsp;whose&nbsp;contacts&nbsp;you&nbsp;want<br>
search&nbsp;(optional):&nbsp;What&nbsp;to&nbsp;search&nbsp;for&nbsp;(photo&nbsp;title,&nbsp;description&nbsp;and&nbsp;keywords)<br>
&nbsp;<br>
Returns<br>
gdata.photos.UserFeed,&nbsp;with&nbsp;PhotoEntry&nbsp;elements<br>
&nbsp;<br>
See:<br>
<a href="http://groups.google.com/group/Google-Picasa-Data-API/msg/819b0025b5ff5e38">http://groups.google.com/group/Google-Picasa-Data-API/msg/819b0025b5ff5e38</a></tt></dd></dl>
<dl><dt><a name="PhotosService-SearchUserPhotos"><strong>SearchUserPhotos</strong></a>(self, query, user<font color="#909090">='default'</font>, limit<font color="#909090">=100</font>)</dt><dd><tt>Search&nbsp;through&nbsp;all&nbsp;photos&nbsp;for&nbsp;a&nbsp;specific&nbsp;user&nbsp;and&nbsp;return&nbsp;a&nbsp;feed.<br>
This&nbsp;will&nbsp;look&nbsp;for&nbsp;matches&nbsp;in&nbsp;file&nbsp;names&nbsp;and&nbsp;image&nbsp;tags&nbsp;(a.k.a.&nbsp;keywords)<br>
&nbsp;<br>
Arguments:<br>
query:&nbsp;The&nbsp;string&nbsp;you're&nbsp;looking&nbsp;for,&nbsp;e.g.&nbsp;`vacation'<br>
user&nbsp;(optional):&nbsp;The&nbsp;username&nbsp;of&nbsp;whose&nbsp;photos&nbsp;you&nbsp;want&nbsp;to&nbsp;search,&nbsp;defaults<br>
&nbsp;&nbsp;to&nbsp;current&nbsp;user.<br>
limit&nbsp;(optional):&nbsp;Don't&nbsp;return&nbsp;more&nbsp;than&nbsp;`limit'&nbsp;hits,&nbsp;defaults&nbsp;to&nbsp;100<br>
&nbsp;<br>
Only&nbsp;public&nbsp;photos&nbsp;are&nbsp;searched,&nbsp;unless&nbsp;you&nbsp;are&nbsp;authenticated&nbsp;and<br>
searching&nbsp;through&nbsp;your&nbsp;own&nbsp;photos.<br>
&nbsp;<br>
Returns:<br>
gdata.photos.UserFeed&nbsp;with&nbsp;PhotoEntry&nbsp;elements</tt></dd></dl>
<dl><dt><a name="PhotosService-UpdatePhotoBlob"><strong>UpdatePhotoBlob</strong></a>(self, photo_or_uri, filename_or_handle, content_type<font color="#909090">='image/jpeg'</font>)</dt><dd><tt>Update&nbsp;a&nbsp;photo's&nbsp;binary&nbsp;data.<br>
&nbsp;<br>
Needs&nbsp;authentication,&nbsp;see&nbsp;<a href="#PhotosService-ClientLogin">ClientLogin</a>()<br>
&nbsp;<br>
Arguments:<br>
photo_or_uri:&nbsp;a&nbsp;gdata.photos.PhotoEntry&nbsp;that&nbsp;will&nbsp;be&nbsp;updated,&nbsp;or&nbsp;a<br>
&nbsp;&nbsp;`edit-media'&nbsp;uri&nbsp;pointing&nbsp;to&nbsp;it<br>
filename_or_handle:&nbsp;&nbsp;A&nbsp;file-like&nbsp;object&nbsp;or&nbsp;file&nbsp;name&nbsp;where&nbsp;the&nbsp;image/video<br>
&nbsp;&nbsp;will&nbsp;be&nbsp;read&nbsp;from<br>
content_type&nbsp;(optional):&nbsp;Internet&nbsp;media&nbsp;type&nbsp;(a.k.a.&nbsp;mime&nbsp;type)&nbsp;of<br>
&nbsp;&nbsp;media&nbsp;object.&nbsp;Currently&nbsp;Google&nbsp;Photos&nbsp;supports&nbsp;these&nbsp;types:<br>
&nbsp;&nbsp;&nbsp;o&nbsp;image/bmp<br>
&nbsp;&nbsp;&nbsp;o&nbsp;image/gif<br>
&nbsp;&nbsp;&nbsp;o&nbsp;image/jpeg<br>
&nbsp;&nbsp;&nbsp;o&nbsp;image/png<br>
Images&nbsp;will&nbsp;be&nbsp;converted&nbsp;to&nbsp;jpeg&nbsp;on&nbsp;upload.&nbsp;Defaults&nbsp;to&nbsp;`image/jpeg'<br>
&nbsp;<br>
Returns:<br>
The&nbsp;modified&nbsp;gdata.photos.PhotoEntry<br>
&nbsp;<br>
Example:<br>
p&nbsp;=&nbsp;<a href="#PhotosService-GetFeed">GetFeed</a>(PhotoUri)<br>
p&nbsp;=&nbsp;<a href="#PhotosService-UpdatePhotoBlob">UpdatePhotoBlob</a>(p,&nbsp;'/tmp/newPic.jpg')<br>
&nbsp;<br>
It&nbsp;is&nbsp;important&nbsp;that&nbsp;you&nbsp;don't&nbsp;keep&nbsp;the&nbsp;old&nbsp;object&nbsp;around,&nbsp;once<br>
it&nbsp;has&nbsp;been&nbsp;updated.&nbsp;See<br>
<a href="http://code.google.com/apis/gdata/reference.html#Optimistic-concurrency">http://code.google.com/apis/gdata/reference.html#Optimistic-concurrency</a></tt></dd></dl>
<dl><dt><a name="PhotosService-UpdatePhotoMetadata"><strong>UpdatePhotoMetadata</strong></a>(self, photo)</dt><dd><tt>Update&nbsp;a&nbsp;photo's&nbsp;metadata.&nbsp;<br>
&nbsp;<br>
Needs&nbsp;authentication,&nbsp;see&nbsp;<a href="#PhotosService-ClientLogin">ClientLogin</a>()<br>
&nbsp;<br>
You&nbsp;can&nbsp;update&nbsp;any&nbsp;or&nbsp;all&nbsp;of&nbsp;the&nbsp;following&nbsp;metadata&nbsp;properties:<br>
&nbsp;*&nbsp;&lt;title&gt;<br>
&nbsp;*&nbsp;&lt;media:description&gt;<br>
&nbsp;*&nbsp;&lt;gphoto:checksum&gt;<br>
&nbsp;*&nbsp;&lt;gphoto:client&gt;<br>
&nbsp;*&nbsp;&lt;gphoto:rotation&gt;<br>
&nbsp;*&nbsp;&lt;gphoto:timestamp&gt;<br>
&nbsp;*&nbsp;&lt;gphoto:commentingEnabled&gt;<br>
&nbsp;<br>
&nbsp;Arguments:<br>
&nbsp;photo:&nbsp;a&nbsp;gdata.photos.PhotoEntry&nbsp;object&nbsp;with&nbsp;updated&nbsp;elements<br>
&nbsp;<br>
&nbsp;Returns:<br>
&nbsp;The&nbsp;modified&nbsp;gdata.photos.PhotoEntry<br>
&nbsp;<br>
&nbsp;Example:<br>
&nbsp;p&nbsp;=&nbsp;<a href="#PhotosService-GetFeed">GetFeed</a>(uri).entry[0]<br>
&nbsp;p.title.text&nbsp;=&nbsp;u'My&nbsp;new&nbsp;text'<br>
&nbsp;p.commentingEnabled.text&nbsp;=&nbsp;'false'<br>
&nbsp;p&nbsp;=&nbsp;<a href="#PhotosService-UpdatePhotoMetadata">UpdatePhotoMetadata</a>(p)<br>
&nbsp;<br>
&nbsp;It&nbsp;is&nbsp;important&nbsp;that&nbsp;you&nbsp;don't&nbsp;keep&nbsp;the&nbsp;old&nbsp;object&nbsp;around,&nbsp;once<br>
&nbsp;it&nbsp;has&nbsp;been&nbsp;updated.&nbsp;See<br>
&nbsp;<a href="http://code.google.com/apis/gdata/reference.html#Optimistic-concurrency">http://code.google.com/apis/gdata/reference.html#Optimistic-concurrency</a></tt></dd></dl>
<dl><dt><a name="PhotosService-__init__"><strong>__init__</strong></a>(self, email<font color="#909090">=None</font>, password<font color="#909090">=None</font>, source<font color="#909090">=None</font>, server<font color="#909090">='picasaweb.google.com'</font>, additional_headers<font color="#909090">=None</font>, **kwargs)</dt><dd><tt>Creates&nbsp;a&nbsp;client&nbsp;for&nbsp;the&nbsp;Google&nbsp;Photos&nbsp;service.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;email:&nbsp;string&nbsp;(optional)&nbsp;The&nbsp;user's&nbsp;email&nbsp;address,&nbsp;used&nbsp;for<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;authentication.<br>
&nbsp;&nbsp;password:&nbsp;string&nbsp;(optional)&nbsp;The&nbsp;user's&nbsp;password.<br>
&nbsp;&nbsp;source:&nbsp;string&nbsp;(optional)&nbsp;The&nbsp;name&nbsp;of&nbsp;the&nbsp;user's&nbsp;application.<br>
&nbsp;&nbsp;server:&nbsp;string&nbsp;(optional)&nbsp;The&nbsp;name&nbsp;of&nbsp;the&nbsp;server&nbsp;to&nbsp;which&nbsp;a&nbsp;connection<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;will&nbsp;be&nbsp;opened.&nbsp;Default&nbsp;value:&nbsp;'picasaweb.google.com'.<br>
&nbsp;&nbsp;**kwargs:&nbsp;The&nbsp;other&nbsp;parameters&nbsp;to&nbsp;pass&nbsp;to&nbsp;gdata.service.<a href="gdata.service.html#GDataService">GDataService</a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constructor.</tt></dd></dl>
<hr>
Data and other attributes defined here:<br>
<dl><dt><strong>ssl</strong> = True</dl>
<dl><dt><strong>userUri</strong> = '/data/feed/api/user/%s'</dl>
<hr>
Methods inherited from <a href="gdata.service.html#GDataService">gdata.service.GDataService</a>:<br>
<dl><dt><a name="PhotosService-AuthSubTokenInfo"><strong>AuthSubTokenInfo</strong></a>(self)</dt><dd><tt>Fetches&nbsp;the&nbsp;AuthSub&nbsp;token's&nbsp;metadata&nbsp;from&nbsp;the&nbsp;server.<br>
&nbsp;<br>
Raises:<br>
&nbsp;&nbsp;NonAuthSubToken&nbsp;if&nbsp;the&nbsp;user's&nbsp;auth&nbsp;token&nbsp;is&nbsp;not&nbsp;an&nbsp;AuthSub&nbsp;token</tt></dd></dl>
<dl><dt><a name="PhotosService-ClientLogin"><strong>ClientLogin</strong></a>(self, username, password, account_type<font color="#909090">=None</font>, service<font color="#909090">=None</font>, auth_service_url<font color="#909090">=None</font>, source<font color="#909090">=None</font>, captcha_token<font color="#909090">=None</font>, captcha_response<font color="#909090">=None</font>)</dt><dd><tt>Convenience&nbsp;method&nbsp;for&nbsp;authenticating&nbsp;using&nbsp;ProgrammaticLogin.&nbsp;<br>
&nbsp;<br>
Sets&nbsp;values&nbsp;for&nbsp;email,&nbsp;password,&nbsp;and&nbsp;other&nbsp;optional&nbsp;members.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;username:<br>
&nbsp;&nbsp;password:<br>
&nbsp;&nbsp;account_type:&nbsp;string&nbsp;(optional)<br>
&nbsp;&nbsp;service:&nbsp;string&nbsp;(optional)<br>
&nbsp;&nbsp;auth_service_url:&nbsp;string&nbsp;(optional)<br>
&nbsp;&nbsp;captcha_token:&nbsp;string&nbsp;(optional)<br>
&nbsp;&nbsp;captcha_response:&nbsp;string&nbsp;(optional)</tt></dd></dl>
<dl><dt><a name="PhotosService-FetchOAuthRequestToken"><strong>FetchOAuthRequestToken</strong></a>(self, scopes<font color="#909090">=None</font>, extra_parameters<font color="#909090">=None</font>, request_url<font color="#909090">='https://www.google.com/accounts/OAuthGetRequestToken'</font>, oauth_callback<font color="#909090">=None</font>)</dt><dd><tt>Fetches&nbsp;and&nbsp;sets&nbsp;the&nbsp;OAuth&nbsp;request&nbsp;token&nbsp;and&nbsp;returns&nbsp;it.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;scopes:&nbsp;string&nbsp;or&nbsp;list&nbsp;of&nbsp;string&nbsp;base&nbsp;URL(s)&nbsp;of&nbsp;the&nbsp;service(s)&nbsp;to&nbsp;be<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accessed.&nbsp;If&nbsp;None,&nbsp;then&nbsp;this&nbsp;method&nbsp;tries&nbsp;to&nbsp;determine&nbsp;the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scope(s)&nbsp;from&nbsp;the&nbsp;current&nbsp;service.<br>
&nbsp;&nbsp;extra_parameters:&nbsp;dict&nbsp;(optional)&nbsp;key-value&nbsp;pairs&nbsp;as&nbsp;any&nbsp;additional<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters&nbsp;to&nbsp;be&nbsp;included&nbsp;in&nbsp;the&nbsp;URL&nbsp;and&nbsp;signature&nbsp;while&nbsp;making&nbsp;a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request&nbsp;for&nbsp;fetching&nbsp;an&nbsp;OAuth&nbsp;request&nbsp;token.&nbsp;All&nbsp;the&nbsp;OAuth&nbsp;parameters<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;are&nbsp;added&nbsp;by&nbsp;default.&nbsp;But&nbsp;if&nbsp;provided&nbsp;through&nbsp;this&nbsp;argument,&nbsp;any<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default&nbsp;parameters&nbsp;will&nbsp;be&nbsp;overwritten.&nbsp;For&nbsp;e.g.&nbsp;a&nbsp;default&nbsp;parameter<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oauth_version&nbsp;1.0&nbsp;can&nbsp;be&nbsp;overwritten&nbsp;if<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extra_parameters&nbsp;=&nbsp;{'oauth_version':&nbsp;'2.0'}<br>
&nbsp;&nbsp;request_url:&nbsp;Request&nbsp;token&nbsp;URL.&nbsp;The&nbsp;default&nbsp;is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'https://www.google.com/accounts/OAuthGetRequestToken'.<br>
&nbsp;&nbsp;oauth_callback:&nbsp;str&nbsp;(optional)&nbsp;If&nbsp;set,&nbsp;it&nbsp;is&nbsp;assume&nbsp;the&nbsp;client&nbsp;is&nbsp;using<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;OAuth&nbsp;v1.0a&nbsp;protocol&nbsp;where&nbsp;the&nbsp;callback&nbsp;url&nbsp;is&nbsp;sent&nbsp;in&nbsp;the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request&nbsp;token&nbsp;step.&nbsp;&nbsp;If&nbsp;the&nbsp;oauth_callback&nbsp;is&nbsp;also&nbsp;set&nbsp;in<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;extra_params,&nbsp;this&nbsp;value&nbsp;will&nbsp;override&nbsp;that&nbsp;one.<br>
&nbsp;<br>
Returns:<br>
&nbsp;&nbsp;The&nbsp;fetched&nbsp;request&nbsp;token&nbsp;as&nbsp;a&nbsp;gdata.auth.OAuthToken&nbsp;object.<br>
&nbsp;<br>
Raises:<br>
&nbsp;&nbsp;FetchingOAuthRequestTokenFailed&nbsp;if&nbsp;the&nbsp;server&nbsp;responded&nbsp;to&nbsp;the&nbsp;request<br>
&nbsp;&nbsp;with&nbsp;an&nbsp;error.</tt></dd></dl>
<dl><dt><a name="PhotosService-GenerateAuthSubURL"><strong>GenerateAuthSubURL</strong></a>(self, next, scope, secure<font color="#909090">=False</font>, session<font color="#909090">=True</font>, domain<font color="#909090">='default'</font>)</dt><dd><tt>Generate&nbsp;a&nbsp;URL&nbsp;at&nbsp;which&nbsp;the&nbsp;user&nbsp;will&nbsp;login&nbsp;and&nbsp;be&nbsp;redirected&nbsp;back.<br>
&nbsp;<br>
Users&nbsp;enter&nbsp;their&nbsp;credentials&nbsp;on&nbsp;a&nbsp;Google&nbsp;login&nbsp;page&nbsp;and&nbsp;a&nbsp;token&nbsp;is&nbsp;sent<br>
to&nbsp;the&nbsp;URL&nbsp;specified&nbsp;in&nbsp;next.&nbsp;See&nbsp;documentation&nbsp;for&nbsp;AuthSub&nbsp;login&nbsp;at:<br>
<a href="http://code.google.com/apis/accounts/docs/AuthSub.html">http://code.google.com/apis/accounts/docs/AuthSub.html</a><br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;next:&nbsp;string&nbsp;The&nbsp;URL&nbsp;user&nbsp;will&nbsp;be&nbsp;sent&nbsp;to&nbsp;after&nbsp;logging&nbsp;in.<br>
&nbsp;&nbsp;scope:&nbsp;string&nbsp;or&nbsp;list&nbsp;of&nbsp;strings.&nbsp;The&nbsp;URLs&nbsp;of&nbsp;the&nbsp;services&nbsp;to&nbsp;be&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;accessed.<br>
&nbsp;&nbsp;secure:&nbsp;boolean&nbsp;(optional)&nbsp;Determines&nbsp;whether&nbsp;or&nbsp;not&nbsp;the&nbsp;issued&nbsp;token<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;a&nbsp;secure&nbsp;token.<br>
&nbsp;&nbsp;session:&nbsp;boolean&nbsp;(optional)&nbsp;Determines&nbsp;whether&nbsp;or&nbsp;not&nbsp;the&nbsp;issued&nbsp;token<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;can&nbsp;be&nbsp;upgraded&nbsp;to&nbsp;a&nbsp;session&nbsp;token.</tt></dd></dl>
<dl><dt><a name="PhotosService-GenerateOAuthAuthorizationURL"><strong>GenerateOAuthAuthorizationURL</strong></a>(self, request_token<font color="#909090">=None</font>, callback_url<font color="#909090">=None</font>, extra_params<font color="#909090">=None</font>, include_scopes_in_callback<font color="#909090">=False</font>, scopes_param_prefix<font color="#909090">='oauth_token_scope'</font>, request_url<font color="#909090">='https://www.google.com/accounts/OAuthAuthorizeToken'</font>)</dt><dd><tt>Generates&nbsp;URL&nbsp;at&nbsp;which&nbsp;user&nbsp;will&nbsp;login&nbsp;to&nbsp;authorize&nbsp;the&nbsp;request&nbsp;token.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;request_token:&nbsp;gdata.auth.OAuthToken&nbsp;(optional)&nbsp;OAuth&nbsp;request&nbsp;token.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;not&nbsp;specified,&nbsp;then&nbsp;the&nbsp;current&nbsp;token&nbsp;will&nbsp;be&nbsp;used&nbsp;if&nbsp;it&nbsp;is&nbsp;of<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;&lt;gdata.auth.OAuthToken&gt;,&nbsp;else&nbsp;it&nbsp;is&nbsp;found&nbsp;by&nbsp;looking&nbsp;in&nbsp;the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;token_store&nbsp;by&nbsp;looking&nbsp;for&nbsp;a&nbsp;token&nbsp;for&nbsp;the&nbsp;current&nbsp;scope.&nbsp;&nbsp;&nbsp;&nbsp;<br>
&nbsp;&nbsp;callback_url:&nbsp;string&nbsp;(optional)&nbsp;The&nbsp;URL&nbsp;user&nbsp;will&nbsp;be&nbsp;sent&nbsp;to&nbsp;after<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logging&nbsp;in&nbsp;and&nbsp;granting&nbsp;access.<br>
&nbsp;&nbsp;extra_params:&nbsp;dict&nbsp;(optional)&nbsp;Additional&nbsp;parameters&nbsp;to&nbsp;be&nbsp;sent.<br>
&nbsp;&nbsp;include_scopes_in_callback:&nbsp;Boolean&nbsp;(default=False)&nbsp;if&nbsp;set&nbsp;to&nbsp;True,&nbsp;and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;'callback_url'&nbsp;is&nbsp;present,&nbsp;the&nbsp;'callback_url'&nbsp;will&nbsp;be&nbsp;modified&nbsp;to<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;the&nbsp;scope(s)&nbsp;from&nbsp;the&nbsp;request&nbsp;token&nbsp;as&nbsp;a&nbsp;URL&nbsp;parameter.&nbsp;The<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;key&nbsp;for&nbsp;the&nbsp;'callback'&nbsp;URL's&nbsp;scope&nbsp;parameter&nbsp;will&nbsp;be<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OAUTH_SCOPE_URL_PARAM_NAME.&nbsp;The&nbsp;benefit&nbsp;of&nbsp;including&nbsp;the&nbsp;scope&nbsp;URL&nbsp;as<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;parameter&nbsp;to&nbsp;the&nbsp;'callback'&nbsp;URL,&nbsp;is&nbsp;that&nbsp;the&nbsp;page&nbsp;which&nbsp;receives<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;OAuth&nbsp;token&nbsp;will&nbsp;be&nbsp;able&nbsp;to&nbsp;tell&nbsp;which&nbsp;URLs&nbsp;the&nbsp;token&nbsp;grants<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;access&nbsp;to.<br>
&nbsp;&nbsp;scopes_param_prefix:&nbsp;string&nbsp;(default='oauth_token_scope')&nbsp;The&nbsp;URL<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameter&nbsp;key&nbsp;which&nbsp;maps&nbsp;to&nbsp;the&nbsp;list&nbsp;of&nbsp;valid&nbsp;scopes&nbsp;for&nbsp;the&nbsp;token.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;URL&nbsp;parameter&nbsp;will&nbsp;be&nbsp;included&nbsp;in&nbsp;the&nbsp;callback&nbsp;URL&nbsp;along&nbsp;with<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;scopes&nbsp;of&nbsp;the&nbsp;token&nbsp;as&nbsp;value&nbsp;if&nbsp;include_scopes_in_callback=True.<br>
&nbsp;&nbsp;request_url:&nbsp;Authorization&nbsp;URL.&nbsp;The&nbsp;default&nbsp;is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'https://www.google.com/accounts/OAuthAuthorizeToken'.<br>
Returns:<br>
&nbsp;&nbsp;A&nbsp;string&nbsp;URL&nbsp;at&nbsp;which&nbsp;the&nbsp;user&nbsp;is&nbsp;required&nbsp;to&nbsp;login.<br>
&nbsp;<br>
Raises:<br>
&nbsp;&nbsp;NonOAuthToken&nbsp;if&nbsp;the&nbsp;user's&nbsp;request&nbsp;token&nbsp;is&nbsp;not&nbsp;an&nbsp;OAuth&nbsp;token&nbsp;or&nbsp;if&nbsp;a<br>
&nbsp;&nbsp;request&nbsp;token&nbsp;was&nbsp;not&nbsp;available.</tt></dd></dl>
<dl><dt><a name="PhotosService-Get"><strong>Get</strong></a>(self, uri, extra_headers<font color="#909090">=None</font>, redirects_remaining<font color="#909090">=4</font>, encoding<font color="#909090">='UTF-8'</font>, converter<font color="#909090">=None</font>)</dt><dd><tt>Query&nbsp;the&nbsp;GData&nbsp;API&nbsp;with&nbsp;the&nbsp;given&nbsp;URI<br>
&nbsp;<br>
The&nbsp;uri&nbsp;is&nbsp;the&nbsp;portion&nbsp;of&nbsp;the&nbsp;URI&nbsp;after&nbsp;the&nbsp;server&nbsp;value&nbsp;<br>
(ex:&nbsp;www.google.com).<br>
&nbsp;<br>
To&nbsp;perform&nbsp;a&nbsp;query&nbsp;against&nbsp;Google&nbsp;Base,&nbsp;set&nbsp;the&nbsp;server&nbsp;to&nbsp;<br>
'base.google.com'&nbsp;and&nbsp;set&nbsp;the&nbsp;uri&nbsp;to&nbsp;'/base/feeds/...',&nbsp;where&nbsp;...&nbsp;is&nbsp;<br>
your&nbsp;query.&nbsp;For&nbsp;example,&nbsp;to&nbsp;find&nbsp;snippets&nbsp;for&nbsp;all&nbsp;digital&nbsp;cameras&nbsp;uri&nbsp;<br>
should&nbsp;be&nbsp;set&nbsp;to:&nbsp;'/base/feeds/snippets?bq=digital+camera'<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;uri:&nbsp;string&nbsp;The&nbsp;query&nbsp;in&nbsp;the&nbsp;form&nbsp;of&nbsp;a&nbsp;URI.&nbsp;Example:<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'/base/feeds/snippets?bq=digital+camera'.<br>
&nbsp;&nbsp;extra_headers:&nbsp;dictionary&nbsp;(optional)&nbsp;Extra&nbsp;HTTP&nbsp;headers&nbsp;to&nbsp;be&nbsp;included<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;the&nbsp;GET&nbsp;request.&nbsp;These&nbsp;headers&nbsp;are&nbsp;in&nbsp;addition&nbsp;to&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;those&nbsp;stored&nbsp;in&nbsp;the&nbsp;client's&nbsp;additional_headers&nbsp;property.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;client&nbsp;automatically&nbsp;sets&nbsp;the&nbsp;Content-Type&nbsp;and&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Authorization&nbsp;headers.<br>
&nbsp;&nbsp;redirects_remaining:&nbsp;int&nbsp;(optional)&nbsp;Tracks&nbsp;the&nbsp;number&nbsp;of&nbsp;additional<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redirects&nbsp;this&nbsp;method&nbsp;will&nbsp;allow.&nbsp;If&nbsp;the&nbsp;service&nbsp;object&nbsp;receives<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;redirect&nbsp;and&nbsp;remaining&nbsp;is&nbsp;0,&nbsp;it&nbsp;will&nbsp;not&nbsp;follow&nbsp;the&nbsp;redirect.&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;was&nbsp;added&nbsp;to&nbsp;avoid&nbsp;infinite&nbsp;redirect&nbsp;loops.<br>
&nbsp;&nbsp;encoding:&nbsp;string&nbsp;(optional)&nbsp;The&nbsp;character&nbsp;encoding&nbsp;for&nbsp;the&nbsp;server's<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.&nbsp;Default&nbsp;is&nbsp;UTF-8<br>
&nbsp;&nbsp;converter:&nbsp;func&nbsp;(optional)&nbsp;A&nbsp;function&nbsp;which&nbsp;will&nbsp;transform<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;server's&nbsp;results&nbsp;before&nbsp;it&nbsp;is&nbsp;returned.&nbsp;Example:&nbsp;use&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GDataFeedFromString&nbsp;to&nbsp;parse&nbsp;the&nbsp;server&nbsp;response&nbsp;as&nbsp;if&nbsp;it<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;were&nbsp;a&nbsp;GDataFeed.<br>
&nbsp;<br>
Returns:<br>
&nbsp;&nbsp;If&nbsp;there&nbsp;is&nbsp;no&nbsp;ResultsTransformer&nbsp;specified&nbsp;in&nbsp;the&nbsp;call,&nbsp;a&nbsp;GDataFeed&nbsp;<br>
&nbsp;&nbsp;or&nbsp;GDataEntry&nbsp;depending&nbsp;on&nbsp;which&nbsp;is&nbsp;sent&nbsp;from&nbsp;the&nbsp;server.&nbsp;If&nbsp;the&nbsp;<br>
&nbsp;&nbsp;response&nbsp;is&nbsp;niether&nbsp;a&nbsp;feed&nbsp;or&nbsp;entry&nbsp;and&nbsp;there&nbsp;is&nbsp;no&nbsp;ResultsTransformer,<br>
&nbsp;&nbsp;return&nbsp;a&nbsp;string.&nbsp;If&nbsp;there&nbsp;is&nbsp;a&nbsp;ResultsTransformer,&nbsp;the&nbsp;returned&nbsp;value&nbsp;<br>
&nbsp;&nbsp;will&nbsp;be&nbsp;that&nbsp;of&nbsp;the&nbsp;ResultsTransformer&nbsp;function.</tt></dd></dl>
<dl><dt><a name="PhotosService-GetAuthSubToken"><strong>GetAuthSubToken</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;AuthSub&nbsp;token&nbsp;as&nbsp;a&nbsp;string.<br>
&nbsp;<br>
If&nbsp;the&nbsp;token&nbsp;is&nbsp;an&nbsp;gdta.auth.AuthSubToken,&nbsp;the&nbsp;Authorization&nbsp;Label<br>
("AuthSub&nbsp;token")&nbsp;is&nbsp;removed.<br>
&nbsp;<br>
This&nbsp;method&nbsp;examines&nbsp;the&nbsp;current_token&nbsp;to&nbsp;see&nbsp;if&nbsp;it&nbsp;is&nbsp;an&nbsp;AuthSubToken<br>
or&nbsp;SecureAuthSubToken.&nbsp;If&nbsp;not,&nbsp;it&nbsp;searches&nbsp;the&nbsp;token_store&nbsp;for&nbsp;a&nbsp;token<br>
which&nbsp;matches&nbsp;the&nbsp;current&nbsp;scope.<br>
&nbsp;<br>
The&nbsp;current&nbsp;scope&nbsp;is&nbsp;determined&nbsp;by&nbsp;the&nbsp;service&nbsp;name&nbsp;string&nbsp;member.<br>
&nbsp;<br>
Returns:<br>
&nbsp;&nbsp;If&nbsp;the&nbsp;current_token&nbsp;is&nbsp;set&nbsp;to&nbsp;an&nbsp;AuthSubToken/SecureAuthSubToken,<br>
&nbsp;&nbsp;return&nbsp;the&nbsp;token&nbsp;string.&nbsp;If&nbsp;there&nbsp;is&nbsp;no&nbsp;current_token,&nbsp;a&nbsp;token&nbsp;string<br>
&nbsp;&nbsp;for&nbsp;a&nbsp;token&nbsp;which&nbsp;matches&nbsp;the&nbsp;service&nbsp;object's&nbsp;default&nbsp;scope&nbsp;is&nbsp;returned.<br>
&nbsp;&nbsp;If&nbsp;there&nbsp;are&nbsp;no&nbsp;tokens&nbsp;valid&nbsp;for&nbsp;the&nbsp;scope,&nbsp;returns&nbsp;None.</tt></dd></dl>
<dl><dt><a name="PhotosService-GetClientLoginToken"><strong>GetClientLoginToken</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;token&nbsp;string&nbsp;for&nbsp;the&nbsp;current&nbsp;token&nbsp;or&nbsp;a&nbsp;token&nbsp;matching&nbsp;the&nbsp;<br>
service&nbsp;scope.<br>
&nbsp;<br>
If&nbsp;the&nbsp;current_token&nbsp;is&nbsp;a&nbsp;ClientLoginToken,&nbsp;the&nbsp;token&nbsp;string&nbsp;for&nbsp;<br>
the&nbsp;current&nbsp;token&nbsp;is&nbsp;returned.&nbsp;If&nbsp;the&nbsp;current_token&nbsp;is&nbsp;not&nbsp;set,&nbsp;this&nbsp;method<br>
searches&nbsp;for&nbsp;a&nbsp;token&nbsp;in&nbsp;the&nbsp;token_store&nbsp;which&nbsp;is&nbsp;valid&nbsp;for&nbsp;the&nbsp;service&nbsp;<br>
object's&nbsp;current&nbsp;scope.<br>
&nbsp;<br>
The&nbsp;current&nbsp;scope&nbsp;is&nbsp;determined&nbsp;by&nbsp;the&nbsp;service&nbsp;name&nbsp;string&nbsp;member.<br>
The&nbsp;token&nbsp;string&nbsp;is&nbsp;the&nbsp;end&nbsp;of&nbsp;the&nbsp;Authorization&nbsp;header,&nbsp;it&nbsp;doesn&nbsp;not<br>
include&nbsp;the&nbsp;ClientLogin&nbsp;label.</tt></dd></dl>
<dl><dt><a name="PhotosService-GetGeneratorFromLinkFinder"><strong>GetGeneratorFromLinkFinder</strong></a>(self, link_finder, func, num_retries<font color="#909090">=3</font>, delay<font color="#909090">=1</font>, backoff<font color="#909090">=2</font>)</dt><dd><tt>returns&nbsp;a&nbsp;generator&nbsp;for&nbsp;pagination</tt></dd></dl>
<dl><dt><a name="PhotosService-GetMedia"><strong>GetMedia</strong></a>(self, uri, extra_headers<font color="#909090">=None</font>)</dt><dd><tt>Returns&nbsp;a&nbsp;MediaSource&nbsp;containing&nbsp;media&nbsp;and&nbsp;its&nbsp;metadata&nbsp;from&nbsp;the&nbsp;given<br>
URI&nbsp;string.</tt></dd></dl>
<dl><dt><a name="PhotosService-GetNext"><strong>GetNext</strong></a>(self, feed)</dt><dd><tt>Requests&nbsp;the&nbsp;next&nbsp;'page'&nbsp;of&nbsp;results&nbsp;in&nbsp;the&nbsp;feed.<br>
&nbsp;<br>
This&nbsp;method&nbsp;uses&nbsp;the&nbsp;feed's&nbsp;next&nbsp;link&nbsp;to&nbsp;request&nbsp;an&nbsp;additional&nbsp;feed<br>
and&nbsp;uses&nbsp;the&nbsp;class&nbsp;of&nbsp;the&nbsp;feed&nbsp;to&nbsp;convert&nbsp;the&nbsp;results&nbsp;of&nbsp;the&nbsp;GET&nbsp;request.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;feed:&nbsp;atom.Feed&nbsp;or&nbsp;a&nbsp;subclass.&nbsp;The&nbsp;feed&nbsp;should&nbsp;contain&nbsp;a&nbsp;next&nbsp;link&nbsp;and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;type&nbsp;of&nbsp;the&nbsp;feed&nbsp;will&nbsp;be&nbsp;applied&nbsp;to&nbsp;the&nbsp;results&nbsp;from&nbsp;the&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server.&nbsp;The&nbsp;new&nbsp;feed&nbsp;which&nbsp;is&nbsp;returned&nbsp;will&nbsp;be&nbsp;of&nbsp;the&nbsp;same&nbsp;class<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;as&nbsp;this&nbsp;feed&nbsp;which&nbsp;was&nbsp;passed&nbsp;in.<br>
&nbsp;<br>
Returns:<br>
&nbsp;&nbsp;A&nbsp;new&nbsp;feed&nbsp;representing&nbsp;the&nbsp;next&nbsp;set&nbsp;of&nbsp;results&nbsp;in&nbsp;the&nbsp;server's&nbsp;feed.<br>
&nbsp;&nbsp;The&nbsp;type&nbsp;of&nbsp;this&nbsp;feed&nbsp;will&nbsp;match&nbsp;that&nbsp;of&nbsp;the&nbsp;feed&nbsp;argument.</tt></dd></dl>
<dl><dt><a name="PhotosService-GetOAuthInputParameters"><strong>GetOAuthInputParameters</strong></a>(self)</dt></dl>
<dl><dt><a name="PhotosService-GetWithRetries"><strong>GetWithRetries</strong></a>(self, uri, extra_headers<font color="#909090">=None</font>, redirects_remaining<font color="#909090">=4</font>, encoding<font color="#909090">='UTF-8'</font>, converter<font color="#909090">=None</font>, num_retries<font color="#909090">=3</font>, delay<font color="#909090">=1</font>, backoff<font color="#909090">=2</font>, logger<font color="#909090">=None</font>)</dt><dd><tt>This&nbsp;is&nbsp;a&nbsp;wrapper&nbsp;method&nbsp;for&nbsp;Get&nbsp;with&nbsp;retrying&nbsp;capability.<br>
&nbsp;<br>
To&nbsp;avoid&nbsp;various&nbsp;errors&nbsp;while&nbsp;retrieving&nbsp;bulk&nbsp;entities&nbsp;by&nbsp;retrying<br>
specified&nbsp;times.<br>
&nbsp;<br>
Note&nbsp;this&nbsp;method&nbsp;relies&nbsp;on&nbsp;the&nbsp;time&nbsp;module&nbsp;and&nbsp;so&nbsp;may&nbsp;not&nbsp;be&nbsp;usable<br>
by&nbsp;default&nbsp;in&nbsp;Python2.2.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;num_retries:&nbsp;Integer;&nbsp;the&nbsp;retry&nbsp;count.<br>
&nbsp;&nbsp;delay:&nbsp;Integer;&nbsp;the&nbsp;initial&nbsp;delay&nbsp;for&nbsp;retrying.<br>
&nbsp;&nbsp;backoff:&nbsp;Integer;&nbsp;how&nbsp;much&nbsp;the&nbsp;delay&nbsp;should&nbsp;lengthen&nbsp;after&nbsp;each&nbsp;failure.<br>
&nbsp;&nbsp;logger:&nbsp;An&nbsp;object&nbsp;which&nbsp;has&nbsp;a&nbsp;<a href="#PhotosService-debug">debug</a>(str)&nbsp;method&nbsp;to&nbsp;receive&nbsp;logging<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;messages.&nbsp;Recommended&nbsp;that&nbsp;you&nbsp;pass&nbsp;in&nbsp;the&nbsp;logging&nbsp;module.<br>
Raises:<br>
&nbsp;&nbsp;ValueError&nbsp;if&nbsp;any&nbsp;of&nbsp;the&nbsp;parameters&nbsp;has&nbsp;an&nbsp;invalid&nbsp;value.<br>
&nbsp;&nbsp;RanOutOfTries&nbsp;on&nbsp;failure&nbsp;after&nbsp;number&nbsp;of&nbsp;retries.</tt></dd></dl>
<dl><dt><a name="PhotosService-Post"><strong>Post</strong></a>(self, data, uri, extra_headers<font color="#909090">=None</font>, url_params<font color="#909090">=None</font>, escape_params<font color="#909090">=True</font>, redirects_remaining<font color="#909090">=4</font>, media_source<font color="#909090">=None</font>, converter<font color="#909090">=None</font>)</dt><dd><tt>Insert&nbsp;or&nbsp;update&nbsp;&nbsp;data&nbsp;into&nbsp;a&nbsp;GData&nbsp;service&nbsp;at&nbsp;the&nbsp;given&nbsp;URI.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;data:&nbsp;string,&nbsp;ElementTree._Element,&nbsp;atom.Entry,&nbsp;or&nbsp;gdata.GDataEntry&nbsp;The<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XML&nbsp;to&nbsp;be&nbsp;sent&nbsp;to&nbsp;the&nbsp;uri.<br>
&nbsp;&nbsp;uri:&nbsp;string&nbsp;The&nbsp;location&nbsp;(feed)&nbsp;to&nbsp;which&nbsp;the&nbsp;data&nbsp;should&nbsp;be&nbsp;inserted.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Example:&nbsp;'/base/feeds/items'.<br>
&nbsp;&nbsp;extra_headers:&nbsp;dict&nbsp;(optional)&nbsp;HTTP&nbsp;headers&nbsp;which&nbsp;are&nbsp;to&nbsp;be&nbsp;included.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;client&nbsp;automatically&nbsp;sets&nbsp;the&nbsp;Content-Type,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Authorization,&nbsp;and&nbsp;Content-Length&nbsp;headers.<br>
&nbsp;&nbsp;url_params:&nbsp;dict&nbsp;(optional)&nbsp;Additional&nbsp;URL&nbsp;parameters&nbsp;to&nbsp;be&nbsp;included<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;the&nbsp;URI.&nbsp;These&nbsp;are&nbsp;translated&nbsp;into&nbsp;query&nbsp;arguments<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;the&nbsp;form&nbsp;'&amp;dict_key=value&amp;...'.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Example:&nbsp;{'max-results':&nbsp;'250'}&nbsp;becomes&nbsp;&amp;max-results=250<br>
&nbsp;&nbsp;escape_params:&nbsp;boolean&nbsp;(optional)&nbsp;If&nbsp;false,&nbsp;the&nbsp;calling&nbsp;code&nbsp;has&nbsp;already<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ensured&nbsp;that&nbsp;the&nbsp;query&nbsp;will&nbsp;form&nbsp;a&nbsp;valid&nbsp;URL&nbsp;(all<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reserved&nbsp;characters&nbsp;have&nbsp;been&nbsp;escaped).&nbsp;If&nbsp;true,&nbsp;this<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method&nbsp;will&nbsp;escape&nbsp;the&nbsp;query&nbsp;and&nbsp;any&nbsp;URL&nbsp;parameters<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;provided.<br>
&nbsp;&nbsp;media_source:&nbsp;MediaSource&nbsp;(optional)&nbsp;Container&nbsp;for&nbsp;the&nbsp;media&nbsp;to&nbsp;be&nbsp;sent<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;along&nbsp;with&nbsp;the&nbsp;entry,&nbsp;if&nbsp;provided.<br>
&nbsp;&nbsp;converter:&nbsp;func&nbsp;(optional)&nbsp;A&nbsp;function&nbsp;which&nbsp;will&nbsp;be&nbsp;executed&nbsp;on&nbsp;the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server's&nbsp;response.&nbsp;Often&nbsp;this&nbsp;is&nbsp;a&nbsp;function&nbsp;like<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GDataEntryFromString&nbsp;which&nbsp;will&nbsp;parse&nbsp;the&nbsp;body&nbsp;of&nbsp;the&nbsp;server's<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;and&nbsp;return&nbsp;a&nbsp;GDataEntry.<br>
&nbsp;<br>
Returns:<br>
&nbsp;&nbsp;If&nbsp;the&nbsp;post&nbsp;succeeded,&nbsp;this&nbsp;method&nbsp;will&nbsp;return&nbsp;a&nbsp;GDataFeed,&nbsp;GDataEntry,<br>
&nbsp;&nbsp;or&nbsp;the&nbsp;results&nbsp;of&nbsp;running&nbsp;converter&nbsp;on&nbsp;the&nbsp;server's&nbsp;result&nbsp;body&nbsp;(if<br>
&nbsp;&nbsp;converter&nbsp;was&nbsp;specified).</tt></dd></dl>
<dl><dt><a name="PhotosService-PostOrPut"><strong>PostOrPut</strong></a>(self, verb, data, uri, extra_headers<font color="#909090">=None</font>, url_params<font color="#909090">=None</font>, escape_params<font color="#909090">=True</font>, redirects_remaining<font color="#909090">=4</font>, media_source<font color="#909090">=None</font>, converter<font color="#909090">=None</font>)</dt><dd><tt>Insert&nbsp;data&nbsp;into&nbsp;a&nbsp;GData&nbsp;service&nbsp;at&nbsp;the&nbsp;given&nbsp;URI.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;verb:&nbsp;string,&nbsp;either&nbsp;'POST'&nbsp;or&nbsp;'PUT'<br>
&nbsp;&nbsp;data:&nbsp;string,&nbsp;ElementTree._Element,&nbsp;atom.Entry,&nbsp;or&nbsp;gdata.GDataEntry&nbsp;The<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XML&nbsp;to&nbsp;be&nbsp;sent&nbsp;to&nbsp;the&nbsp;uri.&nbsp;<br>
&nbsp;&nbsp;uri:&nbsp;string&nbsp;The&nbsp;location&nbsp;(feed)&nbsp;to&nbsp;which&nbsp;the&nbsp;data&nbsp;should&nbsp;be&nbsp;inserted.&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Example:&nbsp;'/base/feeds/items'.&nbsp;<br>
&nbsp;&nbsp;extra_headers:&nbsp;dict&nbsp;(optional)&nbsp;HTTP&nbsp;headers&nbsp;which&nbsp;are&nbsp;to&nbsp;be&nbsp;included.&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;client&nbsp;automatically&nbsp;sets&nbsp;the&nbsp;Content-Type,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Authorization,&nbsp;and&nbsp;Content-Length&nbsp;headers.<br>
&nbsp;&nbsp;url_params:&nbsp;dict&nbsp;(optional)&nbsp;Additional&nbsp;URL&nbsp;parameters&nbsp;to&nbsp;be&nbsp;included<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;the&nbsp;URI.&nbsp;These&nbsp;are&nbsp;translated&nbsp;into&nbsp;query&nbsp;arguments<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;the&nbsp;form&nbsp;'&amp;dict_key=value&amp;...'.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Example:&nbsp;{'max-results':&nbsp;'250'}&nbsp;becomes&nbsp;&amp;max-results=250<br>
&nbsp;&nbsp;escape_params:&nbsp;boolean&nbsp;(optional)&nbsp;If&nbsp;false,&nbsp;the&nbsp;calling&nbsp;code&nbsp;has&nbsp;already<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ensured&nbsp;that&nbsp;the&nbsp;query&nbsp;will&nbsp;form&nbsp;a&nbsp;valid&nbsp;URL&nbsp;(all<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reserved&nbsp;characters&nbsp;have&nbsp;been&nbsp;escaped).&nbsp;If&nbsp;true,&nbsp;this<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method&nbsp;will&nbsp;escape&nbsp;the&nbsp;query&nbsp;and&nbsp;any&nbsp;URL&nbsp;parameters<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;provided.<br>
&nbsp;&nbsp;media_source:&nbsp;MediaSource&nbsp;(optional)&nbsp;Container&nbsp;for&nbsp;the&nbsp;media&nbsp;to&nbsp;be&nbsp;sent<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;along&nbsp;with&nbsp;the&nbsp;entry,&nbsp;if&nbsp;provided.<br>
&nbsp;&nbsp;converter:&nbsp;func&nbsp;(optional)&nbsp;A&nbsp;function&nbsp;which&nbsp;will&nbsp;be&nbsp;executed&nbsp;on&nbsp;the&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server's&nbsp;response.&nbsp;Often&nbsp;this&nbsp;is&nbsp;a&nbsp;function&nbsp;like&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GDataEntryFromString&nbsp;which&nbsp;will&nbsp;parse&nbsp;the&nbsp;body&nbsp;of&nbsp;the&nbsp;server's&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;and&nbsp;return&nbsp;a&nbsp;GDataEntry.<br>
&nbsp;<br>
Returns:<br>
&nbsp;&nbsp;If&nbsp;the&nbsp;post&nbsp;succeeded,&nbsp;this&nbsp;method&nbsp;will&nbsp;return&nbsp;a&nbsp;GDataFeed,&nbsp;GDataEntry,<br>
&nbsp;&nbsp;or&nbsp;the&nbsp;results&nbsp;of&nbsp;running&nbsp;converter&nbsp;on&nbsp;the&nbsp;server's&nbsp;result&nbsp;body&nbsp;(if<br>
&nbsp;&nbsp;converter&nbsp;was&nbsp;specified).</tt></dd></dl>
<dl><dt><a name="PhotosService-ProgrammaticLogin"><strong>ProgrammaticLogin</strong></a>(self, captcha_token<font color="#909090">=None</font>, captcha_response<font color="#909090">=None</font>)</dt><dd><tt>Authenticates&nbsp;the&nbsp;user&nbsp;and&nbsp;sets&nbsp;the&nbsp;GData&nbsp;Auth&nbsp;token.<br>
&nbsp;<br>
Login&nbsp;retreives&nbsp;a&nbsp;temporary&nbsp;auth&nbsp;token&nbsp;which&nbsp;must&nbsp;be&nbsp;used&nbsp;with&nbsp;all<br>
requests&nbsp;to&nbsp;GData&nbsp;services.&nbsp;The&nbsp;auth&nbsp;token&nbsp;is&nbsp;stored&nbsp;in&nbsp;the&nbsp;GData&nbsp;client<br>
object.<br>
&nbsp;<br>
Login&nbsp;is&nbsp;also&nbsp;used&nbsp;to&nbsp;respond&nbsp;to&nbsp;a&nbsp;captcha&nbsp;challenge.&nbsp;If&nbsp;the&nbsp;user's&nbsp;login<br>
attempt&nbsp;failed&nbsp;with&nbsp;a&nbsp;CaptchaRequired&nbsp;error,&nbsp;the&nbsp;user&nbsp;can&nbsp;respond&nbsp;by<br>
calling&nbsp;Login&nbsp;with&nbsp;the&nbsp;captcha&nbsp;token&nbsp;and&nbsp;the&nbsp;answer&nbsp;to&nbsp;the&nbsp;challenge.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;captcha_token:&nbsp;string&nbsp;(optional)&nbsp;The&nbsp;identifier&nbsp;for&nbsp;the&nbsp;captcha&nbsp;challenge<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;which&nbsp;was&nbsp;presented&nbsp;to&nbsp;the&nbsp;user.<br>
&nbsp;&nbsp;captcha_response:&nbsp;string&nbsp;(optional)&nbsp;The&nbsp;user's&nbsp;answer&nbsp;to&nbsp;the&nbsp;captch&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;challenge.<br>
&nbsp;<br>
Raises:<br>
&nbsp;&nbsp;CaptchaRequired&nbsp;if&nbsp;the&nbsp;login&nbsp;service&nbsp;will&nbsp;require&nbsp;a&nbsp;captcha&nbsp;response<br>
&nbsp;&nbsp;BadAuthentication&nbsp;if&nbsp;the&nbsp;login&nbsp;service&nbsp;rejected&nbsp;the&nbsp;username&nbsp;or&nbsp;password<br>
&nbsp;&nbsp;Error&nbsp;if&nbsp;the&nbsp;login&nbsp;service&nbsp;responded&nbsp;with&nbsp;a&nbsp;403&nbsp;different&nbsp;from&nbsp;the&nbsp;above</tt></dd></dl>
<dl><dt><a name="PhotosService-Put"><strong>Put</strong></a>(self, data, uri, extra_headers<font color="#909090">=None</font>, url_params<font color="#909090">=None</font>, escape_params<font color="#909090">=True</font>, redirects_remaining<font color="#909090">=3</font>, media_source<font color="#909090">=None</font>, converter<font color="#909090">=None</font>)</dt><dd><tt>Updates&nbsp;an&nbsp;entry&nbsp;at&nbsp;the&nbsp;given&nbsp;URI.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;data:&nbsp;string,&nbsp;ElementTree._Element,&nbsp;or&nbsp;xml_wrapper.ElementWrapper&nbsp;The&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XML&nbsp;containing&nbsp;the&nbsp;updated&nbsp;data.<br>
&nbsp;&nbsp;uri:&nbsp;string&nbsp;A&nbsp;URI&nbsp;indicating&nbsp;entry&nbsp;to&nbsp;which&nbsp;the&nbsp;update&nbsp;will&nbsp;be&nbsp;applied.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Example:&nbsp;'/base/feeds/items/ITEM-ID'<br>
&nbsp;&nbsp;extra_headers:&nbsp;dict&nbsp;(optional)&nbsp;HTTP&nbsp;headers&nbsp;which&nbsp;are&nbsp;to&nbsp;be&nbsp;included.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;client&nbsp;automatically&nbsp;sets&nbsp;the&nbsp;Content-Type,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Authorization,&nbsp;and&nbsp;Content-Length&nbsp;headers.<br>
&nbsp;&nbsp;url_params:&nbsp;dict&nbsp;(optional)&nbsp;Additional&nbsp;URL&nbsp;parameters&nbsp;to&nbsp;be&nbsp;included<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;the&nbsp;URI.&nbsp;These&nbsp;are&nbsp;translated&nbsp;into&nbsp;query&nbsp;arguments<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in&nbsp;the&nbsp;form&nbsp;'&amp;dict_key=value&amp;...'.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Example:&nbsp;{'max-results':&nbsp;'250'}&nbsp;becomes&nbsp;&amp;max-results=250<br>
&nbsp;&nbsp;escape_params:&nbsp;boolean&nbsp;(optional)&nbsp;If&nbsp;false,&nbsp;the&nbsp;calling&nbsp;code&nbsp;has&nbsp;already<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ensured&nbsp;that&nbsp;the&nbsp;query&nbsp;will&nbsp;form&nbsp;a&nbsp;valid&nbsp;URL&nbsp;(all<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reserved&nbsp;characters&nbsp;have&nbsp;been&nbsp;escaped).&nbsp;If&nbsp;true,&nbsp;this<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method&nbsp;will&nbsp;escape&nbsp;the&nbsp;query&nbsp;and&nbsp;any&nbsp;URL&nbsp;parameters<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;provided.<br>
&nbsp;&nbsp;converter:&nbsp;func&nbsp;(optional)&nbsp;A&nbsp;function&nbsp;which&nbsp;will&nbsp;be&nbsp;executed&nbsp;on&nbsp;the&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server's&nbsp;response.&nbsp;Often&nbsp;this&nbsp;is&nbsp;a&nbsp;function&nbsp;like&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GDataEntryFromString&nbsp;which&nbsp;will&nbsp;parse&nbsp;the&nbsp;body&nbsp;of&nbsp;the&nbsp;server's&nbsp;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response&nbsp;and&nbsp;return&nbsp;a&nbsp;GDataEntry.<br>
&nbsp;<br>
Returns:<br>
&nbsp;&nbsp;If&nbsp;the&nbsp;put&nbsp;succeeded,&nbsp;this&nbsp;method&nbsp;will&nbsp;return&nbsp;a&nbsp;GDataFeed,&nbsp;GDataEntry,<br>
&nbsp;&nbsp;or&nbsp;the&nbsp;results&nbsp;of&nbsp;running&nbsp;converter&nbsp;on&nbsp;the&nbsp;server's&nbsp;result&nbsp;body&nbsp;(if<br>
&nbsp;&nbsp;converter&nbsp;was&nbsp;specified).</tt></dd></dl>
<dl><dt><a name="PhotosService-RevokeAuthSubToken"><strong>RevokeAuthSubToken</strong></a>(self)</dt><dd><tt>Revokes&nbsp;an&nbsp;existing&nbsp;AuthSub&nbsp;token.<br>
&nbsp;<br>
Raises:<br>
&nbsp;&nbsp;NonAuthSubToken&nbsp;if&nbsp;the&nbsp;user's&nbsp;auth&nbsp;token&nbsp;is&nbsp;not&nbsp;an&nbsp;AuthSub&nbsp;token</tt></dd></dl>
<dl><dt><a name="PhotosService-RevokeOAuthToken"><strong>RevokeOAuthToken</strong></a>(self, request_url<font color="#909090">='https://www.google.com/accounts/AuthSubRevokeToken'</font>)</dt><dd><tt>Revokes&nbsp;an&nbsp;existing&nbsp;OAuth&nbsp;token.<br>
&nbsp;<br>
request_url:&nbsp;Token&nbsp;revoke&nbsp;URL.&nbsp;The&nbsp;default&nbsp;is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'https://www.google.com/accounts/AuthSubRevokeToken'.<br>
Raises:<br>
&nbsp;&nbsp;NonOAuthToken&nbsp;if&nbsp;the&nbsp;user's&nbsp;auth&nbsp;token&nbsp;is&nbsp;not&nbsp;an&nbsp;OAuth&nbsp;token.<br>
&nbsp;&nbsp;RevokingOAuthTokenFailed&nbsp;if&nbsp;request&nbsp;for&nbsp;revoking&nbsp;an&nbsp;OAuth&nbsp;token&nbsp;failed.</tt></dd></dl>
<dl><dt><a name="PhotosService-SetAuthSubToken"><strong>SetAuthSubToken</strong></a>(self, token, scopes<font color="#909090">=None</font>, rsa_key<font color="#909090">=None</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;token&nbsp;sent&nbsp;in&nbsp;requests&nbsp;to&nbsp;an&nbsp;AuthSub&nbsp;token.<br>
&nbsp;<br>
Sets&nbsp;the&nbsp;current_token&nbsp;and&nbsp;attempts&nbsp;to&nbsp;add&nbsp;the&nbsp;token&nbsp;to&nbsp;the&nbsp;token_store.<br>
&nbsp;<br>
Only&nbsp;use&nbsp;this&nbsp;method&nbsp;if&nbsp;you&nbsp;have&nbsp;received&nbsp;a&nbsp;token&nbsp;from&nbsp;the&nbsp;AuthSub<br>
service.&nbsp;The&nbsp;auth&nbsp;token&nbsp;is&nbsp;set&nbsp;automatically&nbsp;when&nbsp;<a href="#PhotosService-UpgradeToSessionToken">UpgradeToSessionToken</a>()<br>
is&nbsp;used.&nbsp;See&nbsp;documentation&nbsp;for&nbsp;Google&nbsp;AuthSub&nbsp;here:<br>
<a href="http://code.google.com/apis/accounts/AuthForWebApps.html">http://code.google.com/apis/accounts/AuthForWebApps.html</a>&nbsp;<br>
&nbsp;<br>
Args:<br>
&nbsp;token:&nbsp;gdata.auth.AuthSubToken&nbsp;or&nbsp;gdata.auth.SecureAuthSubToken&nbsp;or&nbsp;string<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;token&nbsp;returned&nbsp;by&nbsp;the&nbsp;AuthSub&nbsp;service.&nbsp;If&nbsp;the&nbsp;token&nbsp;is&nbsp;an<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AuthSubToken&nbsp;or&nbsp;SecureAuthSubToken,&nbsp;the&nbsp;scope&nbsp;information&nbsp;stored&nbsp;in<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;token&nbsp;is&nbsp;used.&nbsp;If&nbsp;the&nbsp;token&nbsp;is&nbsp;a&nbsp;string,&nbsp;the&nbsp;scopes&nbsp;parameter&nbsp;is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;used&nbsp;to&nbsp;determine&nbsp;the&nbsp;valid&nbsp;scopes.<br>
&nbsp;scopes:&nbsp;list&nbsp;of&nbsp;URLs&nbsp;for&nbsp;which&nbsp;the&nbsp;token&nbsp;is&nbsp;valid.&nbsp;This&nbsp;is&nbsp;only&nbsp;used<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;the&nbsp;token&nbsp;parameter&nbsp;is&nbsp;a&nbsp;string.<br>
&nbsp;rsa_key:&nbsp;string&nbsp;(optional)&nbsp;Private&nbsp;key&nbsp;required&nbsp;for&nbsp;RSA_SHA1&nbsp;signature<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method.&nbsp;&nbsp;This&nbsp;parameter&nbsp;is&nbsp;necessary&nbsp;if&nbsp;the&nbsp;token&nbsp;is&nbsp;a&nbsp;string<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;representing&nbsp;a&nbsp;secure&nbsp;token.</tt></dd></dl>
<dl><dt><a name="PhotosService-SetClientLoginToken"><strong>SetClientLoginToken</strong></a>(self, token, scopes<font color="#909090">=None</font>)</dt><dd><tt>Sets&nbsp;the&nbsp;token&nbsp;sent&nbsp;in&nbsp;requests&nbsp;to&nbsp;a&nbsp;ClientLogin&nbsp;token.<br>
&nbsp;<br>
This&nbsp;method&nbsp;sets&nbsp;the&nbsp;current_token&nbsp;to&nbsp;a&nbsp;new&nbsp;ClientLoginToken&nbsp;and&nbsp;it&nbsp;<br>
also&nbsp;attempts&nbsp;to&nbsp;add&nbsp;the&nbsp;ClientLoginToken&nbsp;to&nbsp;the&nbsp;token_store.<br>
&nbsp;<br>
Only&nbsp;use&nbsp;this&nbsp;method&nbsp;if&nbsp;you&nbsp;have&nbsp;received&nbsp;a&nbsp;token&nbsp;from&nbsp;the&nbsp;ClientLogin<br>
service.&nbsp;The&nbsp;auth_token&nbsp;is&nbsp;set&nbsp;automatically&nbsp;when&nbsp;<a href="#PhotosService-ProgrammaticLogin">ProgrammaticLogin</a>()<br>
is&nbsp;used.&nbsp;See&nbsp;documentation&nbsp;for&nbsp;Google&nbsp;ClientLogin&nbsp;here:<br>
<a href="http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html">http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html</a><br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;token:&nbsp;string&nbsp;or&nbsp;instance&nbsp;of&nbsp;a&nbsp;ClientLoginToken.</tt></dd></dl>
<dl><dt><a name="PhotosService-SetOAuthInputParameters"><strong>SetOAuthInputParameters</strong></a>(self, signature_method, consumer_key, consumer_secret<font color="#909090">=None</font>, rsa_key<font color="#909090">=None</font>, two_legged_oauth<font color="#909090">=False</font>, requestor_id<font color="#909090">=None</font>)</dt><dd><tt>Sets&nbsp;parameters&nbsp;required&nbsp;for&nbsp;using&nbsp;OAuth&nbsp;authentication&nbsp;mechanism.<br>
&nbsp;<br>
NOTE:&nbsp;Though&nbsp;consumer_secret&nbsp;and&nbsp;rsa_key&nbsp;are&nbsp;optional,&nbsp;either&nbsp;of&nbsp;the&nbsp;two<br>
is&nbsp;required&nbsp;depending&nbsp;on&nbsp;the&nbsp;value&nbsp;of&nbsp;the&nbsp;signature_method.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;signature_method:&nbsp;class&nbsp;which&nbsp;provides&nbsp;implementation&nbsp;for&nbsp;strategy&nbsp;class<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oauth.oauth.OAuthSignatureMethod.&nbsp;Signature&nbsp;method&nbsp;to&nbsp;be&nbsp;used&nbsp;for<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;signing&nbsp;each&nbsp;request.&nbsp;Valid&nbsp;implementations&nbsp;are&nbsp;provided&nbsp;as&nbsp;the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constants&nbsp;defined&nbsp;by&nbsp;gdata.auth.OAuthSignatureMethod.&nbsp;Currently<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;they&nbsp;are&nbsp;gdata.auth.OAuthSignatureMethod.RSA_SHA1&nbsp;and<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gdata.auth.OAuthSignatureMethod.HMAC_SHA1<br>
&nbsp;&nbsp;consumer_key:&nbsp;string&nbsp;Domain&nbsp;identifying&nbsp;third_party&nbsp;web&nbsp;application.<br>
&nbsp;&nbsp;consumer_secret:&nbsp;string&nbsp;(optional)&nbsp;Secret&nbsp;generated&nbsp;during&nbsp;registration.<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Required&nbsp;only&nbsp;for&nbsp;HMAC_SHA1&nbsp;signature&nbsp;method.<br>
&nbsp;&nbsp;rsa_key:&nbsp;string&nbsp;(optional)&nbsp;Private&nbsp;key&nbsp;required&nbsp;for&nbsp;RSA_SHA1&nbsp;signature<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method.<br>
&nbsp;&nbsp;two_legged_oauth:&nbsp;boolean&nbsp;(optional)&nbsp;Enables&nbsp;two-legged&nbsp;OAuth&nbsp;process.<br>
&nbsp;&nbsp;requestor_id:&nbsp;string&nbsp;(optional)&nbsp;User&nbsp;email&nbsp;adress&nbsp;to&nbsp;make&nbsp;requests&nbsp;on<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;their&nbsp;behalf.&nbsp;&nbsp;This&nbsp;parameter&nbsp;should&nbsp;only&nbsp;be&nbsp;set&nbsp;when&nbsp;two_legged_oauth<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;True.</tt></dd></dl>
<dl><dt><a name="PhotosService-SetOAuthToken"><strong>SetOAuthToken</strong></a>(self, oauth_token)</dt><dd><tt>Attempts&nbsp;to&nbsp;set&nbsp;the&nbsp;current&nbsp;token&nbsp;and&nbsp;add&nbsp;it&nbsp;to&nbsp;the&nbsp;token&nbsp;store.<br>
&nbsp;<br>
The&nbsp;oauth_token&nbsp;can&nbsp;be&nbsp;any&nbsp;OAuth&nbsp;token&nbsp;i.e.&nbsp;unauthorized&nbsp;request&nbsp;token,<br>
authorized&nbsp;request&nbsp;token&nbsp;or&nbsp;access&nbsp;token.<br>
This&nbsp;method&nbsp;also&nbsp;attempts&nbsp;to&nbsp;add&nbsp;the&nbsp;token&nbsp;to&nbsp;the&nbsp;token&nbsp;store.<br>
Use&nbsp;this&nbsp;method&nbsp;any&nbsp;time&nbsp;you&nbsp;want&nbsp;the&nbsp;current&nbsp;token&nbsp;to&nbsp;point&nbsp;to&nbsp;the<br>
oauth_token&nbsp;passed.&nbsp;For&nbsp;e.g.&nbsp;call&nbsp;this&nbsp;method&nbsp;with&nbsp;the&nbsp;request&nbsp;token<br>
you&nbsp;receive&nbsp;from&nbsp;FetchOAuthRequestToken.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;request_token:&nbsp;gdata.auth.OAuthToken&nbsp;OAuth&nbsp;request&nbsp;token.</tt></dd></dl>
<dl><dt><a name="PhotosService-UpgradeToOAuthAccessToken"><strong>UpgradeToOAuthAccessToken</strong></a>(self, authorized_request_token<font color="#909090">=None</font>, request_url<font color="#909090">='https://www.google.com/accounts/OAuthGetAccessToken'</font>, oauth_version<font color="#909090">='1.0'</font>, oauth_verifier<font color="#909090">=None</font>)</dt><dd><tt>Upgrades&nbsp;the&nbsp;authorized&nbsp;request&nbsp;token&nbsp;to&nbsp;an&nbsp;access&nbsp;token&nbsp;and&nbsp;returns&nbsp;it<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;authorized_request_token:&nbsp;gdata.auth.OAuthToken&nbsp;(optional)&nbsp;OAuth&nbsp;request<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;token.&nbsp;If&nbsp;not&nbsp;specified,&nbsp;then&nbsp;the&nbsp;current&nbsp;token&nbsp;will&nbsp;be&nbsp;used&nbsp;if&nbsp;it&nbsp;is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;type&nbsp;&lt;gdata.auth.OAuthToken&gt;,&nbsp;else&nbsp;it&nbsp;is&nbsp;found&nbsp;by&nbsp;looking&nbsp;in&nbsp;the<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;token_store&nbsp;by&nbsp;looking&nbsp;for&nbsp;a&nbsp;token&nbsp;for&nbsp;the&nbsp;current&nbsp;scope.<br>
&nbsp;&nbsp;request_url:&nbsp;Access&nbsp;token&nbsp;URL.&nbsp;The&nbsp;default&nbsp;is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'https://www.google.com/accounts/OAuthGetAccessToken'.<br>
&nbsp;&nbsp;oauth_version:&nbsp;str&nbsp;(default='1.0')&nbsp;oauth_version&nbsp;parameter.&nbsp;All&nbsp;other<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'oauth_'&nbsp;parameters&nbsp;are&nbsp;added&nbsp;by&nbsp;default.&nbsp;This&nbsp;parameter&nbsp;too,&nbsp;is<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;added&nbsp;by&nbsp;default&nbsp;but&nbsp;here&nbsp;you&nbsp;can&nbsp;override&nbsp;it's&nbsp;value.<br>
&nbsp;&nbsp;oauth_verifier:&nbsp;str&nbsp;(optional)&nbsp;If&nbsp;present,&nbsp;it&nbsp;is&nbsp;assumed&nbsp;that&nbsp;the&nbsp;client<br>
&nbsp;&nbsp;&nbsp;&nbsp;will&nbsp;use&nbsp;the&nbsp;OAuth&nbsp;v1.0a&nbsp;protocol&nbsp;which&nbsp;includes&nbsp;passing&nbsp;the<br>
&nbsp;&nbsp;&nbsp;&nbsp;oauth_verifier&nbsp;(as&nbsp;returned&nbsp;by&nbsp;the&nbsp;SP)&nbsp;in&nbsp;the&nbsp;access&nbsp;token&nbsp;step.<br>
&nbsp;<br>
Returns:<br>
&nbsp;&nbsp;Access&nbsp;token<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
Raises:<br>
&nbsp;&nbsp;NonOAuthToken&nbsp;if&nbsp;the&nbsp;user's&nbsp;authorized&nbsp;request&nbsp;token&nbsp;is&nbsp;not&nbsp;an&nbsp;OAuth<br>
&nbsp;&nbsp;token&nbsp;or&nbsp;if&nbsp;an&nbsp;authorized&nbsp;request&nbsp;token&nbsp;was&nbsp;not&nbsp;available.<br>
&nbsp;&nbsp;TokenUpgradeFailed&nbsp;if&nbsp;the&nbsp;server&nbsp;responded&nbsp;to&nbsp;the&nbsp;request&nbsp;with&nbsp;an&nbsp;<br>
&nbsp;&nbsp;error.</tt></dd></dl>
<dl><dt><a name="PhotosService-UpgradeToSessionToken"><strong>UpgradeToSessionToken</strong></a>(self, token<font color="#909090">=None</font>)</dt><dd><tt>Upgrades&nbsp;a&nbsp;single&nbsp;use&nbsp;AuthSub&nbsp;token&nbsp;to&nbsp;a&nbsp;session&nbsp;token.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;token:&nbsp;A&nbsp;gdata.auth.AuthSubToken&nbsp;or&nbsp;gdata.auth.SecureAuthSubToken<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(optional)&nbsp;which&nbsp;is&nbsp;good&nbsp;for&nbsp;a&nbsp;single&nbsp;use&nbsp;but&nbsp;can&nbsp;be&nbsp;upgraded<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;a&nbsp;session&nbsp;token.&nbsp;If&nbsp;no&nbsp;token&nbsp;is&nbsp;passed&nbsp;in,&nbsp;the&nbsp;token<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is&nbsp;found&nbsp;by&nbsp;looking&nbsp;in&nbsp;the&nbsp;token_store&nbsp;by&nbsp;looking&nbsp;for&nbsp;a&nbsp;token<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;the&nbsp;current&nbsp;scope.<br>
&nbsp;<br>
Raises:<br>
&nbsp;&nbsp;NonAuthSubToken&nbsp;if&nbsp;the&nbsp;user's&nbsp;auth&nbsp;token&nbsp;is&nbsp;not&nbsp;an&nbsp;AuthSub&nbsp;token<br>
&nbsp;&nbsp;TokenUpgradeFailed&nbsp;if&nbsp;the&nbsp;server&nbsp;responded&nbsp;to&nbsp;the&nbsp;request&nbsp;with&nbsp;an&nbsp;<br>
&nbsp;&nbsp;error.</tt></dd></dl>
<dl><dt><a name="PhotosService-upgrade_to_session_token"><strong>upgrade_to_session_token</strong></a>(self, token)</dt><dd><tt>Upgrades&nbsp;a&nbsp;single&nbsp;use&nbsp;AuthSub&nbsp;token&nbsp;to&nbsp;a&nbsp;session&nbsp;token.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;token:&nbsp;A&nbsp;gdata.auth.AuthSubToken&nbsp;or&nbsp;gdata.auth.SecureAuthSubToken<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;which&nbsp;is&nbsp;good&nbsp;for&nbsp;a&nbsp;single&nbsp;use&nbsp;but&nbsp;can&nbsp;be&nbsp;upgraded&nbsp;to&nbsp;a<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;session&nbsp;token.<br>
&nbsp;<br>
Returns:<br>
&nbsp;&nbsp;The&nbsp;upgraded&nbsp;token&nbsp;as&nbsp;a&nbsp;gdata.auth.AuthSubToken&nbsp;object.<br>
&nbsp;<br>
Raises:<br>
&nbsp;&nbsp;TokenUpgradeFailed&nbsp;if&nbsp;the&nbsp;server&nbsp;responded&nbsp;to&nbsp;the&nbsp;request&nbsp;with&nbsp;an&nbsp;<br>
&nbsp;&nbsp;error.</tt></dd></dl>
<hr>
Data descriptors inherited from <a href="gdata.service.html#GDataService">gdata.service.GDataService</a>:<br>
<dl><dt><strong>captcha_token</strong></dt>
<dd><tt>Get&nbsp;the&nbsp;captcha&nbsp;token&nbsp;for&nbsp;a&nbsp;login&nbsp;request.</tt></dd>
</dl>
<dl><dt><strong>captcha_url</strong></dt>
<dd><tt>Get&nbsp;the&nbsp;captcha&nbsp;URL&nbsp;for&nbsp;a&nbsp;login&nbsp;request.</tt></dd>
</dl>
<dl><dt><strong>source</strong></dt>
<dd><tt>The&nbsp;source&nbsp;is&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;application&nbsp;making&nbsp;the&nbsp;request.&nbsp;<br>
It&nbsp;should&nbsp;be&nbsp;in&nbsp;the&nbsp;form&nbsp;company_id-app_name-app_version</tt></dd>
</dl>
<hr>
Data and other attributes inherited from <a href="gdata.service.html#GDataService">gdata.service.GDataService</a>:<br>
<dl><dt><strong>auth_token</strong> = None</dl>
<dl><dt><strong>handler</strong> = None</dl>
<dl><dt><strong>tokens</strong> = None</dl>
<hr>
Methods inherited from <a href="atom.service.html#AtomService">atom.service.AtomService</a>:<br>
<dl><dt><a name="PhotosService-UseBasicAuth"><strong>UseBasicAuth</strong></a>(self, username, password, for_proxy<font color="#909090">=False</font>)</dt><dd><tt>Sets&nbsp;an&nbsp;Authenticaiton:&nbsp;Basic&nbsp;HTTP&nbsp;header&nbsp;containing&nbsp;plaintext.<br>
&nbsp;<br>
Deprecated,&nbsp;use&nbsp;use_basic_auth&nbsp;instead.<br>
&nbsp;<br>
The&nbsp;username&nbsp;and&nbsp;password&nbsp;are&nbsp;base64&nbsp;encoded&nbsp;and&nbsp;added&nbsp;to&nbsp;an&nbsp;HTTP&nbsp;header<br>
which&nbsp;will&nbsp;be&nbsp;included&nbsp;in&nbsp;each&nbsp;request.&nbsp;Note&nbsp;that&nbsp;your&nbsp;username&nbsp;and&nbsp;<br>
password&nbsp;are&nbsp;sent&nbsp;in&nbsp;plaintext.<br>
&nbsp;<br>
Args:<br>
&nbsp;&nbsp;username:&nbsp;str<br>
&nbsp;&nbsp;password:&nbsp;str</tt></dd></dl>
<dl><dt><a name="PhotosService-request"><strong>request</strong></a>(*args, **kwargs)</dt><dd><tt>#&nbsp;The&nbsp;deprecated_function&nbsp;wraps&nbsp;the&nbsp;actual&nbsp;call&nbsp;to&nbsp;f.</tt></dd></dl>
<dl><dt><a name="PhotosService-use_basic_auth"><strong>use_basic_auth</strong></a>(self, username, password, scopes<font color="#909090">=None</font>)</dt></dl>
<hr>
Data descriptors inherited from <a href="atom.service.html#AtomService">atom.service.AtomService</a>:<br>
<dl><dt><strong>__dict__</strong></dt>
<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
</dl>
<dl><dt><strong>__weakref__</strong></dt>
<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
</dl>
<dl><dt><strong>debug</strong></dt>
<dd><tt>If&nbsp;True,&nbsp;HTTP&nbsp;debug&nbsp;information&nbsp;is&nbsp;printed.</tt></dd>
</dl>
<dl><dt><strong>override_token</strong></dt>
</dl>
<hr>
Data and other attributes inherited from <a href="atom.service.html#AtomService">atom.service.AtomService</a>:<br>
<dl><dt><strong>auto_set_current_token</strong> = True</dl>
<dl><dt><strong>auto_store_tokens</strong> = True</dl>
<dl><dt><strong>current_token</strong> = None</dl>
<dl><dt><strong>port</strong> = 80</dl>
</td></tr></table></td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#eeaa77">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><dl><dt><a name="-ConvertAtomTimestampToEpoch"><strong>ConvertAtomTimestampToEpoch</strong></a>(timestamp)</dt><dd><tt>Helper&nbsp;function&nbsp;to&nbsp;convert&nbsp;a&nbsp;timestamp&nbsp;string,&nbsp;for&nbsp;instance<br>
from&nbsp;atom:updated&nbsp;or&nbsp;atom:published,&nbsp;to&nbsp;milliseconds&nbsp;since&nbsp;Unix&nbsp;epoch<br>
(a.k.a.&nbsp;POSIX&nbsp;time).<br>
&nbsp;<br>
`2007-07-22T00:45:10.000Z'&nbsp;-&gt;</tt></dd></dl>
<dl><dt><a name="-GetSmallestThumbnail"><strong>GetSmallestThumbnail</strong></a>(media_thumbnail_list)</dt><dd><tt>Helper&nbsp;function&nbsp;to&nbsp;get&nbsp;the&nbsp;smallest&nbsp;thumbnail&nbsp;of&nbsp;a&nbsp;list&nbsp;of<br>
&nbsp;&nbsp;gdata.media.Thumbnail.<br>
Returns&nbsp;gdata.media.Thumbnail</tt></dd></dl>
</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#55aa55">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%"><strong>GPHOTOS_BAD_REQUEST</strong> = 400<br>
<strong>GPHOTOS_CONFLICT</strong> = 409<br>
<strong>GPHOTOS_INTERNAL_SERVER_ERROR</strong> = 500<br>
<strong>GPHOTOS_INVALID_ARGUMENT</strong> = 601<br>
<strong>GPHOTOS_INVALID_CONTENT_TYPE</strong> = 602<br>
<strong>GPHOTOS_INVALID_KIND</strong> = 604<br>
<strong>GPHOTOS_NOT_AN_IMAGE</strong> = 603<br>
<strong>SUPPORTED_UPLOAD_TYPES</strong> = ('bmp', 'jpeg', 'jpg', 'gif', 'png')<br>
<strong>UNKOWN_ERROR</strong> = 1000<br>
<strong>__author__</strong> = u'havard@gulldahl.no'<br>
<strong>__license__</strong> = 'Apache License v2'<br>
<strong>__version__</strong> = '176'</td></tr></table><p>
<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
<tr bgcolor="#7799ee">
<td colspan=3 valign=bottom>&nbsp;<br>
<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
<td width="100%">havard@gulldahl.no</td></tr></table>
</body></html>