# -*- coding: utf-8 -*-
"""
Ürün Resimlerini Sohbette Gösterme Sistemi
"""
def round_price(price_str):
"""Fiyatı yuvarlama formülüne göre yuvarla"""
try:
# TL ve diğer karakterleri temizle
price_clean = price_str.replace(' TL', '').replace(',', '.')
price_float = float(price_clean)
# Fiyat 200000 üzerindeyse en yakın 5000'lik basamağa yuvarla
if price_float > 200000:
return str(round(price_float / 5000) * 5000)
# Fiyat 30000 üzerindeyse en yakın 1000'lik basamağa yuvarla
elif price_float > 30000:
return str(round(price_float / 1000) * 1000)
# Fiyat 10000 üzerindeyse en yakın 100'lük basamağa yuvarla
elif price_float > 10000:
return str(round(price_float / 100) * 100)
# Diğer durumlarda en yakın 10'luk basamağa yuvarla
else:
return str(round(price_float / 10) * 10)
except (ValueError, TypeError):
return price_str
def format_message_with_images(message):
"""Mesajdaki resim URL'lerini HTML formatına çevir"""
if "Ürün resmi:" not in message:
return message
lines = message.split('\n')
formatted_lines = []
for line in lines:
if line.startswith("Ürün resmi:"):
image_url = line.replace("Ürün resmi:", "").strip()
if image_url:
# HTML img tag'i oluştur
img_html = f"""
"""
formatted_lines.append(img_html)
else:
formatted_lines.append(line)
else:
formatted_lines.append(line)
return '\n'.join(formatted_lines)
def create_product_gallery(products_with_images):
"""Birden fazla ürün için galeri oluştur"""
if not products_with_images:
return ""
gallery_html = """
"""
for product in products_with_images:
name = product.get('name', 'Bilinmeyen')
price = product.get('price', 'Fiyat yok')
image_url = product.get('image_url', '')
product_url = product.get('product_url', '')
if image_url:
card_html = f"""
"""
gallery_html += card_html
gallery_html += "
"
return gallery_html
def extract_product_info_for_gallery(message):
"""Mesajdan ürün bilgilerini çıkarıp galeri formatına çevir"""
if "karşılaştır" in message.lower() or "öneri" in message.lower():
# Bu durumda galeri formatı kullan
lines = message.split('\n')
products = []
current_product = {}
for line in lines:
line = line.strip()
if line.startswith('•') and any(keyword in line.lower() for keyword in ['marlin', 'émonda', 'madone', 'domane', 'fuel', 'powerfly', 'fx']):
# Yeni ürün başladı
if current_product:
products.append(current_product)
# Ürün adı ve fiyatı parse et
parts = line.split(' - ')
name = parts[0].replace('•', '').strip()
price_raw = parts[1] if len(parts) > 1 else 'Fiyat yok'
# Fiyatı yuvarlama formülüne göre yuvarla
if price_raw != 'Fiyat yok':
price = round_price(price_raw) + ' TL'
else:
price = price_raw
current_product = {
'name': name,
'price': price,
'image_url': '',
'product_url': ''
}
elif "Ürün resmi:" in line and current_product:
current_product['image_url'] = line.replace("Ürün resmi:", "").strip()
elif "Ürün linki:" in line and current_product:
current_product['product_url'] = line.replace("Ürün linki:", "").strip()
# Son ürünü ekle
if current_product:
products.append(current_product)
if products:
gallery = create_product_gallery(products)
# Orijinal mesajdaki resim linklerini temizle
cleaned_message = message
for line in message.split('\n'):
if line.startswith("Ürün resmi:") or line.startswith("Ürün linki:"):
cleaned_message = cleaned_message.replace(line, "")
return cleaned_message.strip() + "\n\n" + gallery
return format_message_with_images(message)
def should_use_gallery_format(message):
"""Mesajın galeri formatı kullanması gerekip gerekmediğini kontrol et"""
gallery_keywords = ["karşılaştır", "öneri", "seçenek", "alternatif", "bütçe"]
return any(keyword in message.lower() for keyword in gallery_keywords)