27 Simple script
for converting darktable .dtstyle files to .xmp (version 2)
31import xml.etree.ElementTree
as ET
34 print (
"usage:",argv[0],
"style.dtstyle file.xmp")
38if not path.exists(argv[1]):
39 print (
"ERROR: input file:",argv[1],
"doesn't exists.")
43if path.exists(argv[2]):
44 print (
"ERROR: output file:",argv[2],
"already exists.")
48 styletree = ET.parse(argv[1])
or die(
"This doesn't work for me")
50 print (
"ERROR: input file:",argv[1],
"is not a valid dtsyle-file.")
53styleroot = styletree.getroot()
56xmpmeta=ET.Element(
"x:xmpmeta",{
"xmlns:x":
"adobe:ns:meta/",
57 "x:xmptk":
"XMP Core 4.4.0-Exiv2"})
58rdf=ET.SubElement(xmpmeta,
"rdf:RDF",{
"xmlns:rdf":
"http://www.w3.org/1999/02/22-rdf-syntax-ns#"})
59description=ET.SubElement(rdf,
"rdf:Description",{
"rdf:about":
"",
60 "xmlns:xmp":
"http://ns.adobe.com/xap/1.0/",
61 "xmlns:xmpMM":
"http://ns.adobe.com/xap/1.0/mm/",
62 "xmlns:dc":
"http://purl.org/dc/elements/1.1/",
63 "xmlns:darktable":
"http://darktable.sf.net/",
65 "xmpMM:DerivedFrom":
"PureAwesome.raw",
66 "darktable:xmp_version":
"2",
67 "darktable:raw_params":
"0",
68 "darktable:auto_presets_applied":
"1"})
71maskid=ET.SubElement(description,
"darktable:mask_id")
72maskid.append(ET.Element(
"rdf:Seq"))
73masktype=ET.SubElement(description,
"darktable:mask_type")
74masktype.append(ET.Element(
"rdf:Seq"))
75maskname=ET.SubElement(description,
"darktable:mask_name")
76maskname.append(ET.Element(
"rdf:Seq"))
77maskversion=ET.SubElement(description,
"darktable:mask_version")
78maskversion.append(ET.Element(
"rdf:Seq"))
79mask=ET.SubElement(description,
"darktable:mask")
80mask.append(ET.Element(
"rdf:Seq"))
81masknb=ET.SubElement(description,
"darktable:mask_nb")
82masknb.append(ET.Element(
"rdf:Seq"))
83masksrc=ET.SubElement(description,
"darktable:mask_src")
84masksrc.append(ET.Element(
"rdf:Seq"))
85darktablehistory=ET.SubElement(description,
"darktable:history")
86darktablehistoryid=ET.SubElement(darktablehistory,
"rdf:Seq")
89for plugins
in styleroot.findall(
'./style/plugin'):
90 enabled = plugins.find(
'enabled')
91 if enabled.text ==
"1":
92 li=ET.SubElement(darktablehistoryid,
"rdf:li")
93 li.set(
"darktable:enabled",
"1")
95 modversion = plugins.find(
'module')
96 if modversion !=
None:
97 li.set(
"darktable:modversion",modversion.text)
99 operation = plugins.find(
'operation')
100 if operation !=
None:
101 li.set(
"darktable:operation",operation.text)
103 params = plugins.find(
'op_params')
105 li.set(
"darktable:params",params.text)
107 blendop_params = plugins.find(
'blendop_params')
108 if blendop_params !=
None:
109 li.set(
"darktable:blendop_params",blendop_params.text)
111 blendop_version = plugins.find(
'blendop_version')
112 if blendop_version !=
None:
113 li.set(
"darktable:blendop_version",blendop_version.text)
115 multi_name = plugins.find(
'multi_name')
116 if multi_name !=
None:
117 if multi_name.text
is None:
118 li.set(
"darktable:multi_name",
"")
120 li.set(
"darktable:multi_name",multi_name.text)
122 multi_priority = plugins.find(
'multi_priority')
123 if multi_priority !=
None:
124 li.set(
"darktable:multi_priority",multi_priority.text)
127ET.ElementTree(xmpmeta).write(argv[2],
"UTF-8")