forked from Github/Axter-Stash
Fixed studio bug caused by new Stash version change.
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.
|
||||||
# ############################################################################################################
|
# ############################################################################################################
|
||||||
|
|||||||
@@ -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.
|
||||||
# ############################################################################################################
|
# ############################################################################################################
|
||||||
|
|||||||
@@ -78,10 +78,12 @@ try:
|
|||||||
if stash.JSON_INPUT['args']['hookContext']['input']:
|
if stash.JSON_INPUT['args']['hookContext']['input']:
|
||||||
if stash.JSON_INPUT['args']['hookContext']['input'] == None:
|
if stash.JSON_INPUT['args']['hookContext']['input'] == None:
|
||||||
doNothing = True
|
doNothing = True
|
||||||
|
stash.Log("input = None")
|
||||||
else:
|
else:
|
||||||
inputToUpdateScenePost = True # This avoids calling rename logic twice
|
inputToUpdateScenePost = True # This avoids calling rename logic twice
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
stash.Warn("Exception thrown")
|
||||||
|
|
||||||
if dry_run:
|
if dry_run:
|
||||||
stash.Log("Dry run mode is enabled.")
|
stash.Log("Dry run mode is enabled.")
|
||||||
@@ -182,21 +184,22 @@ def form_filename(original_file_stem, scene_details):
|
|||||||
stash.Log(f"Skipping tag not in whitelist: {tag_name}")
|
stash.Log(f"Skipping tag not in whitelist: {tag_name}")
|
||||||
stash.Trace(f"(tag_keys_added={tag_keys_added})")
|
stash.Trace(f"(tag_keys_added={tag_keys_added})")
|
||||||
|
|
||||||
|
stash.Trace(f"scene_details = {scene_details}")
|
||||||
|
|
||||||
for key in fieldKeyList:
|
for key in fieldKeyList:
|
||||||
if key == 'studio':
|
if key == 'studio':
|
||||||
if stash.pluginSettings["studioAppend"]:
|
if stash.pluginSettings["studioAppend"]:
|
||||||
studio_name = scene_details.get('studio', {})
|
studio_name = scene_details.get('code', {})
|
||||||
stash.Trace(f"(studio_name={studio_name})")
|
stash.Trace(f"(studio_name={studio_name})")
|
||||||
if studio_name:
|
if studio_name:
|
||||||
studio_name = scene_details.get('studio', {}).get('name', '')
|
studio_name += POSTFIX_STYLES.get('studio')
|
||||||
stash.Trace(f"(studio_name={studio_name})")
|
if include_keyField_if_in_name or studio_name.lower() not in title.lower():
|
||||||
if studio_name:
|
if WRAPPER_STYLES.get('studio'):
|
||||||
studio_name += POSTFIX_STYLES.get('studio')
|
filename_parts.append(f"{WRAPPER_STYLES['studio'][0]}{studio_name}{WRAPPER_STYLES['studio'][1]}")
|
||||||
if include_keyField_if_in_name or studio_name.lower() not in title.lower():
|
else:
|
||||||
if WRAPPER_STYLES.get('studio'):
|
filename_parts.append(studio_name)
|
||||||
filename_parts.append(f"{WRAPPER_STYLES['studio'][0]}{studio_name}{WRAPPER_STYLES['studio'][1]}")
|
else:
|
||||||
else:
|
stash.Trace("Skipping studio because of user setting studioAppend disabled.")
|
||||||
filename_parts.append(studio_name)
|
|
||||||
elif key == 'title':
|
elif key == 'title':
|
||||||
if title: # This value has already been fetch in start of function because it needs to be defined before tags and performers
|
if title: # This value has already been fetch in start of function because it needs to be defined before tags and performers
|
||||||
title += POSTFIX_STYLES.get('title')
|
title += POSTFIX_STYLES.get('title')
|
||||||
@@ -310,7 +313,9 @@ def rename_scene(scene_id):
|
|||||||
maxScanCountForUpdate = 10
|
maxScanCountForUpdate = 10
|
||||||
if scene_details['title'] == None or scene_details['title'] == "":
|
if scene_details['title'] == None or scene_details['title'] == "":
|
||||||
if renameEvenIfTitleEmpty == False:
|
if renameEvenIfTitleEmpty == False:
|
||||||
|
stash.Log("Nothing to do because title is empty.")
|
||||||
return None
|
return None
|
||||||
|
stash.Warn("Title is empty.")
|
||||||
maxScanCountDefault = 1
|
maxScanCountDefault = 1
|
||||||
maxScanCountForUpdate = 1
|
maxScanCountForUpdate = 1
|
||||||
if not os.path.isfile(original_file_path) and not taskqueue.clearDupTagsJobOnTaskQueue() and not taskqueue.deleteTaggedScenesJobOnTaskQueue() and not taskqueue.tooManyScanOnTaskQueue(maxScanCountDefault):
|
if not os.path.isfile(original_file_path) and not taskqueue.clearDupTagsJobOnTaskQueue() and not taskqueue.deleteTaggedScenesJobOnTaskQueue() and not taskqueue.tooManyScanOnTaskQueue(maxScanCountDefault):
|
||||||
@@ -340,7 +345,7 @@ def rename_scene(scene_id):
|
|||||||
new_filename = truncated_filename + '_' + hash_suffix + Path(original_file_path).suffix
|
new_filename = truncated_filename + '_' + hash_suffix + Path(original_file_path).suffix
|
||||||
newFilenameWithExt = new_filename + Path(original_file_path).suffix
|
newFilenameWithExt = new_filename + Path(original_file_path).suffix
|
||||||
new_file_path = f"{original_parent_directory}{os.sep}{new_filename}{Path(original_file_name).suffix}"
|
new_file_path = f"{original_parent_directory}{os.sep}{new_filename}{Path(original_file_name).suffix}"
|
||||||
stash.Trace(f"(original_file_name={original_file_name})(new_file_path={new_file_path})")
|
stash.Trace(f"(original_file_name={original_file_name}) (newFilenameWithExt={newFilenameWithExt})(new_file_path={new_file_path}) (FileID={scene_details['files'][0]['id']})")
|
||||||
if original_file_name == newFilenameWithExt or original_file_name == new_filename:
|
if original_file_name == newFilenameWithExt or original_file_name == new_filename:
|
||||||
stash.Log(f"Nothing to do, because new file name matches original file name: (newFilenameWithExt={newFilenameWithExt})")
|
stash.Log(f"Nothing to do, because new file name matches original file name: (newFilenameWithExt={newFilenameWithExt})")
|
||||||
return None
|
return None
|
||||||
@@ -375,7 +380,9 @@ def rename_scene(scene_id):
|
|||||||
# ToDo: Add delay rename here
|
# ToDo: Add delay rename here
|
||||||
raise
|
raise
|
||||||
|
|
||||||
if not taskqueue.tooManyScanOnTaskQueue(maxScanCountForUpdate):
|
if stash.renameFileNameInDB(scene_details['files'][0]['id'], original_file_name, newFilenameWithExt):
|
||||||
|
stash.Trace("DB rename success")
|
||||||
|
elif not taskqueue.tooManyScanOnTaskQueue(maxScanCountForUpdate):
|
||||||
stash.Trace(f"Calling [metadata_scan] for path {original_parent_directory.resolve().as_posix()}")
|
stash.Trace(f"Calling [metadata_scan] for path {original_parent_directory.resolve().as_posix()}")
|
||||||
stash.metadata_scan(paths=[original_parent_directory.resolve().as_posix()])
|
stash.metadata_scan(paths=[original_parent_directory.resolve().as_posix()])
|
||||||
time.sleep(POST_SCAN_DELAY) # After a scan, need a few seconds delay before fetching data.
|
time.sleep(POST_SCAN_DELAY) # After a scan, need a few seconds delay before fetching data.
|
||||||
|
|||||||
Reference in New Issue
Block a user