nat-ad / merchs /merch.py
ibombonato's picture
feat: update shotener tool to use new API (#15)
ffd6997 verified
from abc import ABC, abstractmethod
from shortener_tool import ShortenerTool
from advanced_scrape_tool import AdvancedScrapingTool
from crewai_tools import ScrapeElementFromWebsiteTool
class Merchant():
def __init__(self):
pass
@abstractmethod
def get_template(self, main_cupom, cupom_1, store = None) -> str:
pass
def keep_css_selectors(self) -> list[str]:
return ['body']
@abstractmethod
def shorten_url(self, url: str) -> str:
pass
def get_scraper_tool(self):
return ScrapeElementFromWebsiteTool()
class NaturaMerchant(Merchant):
def __init__(self, natura_api_token: str):
super().__init__()
self.shortener_tool = ShortenerTool(natura_api_token=natura_api_token)
def get_scraper_tool(self):
return AdvancedScrapingTool()
def get_template(self, main_cupom, cupom_1, store = None) -> str:
return f"""
###Template:
{{Description}}. {{Title}}
(ENTREGA FEITA PELA PRÓPRIA NATURA)
Preço original: ~{{ORIGINAL PRICE}}~
*HOJE: {{CUPOM DISCOUNTED PRICE}} — {{TOTAL DISCOUNT PERCENTAGE}}% OFF*
🎟️ CUPOM: {main_cupom.upper()} {'ou ' + cupom_1.upper() if cupom_1.upper() else ''}
🛒 Compre aqui: {{short_url}}
⚠️ Faça login com o mesmo email e senha que já usa para comprar na Natura!
###End Template
"""
def keep_css_selectors(self) -> list[str]:
return ['h1.text-2xl', '#product-price', '.pt-4']
def shorten_url(self, url: str) -> str:
return self.shortener_tool.run(url)
class MercadoLivreMerchant(Merchant):
def get_template(self, main_cupom, cupom_1, store = None) -> str:
return f"""
###Template:
{{Description}}. {{Title}}
(MERCADO LIVRE - {store.upper()} OFICIAL)
Preço original: ~{{ORIGINAL PRICE}}~
*HOJE: {{CUPOM DISCOUNTED PRICE}} — {{TOTAL DISCOUNT PERCENTAGE}}% OFF*
🎟️ CUPOM: {main_cupom.upper()}
🛒 Compre aqui: {{short_url}}
⚠️ Selecione a loja oficial {store.upper()}
###End Template
"""
def keep_css_selectors(self) -> list[str]:
return ['.rl-card-featured']
def shorten_url(self, url: str) -> str:
return url