diff --git a/plugins/FileMonitor/README.md b/plugins/FileMonitor/README.md index 6f6ba89..0c45ccd 100644 --- a/plugins/FileMonitor/README.md +++ b/plugins/FileMonitor/README.md @@ -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. ![ReoccurringTaskScheduler](https://github.com/user-attachments/assets/5a7bf6a4-3bd6-4692-a6c3-e9f8f4664f14) -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) diff --git a/plugins/FileMonitor/filemonitor.py b/plugins/FileMonitor/filemonitor.py index 7cb3a3b..2bd296d 100644 --- a/plugins/FileMonitor/filemonitor.py +++ b/plugins/FileMonitor/filemonitor.py @@ -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("", f"{pathlib.Path(__file__).resolve().parent}{os.sep}") plugin.Log(f"Executing python script {script}.") diff --git a/plugins/FileMonitor/filemonitor_config.py b/plugins/FileMonitor/filemonitor_config.py index 17c82db..135b582 100644 --- a/plugins/FileMonitor/filemonitor_config.py +++ b/plugins/FileMonitor/filemonitor_config.py @@ -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" : "test_script_hello_world.py", "args" : "--MyArguments Hello", "minutes" : 0},