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