Skip to content

Commit

Permalink
Merge pull request #437 from Der-Henning/dev
Browse files Browse the repository at this point in the history
dev to main
  • Loading branch information
Der-Henning committed Jan 6, 2024
2 parents 88d66e4 + 76ed6b1 commit 51022af
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 7 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,4 @@ scanner.log
pytest_tmp
out.toml
out.yaml
dev.py
1 change: 1 addition & 0 deletions tests/test_item.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ def test_item(tgtg_item: dict, monkeypatch: pytest.MonkeyPatch):
assert item.description == tgtg_item.get("item", {}).get("description", "-")
assert item.link == "https://share.toogoodtogo.com/item/774625"
assert item.price == "3.00"
assert item.value == "9.00"
assert item.currency == "EUR"
assert item.store_name == tgtg_item.get("store", {}).get("store_name", "-")
assert item.item_logo == tgtg_item.get("item", {}).get("logo_picture", {}).get("current_url", "-")
Expand Down
4 changes: 4 additions & 0 deletions tgtg_scanner/models/item.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"display_name",
"description",
"price",
"value",
"currency",
"pickupdate",
"favorite",
Expand Down Expand Up @@ -69,8 +70,11 @@ def __init__(self, data: dict, location: Union[Location, None] = None):
self.item_category = item.get("item_category", "-")
self.description = item.get("description", "-")
item_price = item.get("item_price", {})
item_value = item.get("item_value", {})
price = item_price.get("minor_units", 0) / 10 ** item_price.get("decimals", 0)
value = item_value.get("minor_units", 0) / 10 ** item_value.get("decimals", 0)
self.price = f"{price:.2f}"
self.value = f"{value:.2f}"
self.currency = item_price.get("code", "-")
self.item_logo = item.get("logo_picture", {}).get(
"current_url",
Expand Down
14 changes: 14 additions & 0 deletions tgtg_scanner/models/metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

from prometheus_client import Counter, Gauge, start_http_server

from tgtg_scanner.models.item import Item

log = logging.getLogger("tgtg")


Expand All @@ -14,6 +16,7 @@ def __init__(self, port: int = 8000):
self.port = port
self.item_count = Gauge("tgtg_item_count", "Currently available Magic Bags", ["item_id", "display_name"])
self.item_price = Gauge("tgtg_item_price", "Price for a Magic Bag", ["item_id", "display_name"])
self.item_value = Gauge("tgtg_item_value", "Value for a Magic Bag", ["item_id", "display_name"])
self.get_favorites_errors = Counter(
"tgtg_get_favorites_errors",
"Count of request errors fetching tgtg favorites",
Expand All @@ -30,3 +33,14 @@ def enable_metrics(self) -> None:
"""
start_http_server(self.port)
log.info("Metrics server startet on port %s", self.port)

def update(self, item: Item) -> None:
"""
Update the metrics.
"""
try:
self.item_count.labels(item.item_id, item.display_name).set(item.items_available)
self.item_price.labels(item.item_id, item.display_name).set(float(item.price))
self.item_value.labels(item.item_id, item.display_name).set(float(item.value))
except ValueError as err:
log.warning("Error updating metrics: %s", err)
6 changes: 1 addition & 5 deletions tgtg_scanner/scanner.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,11 +148,7 @@ def _check_item(self, item: Item) -> None:
if state_item.items_available == 0 and item.items_available > 0:
self._send_messages(item)
self.metrics.send_notifications.labels(item.item_id, item.display_name).inc()
self.metrics.item_count.labels(item.item_id, item.display_name).set(item.items_available)
try:
self.metrics.item_price.labels(item.item_id, item.display_name).set(float(item.price))
except ValueError:
pass
self.metrics.update(item)
self.state[item.item_id] = item

def _send_messages(self, item: Item) -> None:
Expand Down
5 changes: 3 additions & 2 deletions wiki/Configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,9 @@ Variables with the `locale` property are affected by the `locale` option and ret
| items_available | number of available items | `2` |
| display_name | name of the item as in the APP | `Chutney Indian Food - Hamburg – Europapassage 2.OG` |
| description | item description | `Rette eine Magic Bag mit leckerem indischen Essen.` |
| price | item price including taxes | `3.20` |
| currency | | `EUR` |
| price | item price | `3.20` |
| value | item value | `9.60` |
| currency | price/value currency | `EUR` |
| pickupdate | formatted string | `tomorrow, 18:00 - 21:50` | YES |
| favorite | is favorite | `YES` or `NO` |
| rating | overall rating | `3.3` |
Expand Down

0 comments on commit 51022af

Please sign in to comment.