if unicode() failed, use decode(iso8859-1)

it's better than ignoring error and works here
do not look for photosets if not needed
convert self.photos to a dict and cache photos by album
unicode/decode album title only once