YOUR ACCOUNT

Login or Register to post new topics or replies
westdale

Posts: 60
Filters: 7
Because one of my scripts has a lot of presets, I found it convenient to work in small batches in copies of the same filter and bring them together later. Merging a number of settings and then deleting a few was easier that copying individual ones!
I found that writing down settings manually to apply them in another file was hard work, and I am lazy, so here is a small Python script that helped me.
It merges presets from one filter file into another -- it assumes, but does not check, that they are both the same type and have the same parameters to be set.
I can't attach the file of this type so here goes, hoping that indents don't get destroyed .....
===============================================================

## Merge of two Filter Forge files into a third
## it merges (only) the presets from the second file with all of the first file
## It sets the name of the new filter
## It demotes the DefaultPreset of the ins ert to a plain Preset

import re #regex

## --- se t up the data for the files to be processed ----------------

myFolder = r'L:\GWshare\FilterForge\MyFiltersLDrive\Mergespace'
mainFile = "Polar Twist code.ffxml"
insertFile = "LookupGradients.ffxml"
outputFile = "result.ffxml"
scriptName = "Result"
# if not testing, make the output file name the same as the script name to avoid confusion!
## ------------------------------------------------------------------

fmain = open(myFolder+'\\'+mainFile) # open read text
finsert = open(myFolder+'\\'+insertFile) # open read text
fout = open(myFolder+'\\'+outputFile,'w') # open read text

fm = fmain.readline()
fi = finsert.readline()

while fm.strip() != '</Presets>': # write first file and its presets
fout.write(fm)
fm = fmain.readline()

while fi.strip() != '<Presets>': # drop data before the presets from insert file
fi = finsert.readline()
fi = finsert.readline()

while fi.strip() != '</Presets>' : # write presets from insert file
if 'DefaultPreset' in fi:
fi = fi.replace('Default','') # change default to normal preset
fout.write(fi)
fi = finsert.readline()
fout.write('\t</Presets>\n')

for line in fmain: # write rest of main file
if '<Information' in line :
# replace name of filter with the supplied name
line = re.sub('name-en="[^"]*"', 'name-en="' + scriptName + '"', line)
fout.write(line)

fmain.close()
finsert.close()
fout.close()
  Details E-Mail

Join Our Community!

Filter Forge has a thriving, vibrant, knowledgeable user community. Feel free to join us and have fun!

33,711 Registered Users
+18 new in 30 days!

153,531 Posts
+39 new in 30 days!

15,347 Topics
+72 new in year!

Create an Account

Online Users Last minute:

20 unregistered users.