#!/usr/bin/python import os import sys import kimdaba_album import flickr_post def push_images(fake): album = kimdaba_album.parse(kimdaba_album.kimdaba_default_album()) new_images = kimdaba_album.select_images(album, set(["flickr"]), set(["flickd"])) for img in new_images: imgkeys = set([f.get("value") for f in img.findall("options/option/value")]) # expand group members imgkeys.update(kimdaba_album.expand_keyword_groups(album, imgkeys)) # don't include flickr imgkeys -= set(["flickr"]) ispublic = True isfriends = False isfamily = False if "friendsonly" in imgkeys: ispublic = False isfriends = True imgkeys -= set(["friendsonly"]) if "familyonly" in imgkeys: ispublic = False isfamily = True imgkeys -= set(["familyonly"]) # maybe include from_kimdaba? imgpath = os.path.join(album.findall("config")[0].get("imageDirectory"), img.get("file")) imglabel = img.get("label") imgdesc = img.get("description") # flickr rotate is degrees clockwise # kimdaba rotation is degrees... and we'll have to test :-) imgrot = img.get("angle") # img.get yearFrom monthFrom dayFrom etc. too... flickr_post.upload_one(imgpath, title=imglabel, description=imgdesc, tags=imgkeys, public=ispublic, friends=isfriends, family=isfamily, fake=fake, rotate=imgrot) # this is all self contained... if fake: print "not flickd'ing it" return kimdaba_album.add_keyword(img.get("md5sum"), "flickd") # TODO: sync-back, somehow # Protocol: anything tagged flickr gets pushed # *then* it gets tagged flickd on this side, so it doesn't # get pushed again... if __name__ == "__main__": fake=False if "--fake" in sys.argv: fake=True sys.argv.remove("--fake") prog, verb = sys.argv if verb == "register": flickr_post.register() elif verb == "sync": push_images(fake) else: sys.exit("register, sync")