New feature - Restock / stock / out of stock monitor option/mode

This commit is contained in:
dgtlmoon
2023-03-18 20:36:26 +01:00
parent 2bc988dffc
commit 6e71088cde
28 changed files with 531 additions and 48 deletions

View File

@@ -4,7 +4,8 @@ import queue
import time
from changedetectionio import content_fetcher
from .fetchers.text_json_diff import FilterNotFoundInResponse
from .processors.text_json_diff import FilterNotFoundInResponse
# A single update worker
#
@@ -152,9 +153,8 @@ class update_worker(threading.Thread):
os.unlink(full_path)
def run(self):
from .fetchers import text_json_diff as fetch_site_status
update_handler = fetch_site_status.perform_site_check(datastore=self.datastore)
from .processors import text_json_diff, restock_diff
while not self.app.config.exit.is_set():
@@ -171,11 +171,21 @@ class update_worker(threading.Thread):
changed_detected = False
contents = b''
process_changedetection_results = True
update_obj= {}
print("> Processing UUID {} Priority {} URL {}".format(uuid, queued_item_data.priority, self.datastore.data['watching'][uuid]['url']))
update_obj = {}
print("> Processing UUID {} Priority {} URL {}".format(uuid, queued_item_data.priority,
self.datastore.data['watching'][uuid]['url']))
now = time.time()
try:
processor = self.datastore.data['watching'][uuid].get('processor','text_json_diff')
# @todo some way to switch by name
if processor == 'restock_diff':
update_handler = restock_diff.perform_site_check(datastore=self.datastore)
else:
# Used as a default and also by some tests
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'))
# Re #342
# In Python 3, all strings are sequences of Unicode characters. There is a bytes type that holds raw bytes.