forked from Github/Axter-Stash
Fixed other fields which were broken by changes in latest version of Stash
This commit is contained in:
@@ -802,6 +802,36 @@ class StashPluginHelper(StashInterface):
|
||||
else:
|
||||
self.Log(f"Skipping Job ID({jobDetails['id']}); description={jobDetails['description']}; {jobDetails})")
|
||||
|
||||
def toJson(self, data, replaceSingleQuote=False):
|
||||
if replaceSingleQuote:
|
||||
data = data.replace("'", '"')
|
||||
data = data.replace("\\", "\\\\")
|
||||
data = data.replace("\\\\\\\\", "\\\\")
|
||||
return json.loads(data)
|
||||
|
||||
def isCorrectDbVersion(self, verNumber = 68):
|
||||
results = self.sql_query("select version from schema_migrations")
|
||||
# self.Log(results)
|
||||
if len(results['rows']) == 0 or len(results['rows'][0]) == 0:
|
||||
return False
|
||||
return int(results['rows'][0][0]) == verNumber
|
||||
|
||||
def renameFileNameInDB(self, fileId, oldName, newName):
|
||||
if self.isCorrectDbVersion():
|
||||
query = f'update files set basename = "{newName}" where basename = "{oldName}" and id = {fileId};'
|
||||
self.Trace(f"Executing query ({query})")
|
||||
results = self.sql_commit(query)
|
||||
if 'rows_affected' in results and results['rows_affected'] == 1:
|
||||
return True
|
||||
return False
|
||||
|
||||
def getFileNameFromDB(self, id):
|
||||
results = self.sql_query(f'select basename from files where id = {id};')
|
||||
self.Trace(f"results = ({results})")
|
||||
if len(results['rows']) == 0 or len(results['rows'][0]) == 0:
|
||||
return None
|
||||
return results['rows'][0][0]
|
||||
|
||||
# ############################################################################################################
|
||||
# Functions which are candidates to be added to parent class use snake_case naming convention.
|
||||
# ############################################################################################################
|
||||
@@ -926,7 +956,7 @@ class mergeMetadata: # A class to merge scene metadata from source scene to dest
|
||||
self.mergeItems('tags', 'tag_ids', [], excludeName=self.excludeMergeTags)
|
||||
self.mergeItems('performers', 'performer_ids', [])
|
||||
self.mergeItems('galleries', 'gallery_ids', [])
|
||||
# ToDo: Need to find out why the following line no longer works in new Stash version
|
||||
# Looks like movies has been removed from new Stash version
|
||||
# self.mergeItems('movies', 'movies', [])
|
||||
self.mergeItems('urls', listToAdd=self.destData['urls'], NotStartWith=self.stash.STASH_URL)
|
||||
self.mergeItem('studio', 'studio_id', 'id')
|
||||
|
||||
@@ -956,7 +956,7 @@ class mergeMetadata: # A class to merge scene metadata from source scene to dest
|
||||
self.mergeItems('tags', 'tag_ids', [], excludeName=self.excludeMergeTags)
|
||||
self.mergeItems('performers', 'performer_ids', [])
|
||||
self.mergeItems('galleries', 'gallery_ids', [])
|
||||
# ToDo: Need to find out why the following line no longer works in new Stash version
|
||||
# Looks like movies has been removed from new Stash version
|
||||
# self.mergeItems('movies', 'movies', [])
|
||||
self.mergeItems('urls', listToAdd=self.destData['urls'], NotStartWith=self.stash.STASH_URL)
|
||||
self.mergeItem('studio', 'studio_id', 'id')
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# RenameFile: Ver 0.5.3 (By David Maisonave)
|
||||
# RenameFile: Ver 0.5.4 (By David Maisonave)
|
||||
RenameFile is a [Stash](https://github.com/stashapp/stash) plugin.
|
||||
|
||||
- The plugin allows user to rename one scene at a time by editing the **[Title]** field and then clicking **[Save]**.
|
||||
|
||||
@@ -143,14 +143,57 @@ def should_exclude_path(scene_details):
|
||||
return True
|
||||
return False
|
||||
|
||||
include_keyField_if_in_name = stash.pluginSettings["z_keyFIeldsIncludeInFileName"]
|
||||
excludeIgnoreAutoTags = config["excludeIgnoreAutoTags"]
|
||||
|
||||
def getPerformers(scene, title):
|
||||
title = title.lower()
|
||||
results = ""
|
||||
for performer in scene['performers']:
|
||||
name = stash.find_performer(performer['id'])['name']
|
||||
stash.Trace(f"performer = {name}")
|
||||
if not include_keyField_if_in_name:
|
||||
if name.lower() in title:
|
||||
stash.Trace(f"Skipping performer name '{name}' because already in title: '{title}'")
|
||||
continue
|
||||
results += f"{name}, "
|
||||
return results.strip(", ")
|
||||
|
||||
def getGalleries(scene, title):
|
||||
results = ""
|
||||
for gallery in scene['galleries']:
|
||||
name = stash.find_gallery(gallery['id'])['title']
|
||||
stash.Trace(f"gallery = {name}")
|
||||
if not include_keyField_if_in_name:
|
||||
if name.lower() in title:
|
||||
stash.Trace(f"Skipping gallery name '{name}' because already in title: '{title}'")
|
||||
continue
|
||||
results += f"{name}, "
|
||||
return results.strip(", ")
|
||||
|
||||
def getTags(scene, title):
|
||||
title = title.lower()
|
||||
results = ""
|
||||
for tag in scene['tags']:
|
||||
tag_details = stash.find_tag(int(tag['id']))
|
||||
name = tag_details['name']
|
||||
stash.Trace(f"tag = {name}")
|
||||
if excludeIgnoreAutoTags == True and tag_details['ignore_auto_tag'] == True:
|
||||
stash.Trace(f"Skipping tag name '{name}' because ignore_auto_tag is True.")
|
||||
continue
|
||||
if not include_keyField_if_in_name:
|
||||
if name.lower() in title:
|
||||
stash.Trace(f"Skipping tag name '{name}' because already in title: '{title}'")
|
||||
continue
|
||||
results += f"{name}, "
|
||||
return results.strip(", ")
|
||||
|
||||
# Function to form the new filename based on scene details and user settings
|
||||
def form_filename(original_file_stem, scene_details):
|
||||
filename_parts = []
|
||||
tag_keys_added = 0
|
||||
default_title = ''
|
||||
if_notitle_use_org_filename = config["if_notitle_use_org_filename"]
|
||||
excludeIgnoreAutoTags = config["excludeIgnoreAutoTags"]
|
||||
include_keyField_if_in_name = stash.pluginSettings["z_keyFIeldsIncludeInFileName"]
|
||||
if if_notitle_use_org_filename:
|
||||
default_title = original_file_stem
|
||||
# ...................
|
||||
@@ -209,11 +252,9 @@ def form_filename(original_file_stem, scene_details):
|
||||
filename_parts.append(title)
|
||||
elif key == 'performers':
|
||||
if stash.pluginSettings["performerAppend"]:
|
||||
performers = '-'.join([performer.get('name', '') for performer in scene_details.get('performers', [])])
|
||||
if performers:
|
||||
performers = getPerformers(scene_details, title)
|
||||
if performers != "":
|
||||
performers += POSTFIX_STYLES.get('performers')
|
||||
stash.Trace(f"(include_keyField_if_in_name={include_keyField_if_in_name})")
|
||||
if include_keyField_if_in_name or performers.lower() not in title.lower():
|
||||
stash.Trace(f"(performers={performers})")
|
||||
if WRAPPER_STYLES.get('performers'):
|
||||
filename_parts.append(f"{WRAPPER_STYLES['performers'][0]}{performers}{WRAPPER_STYLES['performers'][1]}")
|
||||
@@ -269,23 +310,24 @@ def form_filename(original_file_stem, scene_details):
|
||||
if frame_rate not in title:
|
||||
filename_parts.append(frame_rate)
|
||||
elif key == 'galleries':
|
||||
galleries = [gallery.get('title', '') for gallery in scene_details.get('galleries', [])]
|
||||
for gallery_name in galleries:
|
||||
stash.Trace(f"(include_keyField_if_in_name={include_keyField_if_in_name}) (gallery_name={gallery_name})")
|
||||
if include_keyField_if_in_name or gallery_name.lower() not in title.lower():
|
||||
gallery_name += POSTFIX_STYLES.get('galleries')
|
||||
galleries = getGalleries(scene_details, title)
|
||||
if galleries != "":
|
||||
galleries += POSTFIX_STYLES.get('galleries')
|
||||
if WRAPPER_STYLES.get('galleries'):
|
||||
filename_parts.append(f"{WRAPPER_STYLES['galleries'][0]}{gallery_name}{WRAPPER_STYLES['galleries'][1]}")
|
||||
filename_parts.append(f"{WRAPPER_STYLES['galleries'][0]}{galleries}{WRAPPER_STYLES['galleries'][1]}")
|
||||
else:
|
||||
filename_parts.append(gallery_name)
|
||||
stash.Trace(f"(gallery_name={gallery_name})")
|
||||
filename_parts.append(galleries)
|
||||
stash.Trace(f"(galleries={galleries})")
|
||||
elif key == 'tags':
|
||||
if stash.pluginSettings["tagAppend"]:
|
||||
for tag in scene_details['tags']:
|
||||
stash.Trace(f"(include_keyField_if_in_name={include_keyField_if_in_name}) (tag_name={tag['name']}; ignore_auto_tag={tag['ignore_auto_tag']})")
|
||||
if (excludeIgnoreAutoTags == False or tag['ignore_auto_tag'] == False) and (include_keyField_if_in_name or tag['name'].lower() not in title.lower()):
|
||||
add_tag(tag['name'] + POSTFIX_STYLES.get('tag'))
|
||||
stash.Trace(f"(tag_name={tag['name']})")
|
||||
tags = getTags(scene_details, title)
|
||||
if tags != "":
|
||||
tags += POSTFIX_STYLES.get('tag')
|
||||
if WRAPPER_STYLES.get('tag'):
|
||||
filename_parts.append(f"{WRAPPER_STYLES['tag'][0]}{tags}{WRAPPER_STYLES['tag'][1]}")
|
||||
else:
|
||||
filename_parts.append(tags)
|
||||
stash.Trace(f"(tags={tags})")
|
||||
|
||||
stash.Trace(f"(filename_parts={filename_parts})")
|
||||
new_filename = separator.join(filename_parts).replace(double_separator, separator)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
name: RenameFile
|
||||
description: Renames video (scene) file names when the user edits the [Title] field located in the scene [Edit] tab.
|
||||
version: 0.5.3
|
||||
version: 0.5.4
|
||||
url: https://github.com/David-Maisonave/Axter-Stash/tree/main/plugins/RenameFile
|
||||
settings:
|
||||
performerAppend:
|
||||
|
||||
Reference in New Issue
Block a user