mirror of
https://github.com/dgtlmoon/changedetection.io.git
synced 2025-11-07 10:07:00 +00:00
Compare commits
1 Commits
3423-opena
...
plugin-arc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
10181669ba |
@@ -18,7 +18,26 @@ class difference_detection_processor():
|
|||||||
|
|
||||||
|
|
||||||
def available_processors():
|
def available_processors():
|
||||||
|
import importlib
|
||||||
|
import pkgutil
|
||||||
|
|
||||||
from . import restock_diff, text_json_diff
|
from . import restock_diff, text_json_diff
|
||||||
x=[('text_json_diff', text_json_diff.name), ('restock_diff', restock_diff.name)]
|
|
||||||
# @todo Make this smarter with introspection of sorts.
|
processors = [('text_json_diff', text_json_diff.name), ('restock_diff', restock_diff.name)]
|
||||||
return x
|
|
||||||
|
discovered_plugins = {
|
||||||
|
name: importlib.import_module(name)
|
||||||
|
for finder, name, ispkg
|
||||||
|
in pkgutil.iter_modules()
|
||||||
|
if name.startswith('changedetectionio-plugin-')
|
||||||
|
}
|
||||||
|
|
||||||
|
try:
|
||||||
|
for name, plugin in discovered_plugins.items():
|
||||||
|
if hasattr(plugin, 'processors'):
|
||||||
|
for machine_name, desc in plugin.processors.items():
|
||||||
|
processors.append((machine_name, desc))
|
||||||
|
except Exception as e:
|
||||||
|
print (f"Problem fetching one or more plugins")
|
||||||
|
|
||||||
|
return processors
|
||||||
|
|||||||
@@ -126,6 +126,7 @@ class ChangeDetectionStore:
|
|||||||
|
|
||||||
self.needs_write = True
|
self.needs_write = True
|
||||||
|
|
||||||
|
self.scan_plugins()
|
||||||
# Finally start the thread that will manage periodic data saves to JSON
|
# Finally start the thread that will manage periodic data saves to JSON
|
||||||
save_data_thread = threading.Thread(target=self.save_datastore).start()
|
save_data_thread = threading.Thread(target=self.save_datastore).start()
|
||||||
|
|
||||||
@@ -612,6 +613,19 @@ class ChangeDetectionStore:
|
|||||||
def tag_exists_by_name(self, tag_name):
|
def tag_exists_by_name(self, tag_name):
|
||||||
return any(v.get('title', '').lower() == tag_name.lower() for k, v in self.__data['settings']['application']['tags'].items())
|
return any(v.get('title', '').lower() == tag_name.lower() for k, v in self.__data['settings']['application']['tags'].items())
|
||||||
|
|
||||||
|
def scan_plugins(self):
|
||||||
|
import importlib
|
||||||
|
import pkgutil
|
||||||
|
|
||||||
|
discovered_plugins = {
|
||||||
|
name: importlib.import_module(name)
|
||||||
|
for finder, name, ispkg
|
||||||
|
in pkgutil.iter_modules()
|
||||||
|
if name.startswith('changedetectionio-plugin-')
|
||||||
|
}
|
||||||
|
|
||||||
|
return discovered_plugins
|
||||||
|
|
||||||
# Run all updates
|
# Run all updates
|
||||||
# IMPORTANT - Each update could be run even when they have a new install and the schema is correct
|
# IMPORTANT - Each update could be run even when they have a new install and the schema is correct
|
||||||
# So therefor - each `update_n` should be very careful about checking if it needs to actually run
|
# So therefor - each `update_n` should be very careful about checking if it needs to actually run
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
|
import importlib
|
||||||
import os
|
import os
|
||||||
import threading
|
import pkgutil
|
||||||
import queue
|
import queue
|
||||||
|
import threading
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from changedetectionio import content_fetcher
|
from changedetectionio import content_fetcher
|
||||||
@@ -229,13 +231,28 @@ class update_worker(threading.Thread):
|
|||||||
now = time.time()
|
now = time.time()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
processor = self.datastore.data['watching'][uuid].get('processor','text_json_diff')
|
processor = self.datastore.data['watching'][uuid].get('processor', 'text_json_diff')
|
||||||
|
|
||||||
# @todo some way to switch by name
|
# @todo some way to switch by name
|
||||||
if processor == 'restock_diff':
|
if processor == 'restock_diff':
|
||||||
update_handler = restock_diff.perform_site_check(datastore=self.datastore)
|
update_handler = restock_diff.perform_site_check(datastore=self.datastore)
|
||||||
else:
|
else:
|
||||||
# Used as a default and also by some tests
|
# Used as a default and also by some tests
|
||||||
|
discovered_plugins = {
|
||||||
|
name: importlib.import_module(name)
|
||||||
|
for finder, name, ispkg
|
||||||
|
in pkgutil.iter_modules()
|
||||||
|
if name.startswith('changedetectionio-plugin-')
|
||||||
|
}
|
||||||
|
|
||||||
|
for module_name, plugin in discovered_plugins.items():
|
||||||
|
if hasattr(plugin, 'processors'):
|
||||||
|
for machine_name, desc in plugin.processors:
|
||||||
|
if machine_name == processor:
|
||||||
|
module = importlib.import_module(f"{module_name}.processors.{plugin}")
|
||||||
|
update_handler = module.perform_site_check(datastore=self.datastore)
|
||||||
|
#processors.append((machine_name, desc))
|
||||||
|
|
||||||
update_handler = text_json_diff.perform_site_check(datastore=self.datastore)
|
update_handler = text_json_diff.perform_site_check(datastore=self.datastore)
|
||||||
|
|
||||||
changed_detected, update_obj, contents = update_handler.run(uuid, skip_when_checksum_same=queued_item_data.item.get('skip_when_checksum_same'))
|
changed_detected, update_obj, contents = update_handler.run(uuid, skip_when_checksum_same=queued_item_data.item.get('skip_when_checksum_same'))
|
||||||
|
|||||||
Reference in New Issue
Block a user