forked from Github/Axter-Stash
Added support for GQL calls in the scheduler
This commit is contained in:
@@ -27,9 +27,9 @@ From the GUI, FileMonitor can be started as a service or as a plugin. The recomm
|
||||
To enable the scheduler go to **Stash->Settings->Plugins->Plugins->FileMonitor** and enable the **Scheduler** option.
|
||||

|
||||
|
||||
To configure the schedule or to add new task, edit the **task_reoccurring_scheduler** section in the **filemonitor_config.py** file.
|
||||
To configure the schedule or to add new task, edit the **task_scheduler** section in the **filemonitor_config.py** file.
|
||||
```` python
|
||||
"task_reoccurring_scheduler": [
|
||||
"task_scheduler": [
|
||||
{"task" : "Clean", "hours" : 48}, # Maintenance -> [Clean] (every 2 days)
|
||||
{"task" : "Auto Tag", "hours" : 24}, # Auto Tag -> [Auto Tag] (Daily)
|
||||
{"task" : "Optimise Database", "hours" : 24}, # Maintenance -> [Optimise Database] (Daily)
|
||||
|
||||
@@ -110,7 +110,7 @@ class StashScheduler: # Stash Scheduler
|
||||
def __init__(self):
|
||||
import schedule # pip install schedule # https://github.com/dbader/schedule
|
||||
dayOfTheWeek = ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"]
|
||||
for task in plugin.pluginConfig['task_reoccurring_scheduler']:
|
||||
for task in plugin.pluginConfig['task_scheduler']:
|
||||
if 'hours' in task and task['hours'] > 0:
|
||||
plugin.Log(f"Adding to reoccurring scheduler task '{task['task']}' at {task['hours']} hours interval")
|
||||
schedule.every(task['hours']).hours.do(self.runTask, task)
|
||||
@@ -120,6 +120,9 @@ class StashScheduler: # Stash Scheduler
|
||||
elif 'days' in task and task['days'] > 0: # Left here for backward compatibility, but should use weekday logic instead.
|
||||
plugin.Log(f"Adding to reoccurring scheduler task '{task['task']}' at {task['days']} days interval")
|
||||
schedule.every(task['days']).days.do(self.runTask, task)
|
||||
elif 'seconds' in task and task['seconds'] > 0: # This is mainly here for test purposes only
|
||||
plugin.Log(f"Adding to reoccurring scheduler task '{task['task']}' at {task['seconds']} seconds interval")
|
||||
schedule.every(task['seconds']).seconds.do(self.runTask, task)
|
||||
elif 'weekday' in task and task['weekday'].lower() in dayOfTheWeek and 'time' in task:
|
||||
if 'monthly' in task:
|
||||
plugin.Log(f"Adding to reoccurring scheduler task '{task['task']}' monthly on number {task['monthly']} {task['weekday']} at {task['time']}")
|
||||
@@ -170,6 +173,8 @@ class StashScheduler: # Stash Scheduler
|
||||
plugin.STASH_INTERFACE.metadata_autotag(paths=stashPaths)
|
||||
elif task['task'] == "Optimise Database":
|
||||
plugin.STASH_INTERFACE.optimise_database()
|
||||
elif task['task'] == "GQL":
|
||||
plugin.STASH_INTERFACE.call_GQL(task['input'])
|
||||
elif task['task'] == "python":
|
||||
script = task['script'].replace("<plugin_path>", f"{pathlib.Path(__file__).resolve().parent}{os.sep}")
|
||||
plugin.Log(f"Executing python script {script}.")
|
||||
|
||||
@@ -17,11 +17,14 @@ config = {
|
||||
# Enable to run metadata clean task after file deletion.
|
||||
"runCleanAfterDelete": False,
|
||||
|
||||
# The reoccurring scheduler task list.
|
||||
# The task scheduler list.
|
||||
# Task can be scheduled to run monthly, weekly, hourly, and by minutes. For best results use the scheduler with FileMonitor running as a service.
|
||||
# The frequency field can be in minutes or hours. A zero frequency value disables the task.
|
||||
# Note: Both seconds and days are also supported for the frequency field.
|
||||
# However, seconds is mainly used for test purposes.
|
||||
# And days usage is discourage, because it only works if FileMonitor is running for X many days none-stop.
|
||||
# For weekly and monthly task, use the syntax as done in the **Generate** and **Backup** task below.
|
||||
"task_reoccurring_scheduler": [
|
||||
"task_scheduler": [
|
||||
{"task" : "Auto Tag", "hours" : 24}, # Auto Tag -> [Auto Tag] (Daily)
|
||||
{"task" : "Clean", "hours" : 48}, # Maintenance -> [Clean] (every 2 days)
|
||||
{"task" : "Clean Generated Files", "hours" : 48}, # Maintenance -> [Clean Generated Files] (every 2 days)
|
||||
@@ -43,10 +46,17 @@ config = {
|
||||
# Example monthly method.
|
||||
{"task" : "Backup", "weekday" : "sunday", "time" : "01:00", "monthly" : 2}, # Backup -> [Backup] 2nd sunday of the month at 1AM (01:00)
|
||||
|
||||
# Note:
|
||||
# The below examples are done using hours and minutes because the task is easily disabled (deactivated) by a zero value entry.
|
||||
# Any of these task types can be converted to a weekly/monthly sysntax.
|
||||
|
||||
# Example task for calling another Stash plugin, which needs plugin name and plugin ID.
|
||||
{"task" : "PluginButtonName_Here", "pluginId" : "PluginId_Here", "hours" : 0}, # The zero frequency value makes this task disabled.
|
||||
# Add additional plugin task here.
|
||||
|
||||
# Example task to call call_GQL API with custom input
|
||||
{"task" : "GQL", "input" : "mutation OptimiseDatabase { optimiseDatabase }", "minutes" : 0},
|
||||
|
||||
# Example task to call a python script
|
||||
{"task" : "python", "script" : "<plugin_path>test_script_hello_world.py", "args" : "--MyArguments Hello", "minutes" : 0},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user