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:
|
else:
|
||||||
self.Log(f"Skipping Job ID({jobDetails['id']}); description={jobDetails['description']}; {jobDetails})")
|
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.
|
# 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('tags', 'tag_ids', [], excludeName=self.excludeMergeTags)
|
||||||
self.mergeItems('performers', 'performer_ids', [])
|
self.mergeItems('performers', 'performer_ids', [])
|
||||||
self.mergeItems('galleries', 'gallery_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('movies', 'movies', [])
|
||||||
self.mergeItems('urls', listToAdd=self.destData['urls'], NotStartWith=self.stash.STASH_URL)
|
self.mergeItems('urls', listToAdd=self.destData['urls'], NotStartWith=self.stash.STASH_URL)
|
||||||
self.mergeItem('studio', 'studio_id', 'id')
|
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('tags', 'tag_ids', [], excludeName=self.excludeMergeTags)
|
||||||
self.mergeItems('performers', 'performer_ids', [])
|
self.mergeItems('performers', 'performer_ids', [])
|
||||||
self.mergeItems('galleries', 'gallery_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('movies', 'movies', [])
|
||||||
self.mergeItems('urls', listToAdd=self.destData['urls'], NotStartWith=self.stash.STASH_URL)
|
self.mergeItems('urls', listToAdd=self.destData['urls'], NotStartWith=self.stash.STASH_URL)
|
||||||
self.mergeItem('studio', 'studio_id', 'id')
|
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.
|
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]**.
|
- 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 True
|
||||||
return False
|
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
|
# Function to form the new filename based on scene details and user settings
|
||||||
def form_filename(original_file_stem, scene_details):
|
def form_filename(original_file_stem, scene_details):
|
||||||
filename_parts = []
|
filename_parts = []
|
||||||
tag_keys_added = 0
|
tag_keys_added = 0
|
||||||
default_title = ''
|
default_title = ''
|
||||||
if_notitle_use_org_filename = config["if_notitle_use_org_filename"]
|
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:
|
if if_notitle_use_org_filename:
|
||||||
default_title = original_file_stem
|
default_title = original_file_stem
|
||||||
# ...................
|
# ...................
|
||||||
@@ -209,16 +252,14 @@ def form_filename(original_file_stem, scene_details):
|
|||||||
filename_parts.append(title)
|
filename_parts.append(title)
|
||||||
elif key == 'performers':
|
elif key == 'performers':
|
||||||
if stash.pluginSettings["performerAppend"]:
|
if stash.pluginSettings["performerAppend"]:
|
||||||
performers = '-'.join([performer.get('name', '') for performer in scene_details.get('performers', [])])
|
performers = getPerformers(scene_details, title)
|
||||||
if performers:
|
if performers != "":
|
||||||
performers += POSTFIX_STYLES.get('performers')
|
performers += POSTFIX_STYLES.get('performers')
|
||||||
stash.Trace(f"(include_keyField_if_in_name={include_keyField_if_in_name})")
|
stash.Trace(f"(performers={performers})")
|
||||||
if include_keyField_if_in_name or performers.lower() not in title.lower():
|
if WRAPPER_STYLES.get('performers'):
|
||||||
stash.Trace(f"(performers={performers})")
|
filename_parts.append(f"{WRAPPER_STYLES['performers'][0]}{performers}{WRAPPER_STYLES['performers'][1]}")
|
||||||
if WRAPPER_STYLES.get('performers'):
|
else:
|
||||||
filename_parts.append(f"{WRAPPER_STYLES['performers'][0]}{performers}{WRAPPER_STYLES['performers'][1]}")
|
filename_parts.append(performers)
|
||||||
else:
|
|
||||||
filename_parts.append(performers)
|
|
||||||
elif key == 'date':
|
elif key == 'date':
|
||||||
scene_date = scene_details.get('date', '')
|
scene_date = scene_details.get('date', '')
|
||||||
if scene_date:
|
if scene_date:
|
||||||
@@ -269,23 +310,24 @@ def form_filename(original_file_stem, scene_details):
|
|||||||
if frame_rate not in title:
|
if frame_rate not in title:
|
||||||
filename_parts.append(frame_rate)
|
filename_parts.append(frame_rate)
|
||||||
elif key == 'galleries':
|
elif key == 'galleries':
|
||||||
galleries = [gallery.get('title', '') for gallery in scene_details.get('galleries', [])]
|
galleries = getGalleries(scene_details, title)
|
||||||
for gallery_name in galleries:
|
if galleries != "":
|
||||||
stash.Trace(f"(include_keyField_if_in_name={include_keyField_if_in_name}) (gallery_name={gallery_name})")
|
galleries += POSTFIX_STYLES.get('galleries')
|
||||||
if include_keyField_if_in_name or gallery_name.lower() not in title.lower():
|
if WRAPPER_STYLES.get('galleries'):
|
||||||
gallery_name += POSTFIX_STYLES.get('galleries')
|
filename_parts.append(f"{WRAPPER_STYLES['galleries'][0]}{galleries}{WRAPPER_STYLES['galleries'][1]}")
|
||||||
if WRAPPER_STYLES.get('galleries'):
|
else:
|
||||||
filename_parts.append(f"{WRAPPER_STYLES['galleries'][0]}{gallery_name}{WRAPPER_STYLES['galleries'][1]}")
|
filename_parts.append(galleries)
|
||||||
else:
|
stash.Trace(f"(galleries={galleries})")
|
||||||
filename_parts.append(gallery_name)
|
|
||||||
stash.Trace(f"(gallery_name={gallery_name})")
|
|
||||||
elif key == 'tags':
|
elif key == 'tags':
|
||||||
if stash.pluginSettings["tagAppend"]:
|
if stash.pluginSettings["tagAppend"]:
|
||||||
for tag in scene_details['tags']:
|
tags = getTags(scene_details, title)
|
||||||
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 tags != "":
|
||||||
if (excludeIgnoreAutoTags == False or tag['ignore_auto_tag'] == False) and (include_keyField_if_in_name or tag['name'].lower() not in title.lower()):
|
tags += POSTFIX_STYLES.get('tag')
|
||||||
add_tag(tag['name'] + POSTFIX_STYLES.get('tag'))
|
if WRAPPER_STYLES.get('tag'):
|
||||||
stash.Trace(f"(tag_name={tag['name']})")
|
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})")
|
stash.Trace(f"(filename_parts={filename_parts})")
|
||||||
new_filename = separator.join(filename_parts).replace(double_separator, separator)
|
new_filename = separator.join(filename_parts).replace(double_separator, separator)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
name: RenameFile
|
name: RenameFile
|
||||||
description: Renames video (scene) file names when the user edits the [Title] field located in the scene [Edit] tab.
|
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
|
url: https://github.com/David-Maisonave/Axter-Stash/tree/main/plugins/RenameFile
|
||||||
settings:
|
settings:
|
||||||
performerAppend:
|
performerAppend:
|
||||||
|
|||||||
Reference in New Issue
Block a user