[Pythonmac-SIG] accessing iPhoto star rating through appscript?

Will Henney whenney at gmail.com
Thu Apr 19 17:11:14 CEST 2007


Dethe Elza <delza <at> livingcode.org> writes:
>      library = plistlib.readPlist(os.path.expanduser('~/Pictures/ 
> iPhoto Library/AlbumData.xml'))
>      for photo in library['Master Image List'].values():
>          if hasattr(photo, 'Rating') and photo.Rating > 0:
>              print '%s: %d stars' % (photo.Caption, photo.Rating)
> 
> How's that?
> 

Hi Dethe,

Thanks for the example scripts! They work great if the comments only contain
ascii characters, but I found I had to make a small modification to make it work
with the captions in my database:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
import plistlib, os
outputcodec = "latin-1" 	# or "utf-8", or "ascii", or ....
library = plistlib.readPlist(
    os.path.expanduser('~/Pictures/iPhoto Library/AlbumData.xml'))
for photo in library['Master Image List'].values():
    if hasattr(photo, 'Rating') and photo.Rating > 0:
	try:
	    thiscaption = photo.Caption.encode(outputcodec)
	except UnicodeEncodeError: 
	    thiscaption = "Cannot encode caption in codec %s" % outputcodec
	print '%s: %d stars' % (thiscaption, photo.Rating)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

My initial try was to use "utf-8" as the output codec, but that wrote garbage
characters when I ran it in Terminal.app - any idea why?

Cheers

Will





More information about the Pythonmac-SIG mailing list