This commit is contained in:
mrq 2022-10-25 21:02:44 +00:00
parent bd93df445f
commit 3eb5ab52fa
2 changed files with 26 additions and 12 deletions

View File

@ -55,6 +55,8 @@ let config = {
reverseTags: false, // inverts sorting, prioritizing tags with little representation in the model reverseTags: false, // inverts sorting, prioritizing tags with little representation in the model
tagDelimiter: ",", // what separates each tag in the filename, web UI will accept comma separated filenames tagDelimiter: ",", // what separates each tag in the filename, web UI will accept comma separated filenames
invalidCharacters: "\\/:*?\"<>|", // characters that can't go in a filename
} }
// import source // import source
@ -162,21 +164,27 @@ let parse = async () => {
config.tags[tag] = (config.tagsOverrideStart--) * scale; config.tags[tag] = (config.tagsOverrideStart--) * scale;
} }
} else if ( !config.tags[tag] ) continue; } else if ( !config.tags[tag] ) continue;
if ( tag.indexOf("/") >= 0 ) continue; // illegal filename character
let filtered = false;
for ( let i in config.invalidCharacters ) {
if ( tag.indexOf(config.invalidCharacters[i]) >= 0 ) {
filtered = true;
break;
}
}
if ( config.filter ) { if ( config.filter ) {
let should = false;
for ( let i in config.filters ) { for ( let i in config.filters ) {
let filter = config.filters[i]; let filter = config.filters[i];
if ( filter === tag || ( filter instanceof RegExp && tag.match(filter) ) ) { if ( filter === tag || ( filter instanceof RegExp && tag.match(filter) ) ) {
should = true; filtered = true;
break; break;
} }
} }
if ( should ) continue; if ( filtered ) continue;
} }
tags.push(tag); if ( !filtered ) tags.push(tag);
} }
} }
tags = tags.sort( (a, b) => { tags = tags.sort( (a, b) => {

View File

@ -17,7 +17,7 @@ config = {
'cache': './data/cache.json', # JSON file of cached tags, will speed up processing if re-running 'cache': './data/cache.json', # JSON file of cached tags, will speed up processing if re-running
'rateLimit': 500, # time to wait between requests, in milliseconds, e621 imposes a rate limit of 2 requests per second 'rateLimit': 500, # time to wait between requests, in milliseconds, e621 imposes a rate limit of 2 requests per second
'filenameLimit': 245, # maximum characters to put in the filename, necessary to abide by filesystem limitations 'filenameLimit': 240, # maximum characters to put in the filename, necessary to abide by filesystem limitations
# you can set this to 245, as the web UI has uncapped the prompt limit, but I have yet to test this if this limit was also lifted for textual inversion # you can set this to 245, as the web UI has uncapped the prompt limit, but I have yet to test this if this limit was also lifted for textual inversion
'filter': True, 'filter': True,
@ -60,6 +60,8 @@ config = {
'reverseTags': False, # inverts sorting, prioritizing tags with little representation in the model 'reverseTags': False, # inverts sorting, prioritizing tags with little representation in the model
'tagDelimiter': ",", # what separates each tag in the filename, web UI will accept comma separated filenames 'tagDelimiter': ",", # what separates each tag in the filename, web UI will accept comma separated filenames
'invalidCharacters': "\\/:*?\"<>|", # characters that can't go in a filename
} }
if os.path.exists(config['source']): if os.path.exists(config['source']):
@ -155,21 +157,25 @@ def parse():
config['tagsOverrideStart'] = config['tagsOverrideStart'] - 1 config['tagsOverrideStart'] = config['tagsOverrideStart'] - 1
elif tag not in config['tags']: elif tag not in config['tags']:
continue continue
if "/" in tag or ":" in tag:
continue # illegal filename character filtered = False
for char in config['invalidCharacters']: # illegal filename character
if char in tag:
filtered = True
break
if config['filter']: if config['filter']:
should = False
if tag in config['filters']: if tag in config['filters']:
continue # was break in the original script, fixed ;) continue # was break in the original script, fixed ;)
for filter in config['filtersRegex']: for filter in config['filtersRegex']:
if re.search(filter, tag): if re.search(filter, tag):
should = True filtered = True
break break
if should: if filtered:
continue continue
tags.append(tag) if not filtered:
tags.append(tag)
tags.sort(key=lambda x: -config['tags'][x], reverse=config['reverseTags']) tags.sort(key=lambda x: -config['tags'][x], reverse=config['reverseTags'])
if artist: if artist:
tags.insert(0, artist) tags.insert(0, artist)