把Picasa加星标的图片一次性导出

作者:半瓶墨水   链接:http://www.2maomao.com/blog/py-script-export-all-stared-photos-in-picasa/

年前买了个千万级的照相机,再加上不加节制的使用,200G的硬盘开始不够用了,为了节省空间,决定把多数照片放在一个不是很常用的地方+刻盘,只把选择出来的照片留下

为了达到这个目标,现在安装的Faststone Image Viewer就不是很好用,安装的光影看看更是管理图片的废材。最后Google了一下,发现最好用的还是Picasa

下载了最新版,又花了过年的三四天的精选了照片,最后想把照片导出的时候遇到问题了,一共四五十个文件夹,Picasa并没有提供一次性导出的功能,只能一个文件夹一个文件夹的导出。最后还是决定写个脚本来搞定,研究了一下,发现每个目录下都有个.picasa.ini文件,格式十分简单,比如这个:

[IMG_0152.JPG]
faces=rect64(78f63255a1427ae3),155499df12e3d390
backuphash=4191
star=yes

其中的star=yes代表该照片已加星标。这就简单了,半小时写,十分钟导出,搞定!

脚本如下,注意脚本运行完以后生成了一个叫做copystar_go.bat的批处理文件,执行它才是真正的导出,这本来是调试用的,后来发现可以手工控制删掉一些不需要的导出操作(用Vim很快的),就没改回来,不多说,上代码:

Python语言: Export all stared photos in Picasa once
#! /usr/bin/env python
# -*- coding: utf-8 -*-
#
#Purpose: export all picasa stared photos under a folder and it's subfolders
#         because Picasa doesn't support – it only can export one folder once
#
#  Reach me via: realfun AT gmail DOT com
#
#  http://2maomao.com/blog/py-script-export-all-stared-photos-in-picasa/
#  http://www.google.com/profiles/realfun
#  2011-02-22, 22:26:28

from os import walk
from os.path import join

#damn python encoding hack
import sys
reload(sys)
sys.setdefaultencoding("gb2312")

PICASA = '.picasa.ini'
PICASA_OLD = 'Picasa.ini'
TARGET = 'G:\\ipad\\sync\\temp\\'

def get_stars(dir, picasa):
    stars = []
    last = None
    for line in open(join(dir, picasa)).readlines():
        line = line.rstrip("\n")
        if line.startswith("[") and line.endswith("]"):
            last = line[1:1].decode("utf-8")
        elif line.startswith("star=yes"):
            stars.append(last)
    return stars

out = open("copystar_go.bat", "wb")
for root, dirs, files in walk("."):
    picasa = None
    if PICASA in files:
        picasa = PICASA
    elif PICASA_OLD in files:
        picasa = PICASA_OLD
    if picasa:
        stars = get_stars(root, picasa)
        for star in stars:
            line = 'robocopy "%s" "%s" "%s"\r' % (root, join(TARGET, root), star)
            print >>out, line

4 条评论 发表在“把Picasa加星标的图片一次性导出”上

  1. 不错的分享,正需要这个呢,多谢!

  2. cpiz说道:

    我差点也要写脚本,但想想这么简单的功能picasa不可能没有。。。
    全选星标照片,然后“文件-将图片导出到文件夹”,一次性就能搞定,还能顺便批量调整大小

  3. 半瓶墨水说道:

    @cpiz
    1. 如果你有很多归类,一次不能全部导出
    2. 下次导出就不会那么顺了,会有许多条件覆盖,还是脚本方便,哈哈

留下回复