parent
8a35d62e02
commit
321ab19ffb
@ -0,0 +1,23 @@
|
||||
import pluggy
|
||||
from typing import Dict
|
||||
from changedetectionio.model import Watch as Watch
|
||||
|
||||
plugin_namespace = "changedetectionio.restock_price_scraper"
|
||||
hookspec = pluggy.HookspecMarker(plugin_namespace)
|
||||
|
||||
class HookSpec:
|
||||
@hookspec
|
||||
def scrape_price_restock(self, watch: Watch.model, html_content: str, screenshot: bytes, update_obj: Dict) -> Dict:
|
||||
"""
|
||||
Scrape price and restock data from html_content and/or screenshot and return via update_obj
|
||||
|
||||
Args:
|
||||
watch (Watch.model): The watch object containing watch configuration.
|
||||
html_content (str): The HTML content to scrape.
|
||||
screenshot (bytes): The screenshot data.
|
||||
update_obj (Dict): The dictionary to update with scraped data.
|
||||
|
||||
Returns:
|
||||
Optional[Dict]: The updated dictionary with the scraped price data, or None if no update is made.
|
||||
"""
|
||||
|
@ -0,0 +1,17 @@
|
||||
import pluggy
|
||||
from .hookspecs import HookSpec
|
||||
import importlib.metadata
|
||||
|
||||
# Define the plugin namespace
|
||||
plugin_namespace = "changedetectionio.restock_price_scraper"
|
||||
|
||||
# Create a pluggy.PluginManager instance
|
||||
pm = pluggy.PluginManager(plugin_namespace)
|
||||
|
||||
# Register the hook specifications
|
||||
pm.add_hookspecs(HookSpec)
|
||||
|
||||
# Automatically discover and register plugins using entry points
|
||||
for entry_point in importlib.metadata.entry_points().get(plugin_namespace, []):
|
||||
plugin = entry_point.load()
|
||||
pm.register(plugin())
|
Loading…
Reference in new issue