/ backend / cache / store.py
store.py
 1  import hashlib
 2  import re
 3  from decimal import Decimal
 4  
 5  import requests
 6  from fake_useragent import UserAgent
 7  
 8  from models.models import ProviderStoreItem
 9  
10  local_cache = {}
11  
12  
13  def hash_key(selector) -> str:
14      return hashlib.sha256(selector.encode("utf-8")).hexdigest()
15  
16  
17  def strip_all_get_decimal(dirty) -> Decimal:
18      pattern = r"\b\d+(?:,\d{1,2})?\b"
19  
20      match = re.search(pattern, dirty)
21      return Decimal(match.group(0).replace(",", "."))
22  
23  
24  def get_provider_html(url: str) -> ProviderStoreItem:
25      item = local_cache.get(hash_key(url))
26  
27      if not item:
28          item = ProviderStoreItem(
29              url=url,
30              html=requests.get(url, headers={"User-Agent": UserAgent().random}).content,
31          )
32          local_cache[hash_key(item.url)] = item
33  
34      return item