|
|
|
|
|
""" |
|
|
Ürün Resimlerini Sohbette Gösterme Sistemi |
|
|
""" |
|
|
|
|
|
def round_price(price_str): |
|
|
"""Fiyatı yuvarlama formülüne göre yuvarla""" |
|
|
try: |
|
|
|
|
|
price_clean = price_str.replace(' TL', '').replace(',', '.') |
|
|
price_float = float(price_clean) |
|
|
|
|
|
|
|
|
if price_float > 200000: |
|
|
return str(round(price_float / 5000) * 5000) |
|
|
|
|
|
elif price_float > 30000: |
|
|
return str(round(price_float / 1000) * 1000) |
|
|
|
|
|
elif price_float > 10000: |
|
|
return str(round(price_float / 100) * 100) |
|
|
|
|
|
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: |
|
|
|
|
|
img_html = f""" |
|
|
<div style="margin: 10px 0;"> |
|
|
<img src="{image_url}" |
|
|
alt="Ürün Resmi" |
|
|
style="max-width: 300px; max-height: 200px; border-radius: 8px; border: 1px solid #ddd; box-shadow: 0 2px 4px rgba(0,0,0,0.1);" |
|
|
onerror="this.style.display='none'"> |
|
|
</div>""" |
|
|
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 = """ |
|
|
<div style="display: flex; flex-wrap: wrap; gap: 15px; margin: 15px 0;"> |
|
|
""" |
|
|
|
|
|
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""" |
|
|
<div style="border: 1px solid #ddd; border-radius: 8px; padding: 10px; max-width: 200px; text-align: center; background: white; box-shadow: 0 2px 4px rgba(0,0,0,0.1);"> |
|
|
<img src="{image_url}" |
|
|
alt="{name}" |
|
|
style="max-width: 180px; max-height: 120px; border-radius: 4px; margin-bottom: 8px;" |
|
|
onerror="this.style.display='none'"> |
|
|
<div style="font-size: 12px; font-weight: bold; margin-bottom: 4px;">{name}</div> |
|
|
<div style="font-size: 11px; color: #666; margin-bottom: 8px;">{price}</div> |
|
|
{f'<a href="{product_url}" target="_blank" style="font-size: 10px; color: #007bff; text-decoration: none;">Detaylı Bilgi</a>' if product_url else ''} |
|
|
</div>""" |
|
|
gallery_html += card_html |
|
|
|
|
|
gallery_html += "</div>" |
|
|
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(): |
|
|
|
|
|
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']): |
|
|
|
|
|
if current_product: |
|
|
products.append(current_product) |
|
|
|
|
|
|
|
|
parts = line.split(' - ') |
|
|
name = parts[0].replace('•', '').strip() |
|
|
price_raw = parts[1] if len(parts) > 1 else 'Fiyat yok' |
|
|
|
|
|
|
|
|
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() |
|
|
|
|
|
|
|
|
if current_product: |
|
|
products.append(current_product) |
|
|
|
|
|
if products: |
|
|
gallery = create_product_gallery(products) |
|
|
|
|
|
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) |