# -*- 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"""
Ürün Resmi
""" 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"""
{name}
{name}
{price}
{f'Detaylı Bilgi' if product_url else ''}
""" 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)