Created
July 15, 2011 14:55
-
-
Save Apkawa/1084845 to your computer and use it in GitHub Desktop.
Simple Uploader to upi.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-*- coding: utf-8 -*- | |
''' | |
http://code.google.com/apis/picasaweb/docs/1.0/developers_guide_python.html | |
''' | |
import os | |
import os.path | |
import mimetypes | |
import sys | |
import logging | |
import logging.handlers | |
import datetime | |
from optparse import OptionParser | |
import gdata.photos.service | |
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) | |
log = logging.getLogger('album_fetcher') | |
logging.basicConfig(level=logging.INFO, | |
format='%(asctime)s %(name)-5s %(levelname)-3s %(message)s', | |
datefmt='%d-%m-%Y %H:%M:%S', | |
) | |
class Photo(object): | |
def __init__(self, entry, picasa_instance=None): | |
self.entry = entry | |
self.picasa_instance = picasa_instance | |
def get_title(self): | |
return self.entry.title.text | |
def get_source(self): | |
return self.entry.GetMediaURL() | |
def get_thumbinail(self): | |
return self.entry.media.thumbnail[-1].url | |
class Album(object): | |
def __init__(self, entry, picasa_instance=None): | |
self.entry = entry | |
self.picasa_instance = picasa_instance | |
def __repr__(self): | |
return "<Album: %s>"%self.get_title() | |
def get_id(self): | |
return self.entry.GetAlbumId() | |
def get_user(self): | |
return self.entry.user.text | |
def get_title(self): | |
return self.entry.title.text | |
def get_desc(self): | |
pass | |
def get_meta(self): | |
pass | |
def get_photos_uri(self): | |
return self.entry.GetPhotosUri() | |
def _update_album(self, update_attrs, service): | |
#TODO | |
album.title.text = 'Nya' | |
updated_album = gd_client.Put(album, album.GetEditLink().href, | |
converter=gdata.photos.AlbumEntryFromString) | |
def upload_photo(self, photo_path): | |
content_type = mimetypes.guess_type(photo_path)[0] | |
if content_type not in ['image/bmp', 'image/jpeg', 'image/jpg', 'image/gif', 'image/png']: | |
raise "Not valid content type" | |
filename = os.path.split(photo_path)[-1] | |
photo = self.picasa_instance.service.InsertPhotoSimple(self.entry.GetFeedLink().href, filename, | |
'%s'%datetime.datetime.now(), | |
photo_path, content_type=content_type) | |
return Photo(photo, self.picasa_instance) | |
class Picasa(object): | |
def __init__(self): | |
pass | |
@property | |
def service(self): | |
service = getattr(self, '__service', None) | |
if not service: | |
service = gdata.photos.service.PhotosService(source='upi') | |
setattr(self, '__service', service) | |
return service | |
def set_user(self, user): | |
self.email = user | |
def get_user(self): | |
return self.email | |
def auth(self, email, password): | |
service = self.service | |
service.email = email | |
service.password = password | |
service.ProgrammaticLogin() | |
self.__service = service | |
self.set_user(email) | |
def get_album_list(self): | |
albums = self.service.GetUserFeed(user=self.get_user()) | |
return [Album(album, self) for album in albums.entry] | |
def get_album_by_title(self, title): | |
for album in self.get_album_list(): | |
if title == album.get_title(): | |
return album | |
def create_album(self, title, description=''): | |
return Album(self.service.InsertAlbum(title=title, summary=description), self) | |
def main(): | |
p= Picasa() | |
p.auth("usenname", "password") | |
upi_album = p.get_album_by_title("upi") | |
if not upi_album: | |
upi_album = p.create_album("upi") | |
for f_p in sys.argv[1:]: | |
new_photo = upi_album.upload_photo(f_p) | |
print new_photo.get_source() | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment