我真的很喜欢 Shotwell,而且我已经使用它大约半年了。
唯一的问题是没有导出功能,我将所有事件分组并命名。
是否有任何脚本或插件可以将它们全部导出到像 2012_02 Event XY 这样的文件夹结构中?
答案1
好的,因为我没有修改 Shotwell 中的图片,所以我对这个小脚本很满意:
from pysqlite2 import dbapi2 as sqlite
import os
import shutil
targetdirectory = "/home/dan/pictures new/"
db = sqlite.connect('photo.db')
cur = db.cursor()
cur.execute('SELECT strftime("%Y_%m", datetime(PhotoTable.timestamp, "unixepoch")) ||" "|| EventTable.name, PhotoTable.filename FROM PhotoTable LEFT JOIN EventTable ON PhotoTable.event_id = EventTable.id')
for row in cur:
dir = os.path.dirname(targetdirectory + str(row[0]) +"/")
if not os.path.exists(dir):
os.makedirs(dir)
try:
if os.path.exists(str(row[1])) and not os.path.exists(targetdirectory + str(row[0]) + "/" + os.path.basename(str(row[1]))):
shutil.copyfile(row[1], targetdirectory + str(row[0]) + "/" + os.path.basename(row[1]))
except UnicodeEncodeError:
print "Error: " + str(row[0])
我认为,如果你愿意的话,有一个可以切换到另一个工具的选项真的很重要:)
答案2
现在有一个shotwell导出脚本根据 Dan 的示例。它将把整个 shotwell 媒体库转储到一个目录中。
像这样调用它以满足您的需求:
shotwell-export --filename "{y}_{m} {event}/{file}"
免责声明:由我编写/改编。包括对 unicode 问题的修复,并通过参数增加了灵活性。
答案3
但是,您不能直接导出文件夹,您可以打开文件夹 > 全选 ( Ctrl+ A) 并导出 ( Shift+ Ctrl+ E) > 到 > 位置。(命名文件夹)
我确实找到了一个可以改编的脚本https://github.com/johey/shotup
自述文件中指出:
Shotup 是一个用于将 Shotwell 中的照片库导出为可浏览的在线图库的工具。
答案4
Robert 的帖子中提到的脚本运行良好(非常感谢!!),但它会寻找一个名为 BackingPhotoTable 的表,该表并不总是存在(可能是在照片被修改后创建的?)如果不存在,则导出脚本将失败。
这将创建表并解决问题。CREATE TABLE IF NOT EXISTS BackingPhotoTable (id INTEGER PRIMARY KEY, filepath TEXT UNIQUE NOT NULL, timestamp INTEGER, filesize INTEGER, width INTEGER, height INTEGER, original_orientation INTEGER, file_format INTEGER, time_created INTEGER)
photo.db 的默认路径似乎不起作用,但在参数中指定它可以起作用。