For uploading a new photo to an album you would use the POST method. Your code seems to use PUT, which is for editing/updating existing entries.
On Aug 9, 9:33 am, Josep Valls <[email protected]> wrote: > I've tried to go ahead and took a chance at going around the gdata > library but I'm stuck again. I can't post pictures. I keep getting a > 400 Bad request error. > Here is the code: > h = urllib2.urlopen(authurl,urllib.urlencode > ({'accountType':'HOSTED_OR_GOOGLE','Email':email,'Passwd':password,'service':'lh2','source':source})) > for line in h.readlines(): > if line.startswith('Auth='): > authtoken = line[line.index('=')+1:] > url = 'http://picasaweb.google.com/data/feed/api/user/%s'% (username) > authorization = "GoogleLogin auth=%s" % (authtoken) > if True: > h = httplib.HTTPConnection(host, port) > > h.putrequest('PUT', path) > > h.putheader('Content-Type', 'image/jpeg') > h.putheader('Content-Length', str(os.path.getsize(fn))) > h.putheader('Slug', 'keep-alive2.jpg') > h.putheader('Authorization', authorization) > h.endheaders() > > # Chunked transfer encoding > # Cf. 'All HTTP/1.1 applications MUST be able to receive and > # decode the "chunked" transfer-coding' > # -http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html > f = open(fn,'rb') > bytes = f.read() > h.send(bytes) > > resp = h.getresponse() > status = resp.status # an int > > I've also recorded the http request: > > Send: Return Code: 0x00000000 > PUT /data/feed/api/user/vallsdotname/albumid/default HTTP/1.1 > Host: picasaweb.google.com > Accept-Encoding: identity > Content-Type: image/jpeg > Content-Length: 25995 > Slug: keep-alive2.jpg > Authorization: GoogleLogin auth=DQAAAIsAAADRLbGG[...]QVp6PS- > ZmEGPC49eUuWo > > Send: Return Code: 0x00000000 > 00000000 FF D8 FF E0 00 10 4A 46 49 46 00 01 01 00 00 > 01 ......JFIF...... > On Aug 8, 5:28 pm, Josep Valls <[email protected]> wrote: > > > My code is as follows: > > import gdata.photos.service > > import gdata.media > > import gdata.geo > > import atom > > > username = 'vallsdotname' > > email = 'XXX' > > password = 'XXX > > source = 'vallsdotname-albumlist-1' > > filename = 'C:/Users/Valls/Downloads/Desktops/ > > 00660_splash_2560x1600.jpg' > > > pws = gdata.photos.service.PhotosService() > > pws.ClientLogin(username, password) > > albums = pws.GetUserFeed().entry > > photos = pws.GetFeed(albums[0].GetPhotosUri()).entry > > album = albums[0] > > photo = pws.InsertPhotoSimple(album_url, 'New Photo', 'Uploaded using > > the API', filename, content_type='image/jpeg') > > photo = photos[8] > > photo.rotation = gdata.photos.Rotation(text='90') > > photo = pws.UpdatePhotoMetadata(photo) > > # so far so good > > ph = pws.UpdatePhotoBlob(photo, filename) > > # errors > > fh = open(filename, 'rb') > > ph = pws.UpdatePhotoBlob(photo, fh) > > # errors > > > And this is what I captured. Hopefully will be enough. Any advice on > > http monitors? > > > Send: Return Code: 0x00000000 > > PUThttp://picasaweb.google.com/data/media/api/user/vallsdotname/albumid/... > > HTTP/1.1 > > Accept-Encoding: identity > > Host: picasaweb.google.com > > Content-Length: 176489 > > Content-Type: image/jpeg > > Authorization: GoogleLogin > > auth=DQAAAIwAAAAMe34fRcNb3L_9GuxNfNbdk2cfgk886rkmn1PZ9tGBcy1gPTuROvNgbgQi8eqfP_XY5K5WPmSbtw5SmOPm8huMK- > > WQ4oAaRboug_bmtjzHz7JgqkyerDQSdpteFrsWK0CXJZpfpdBghMRT0gLkGMEMVaiSx9lsSMT7DADG8H3HyT7ehSJeW4oIdGiRxA- > > Fcx4 > > User-Agent: None GData-Python/1.3.3 > > > Send: Return Code: 0x00000000 > > 00000000 FF D8 FF E0 00 10 4A 46 49 46 00 01 01 01 00 > > 48 ......JFIF.....H > > [...] > > > Receive: Return Code: 0x00000000 > > <?xml version='1.0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/ > > 2005/Atom' xmlns:exif='http://schemas.google.com/photos/exif/2007' > > xmlns:gphoto='http://schemas.google.com/photos/2007' > > xmlns:media='http://search.yahoo.com/mrss/'><id>http:// > > picasaweb.google.com/data/entry/api/user/vallsdotname/albumid/ > > 5365689932489135537/photoid/5367284203201802034</ > > id><published>2009-08-07T18:03:55.000Z</ > > published><updated>2009-08-08T15:17:16.503Z</updated><category > > scheme='http://schemas.google.com/g/2005#kind'term='http:// > > schemas.google.com/photos/2007#photo'/><title type='text'>New Photo</ > > title><summary type='text'>Uploaded using the API</summary><content > > type='image/jpeg' src='http://lh4.ggpht.com/_vgXOso7OdEA/Snxsi7RorzI/ > > AAAAAAAAB6k/j-KVLIK75LQ/New%20Photo.jpg'/><link rel='http:// > > schemas.google.com/g/2005#feed' type='application/atom+xml' > > href='http://picasaweb.google.com/data/feed/api/user/vallsdotname/ > > albumid/5365689932489135537/photoid/5367284203201802034? > > authkey=Gv1sRgCLDEx9OSxMyCzgE'/><link rel='alternate' type='text/html' > > href='http://picasaweb.google.com/vallsdotname/2009_07_29? > > authkey=Gv1sRgCLDEx9OSxMyCzgE#5367284203201802034'/><link rel='http:// > > schemas.google.com/photos/2007#canonical' type='text/html' > > href='http://picasaweb.google.com/lh/photo/BdP8LrkztXzpxc4vYnpPmg? > > authkey=Gv1sRgCLDEx9OSxMyCzgE'/><link rel='self' type='application/atom > > +xml' href='http://picasaweb.google.com/data/entry/api/u > > Receive: Return Code: 0x00000000 > > ser/vallsdotname/albumid/5365689932489135537/photoid/ > > 5367284203201802034?authkey=Gv1sRgCLDEx9OSxMyCzgE'/><link rel='edit' > > type='application/atom+xml' href='http://picasaweb.google.com/data/ > > entry/api/user/vallsdotname/albumid/5365689932489135537/photoid/ > > 5367284203201802034/32?authkey=Gv1sRgCLDEx9OSxMyCzgE'/><link rel='edit- > > media' type='image/jpeg' href='http://picasaweb.google.com/data/media/ > > api/user/vallsdotname/albumid/5365689932489135537/photoid/ > > 5367284203201802034/32?authkey=Gv1sRgCLDEx9OSxMyCzgE'/><link > > rel='media-edit' type='image/jpeg' href='http://picasaweb.google.com/ > > data/media/api/user/vallsdotname/albumid/5365689932489135537/photoid/ > > 5367284203201802034/32?authkey=Gv1sRgCLDEx9OSxMyCzgE'/><link > > rel='http://schemas.google.com/photos/2007#report'type='text/html' > > href='http://picasaweb.google.com/lh/reportAbuse? > > uname=vallsdotname&aid=5365689932489135537&iid=5367284203201802034'/><gphoto:id>5367284203201802034</gphoto:id><gphoto:version>32</ > > > gphoto:version><gphoto:albumid>5365689932489135537</ > > gphoto:albumid><gphoto:access>private</ > > gphoto:access><gphoto:width>1200</gphoto:width><gphoto:height>1600</ > > gphoto:height><gphoto:size>117066</gphoto:size><gphoto:client/><gphoto:checksum/><gphoto:timestamp>1249668235000</ > > > gphoto:timestamp><gphoto:imageVersion>1961</ > > gphoto:imageVersion><gphoto:commentingEnabled>true</ > > gphoto:commentingEnabled><gphoto:commentCount>1</ > > gphoto:commentCount><exif:tags><exif:imageUniqueID>5e2680042d568e46fdcf7b2ee89f2a7b</ > > exif:imageUniqueID></exif:tags><media:group><media:content url='http:// > > lh4.ggpht.com/_vgXOso7OdEA/Snxsi7RorzI/AAAAAAAAB6k/j-KVLIK75LQ/New > > %20Photo.jpg' height='1600' width='1200' type='image/jpeg' > > medium='image'/><media:credit>josep.vallsva</ > > media:credit><media:description type='plain'>Uploaded using the API</ > > media:description><media:keywords/><media:thumbnail url='http:// > > lh4.ggpht.com/_vgXOso7OdEA/Snxsi7RorzI/AAAAAAAAB6k/j-KVLIK75LQ/s72/New > > %20Photo.jpg' height='72' width='54'/><media:thumbnail url='http:// > > lh4.ggpht.com/_vgXOso7OdEA/Snxsi7RorzI/AAAAAAAAB6k/j-KVLIK75LQ/s144/New > > %20Photo.jpg' height='144' width='108'/><media:thumbnail url='http:// > > lh4.ggpht.com/_vgXOso7OdEA/Snxsi7RorzI/AAAAAAAAB6k/j-KVLIK75LQ/s288/New > > %20Photo.jpg' height='288' width='216'/><media:title type='plain'>New > > Photo</media:title></media:group></entry> > > > Is there a bug somewhere that should be reported? > > I guess I could work around it by generating my own request, in that > > case, it'd be very helpful if you could direct me to some good > > tutorials to start with this. > > > Thanks! > > > On Aug 8, 1:31 am, Detlev <[email protected]> wrote: > > > > This sounds like a version conflict issue. In GData v1, you had to > > > specifiy the current versionid with the edit link. Requesting a photo > > > entry would conveniently add it to the edit link element. In Gdata v2, > > > we no longer support this type of optimistic concurrency. Instead > > > you'll need to take the ETag from the last photo entry response and > > > use it in the If-Match header for your next update request. You can > > > also use a * for the If-Match header to effectively disable any > > > version checking. > > > I am not familiar at all with the Python client library, and am not > > > sure if it even supports v2 already for the Picasa Web API. > > > Can you log the entire HTTP requests and responses (with headers)? > > > This should tell you if you're really sending a v2 GData request or > > > not, and if the library is setting the headers correctly. > > > > On Aug 7, 4:16 pm, Josep Valls <[email protected]> wrote: > > > > > Hi, > > > > > I'd like to do some processing on the images I have posted on Picasa. > > > > I will download them, process them and update the image data. I want > > > > to keep all my albums and all the metadata the pictures already had > > > > when I first uploaded them. > > > > When I try to call UpdatePhotoBlob I get the following exception: > > > > Traceback (most recent call last): > > > > File "..\7.py", line 31, in <module> > > > > ph = pws.UpdatePhotoBlob(photo, filename) > > > > File "c:\python25\Lib\site-packages\gdata\photos\service.py", line > > > > 581, in Upd > > > > atePhotoBlob > > > > raise GooglePhotosException(e.args[0]) > > > > gdata.photos.service.GooglePhotosException: (409, 'Conflict', "<?xml > > > > version='1. > > > > 0' encoding='UTF-8'?><entry xmlns='http://www.w3.org/2005/Atom' > > > > xmlns:exif='http > > > > ://schemas.google.com/photos/exif/2007' xmlns:gphoto='http:// > > > > schemas.google.com/ > > > > photos/2007' xmlns:media='http://search.yahoo.com/mrss/'><id>http:// > > > > picasaweb.go... > > > > > This trace is from gdata 2.0.0. Same exception with 2.0.1. > > > > > What am I doing wrong? > > > > > Thanks! --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Picasa Web Albums API" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/Google-Picasa-Data-API?hl=en -~----------~----~----~----~------~----~------~--~---
