File size: 8,401 Bytes
a945de6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# -*- coding: utf-8 -*-
"""
WhatsApp Ürün Resimlerini ve Karşılaştırmalarını Gösterme Sistemi
WhatsApp için basitleştirilmiş versiyon - Sadece URL paylaşımı
"""

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_whatsapp(message):
    """WhatsApp için mesajdaki resim URL'lerini formatla"""
    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:
                # WhatsApp için sadece URL'yi ekle - WhatsApp otomatik önizleme yapar
                formatted_lines.append(f"🖼️ Ürün Resmi: {image_url}")
            else:
                formatted_lines.append(line)
        else:
            formatted_lines.append(line)
    
    return '\n'.join(formatted_lines)

def create_product_comparison_whatsapp(products_with_info):
    """WhatsApp için ürün karşılaştırması oluştur"""
    if not products_with_info:
        return ""
    
    comparison_text = "📊 **ÜRÜN KARŞILAŞTIRMASI**\n\n"
    
    for i, product in enumerate(products_with_info, 1):
        name = product.get('name', 'Bilinmeyen')
        price = product.get('price', 'Fiyat yok')
        stock = product.get('stock', 'Stok bilgisi yok')
        product_url = product.get('product_url', '')
        image_url = product.get('image_url', '')
        
        comparison_text += f"**{i}. {name}**\n"
        comparison_text += f"💰 Fiyat: {price}\n"
        comparison_text += f"📦 Stok: {stock}\n"
        
        if image_url:
            comparison_text += f"🖼️ Resim: {image_url}\n"
        
        if product_url:
            comparison_text += f"🔗 Link: {product_url}\n"
        
        comparison_text += "\n" + "─" * 30 + "\n\n"
    
    return comparison_text

def extract_product_info_whatsapp(message):
    """WhatsApp mesajından ürün bilgilerini çıkar ve formatla"""
    # Önce resim URL'lerini formatla
    formatted_message = format_message_with_images_whatsapp(message)
    
    # Karşılaştırma veya öneri mesajı ise özel formatla
    if any(keyword in message.lower() for keyword in ["karşılaştır", "öneri", "seçenek", "alternatif", "bütçe"]):
        # Ürün listesi var mı kontrol et
        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,
                    'stock': 'stokta',
                    '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 len(products) > 1:
            # Çoklu ürün karşılaştırması
            comparison = create_product_comparison_whatsapp(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" + comparison
    
    return formatted_message

def should_use_comparison_format_whatsapp(message):
    """WhatsApp mesajının karşılaştırma formatı kullanması gerekip gerekmediğini kontrol et"""
    comparison_keywords = ["karşılaştır", "öneri", "seçenek", "alternatif", "bütçe", "compare"]
    return any(keyword in message.lower() for keyword in comparison_keywords)

def format_whatsapp_product_list(products, title="Ürün Listesi"):
    """WhatsApp için ürün listesini formatla"""
    if not products:
        return f"❌ {title} - Uygun ürün bulunamadı."
    
    text = f"🚲 **{title.upper()}**\n\n"
    
    for i, product in enumerate(products, 1):
        name, item_info, full_name = product
        price = item_info[1] if len(item_info) > 1 else "Fiyat yok"
        product_link = item_info[2] if len(item_info) > 2 else ""
        
        text += f"**{i}. {full_name}**\n"
        text += f"💰 {price} TL\n"
        
        # Resim URL'si varsa ekle
        if len(item_info) > 6 and item_info[6]:
            text += f"🖼️ {item_info[6]}\n"
        
        if product_link:
            text += f"🔗 {product_link}\n"
        
        text += "\n"
    
    return text

def format_whatsapp_single_product(product):
    """WhatsApp için tek ürün formatla"""
    if not product:
        return "❌ Ürün bulunamadı."
    
    name, item_info, full_name = product
    
    text = f"🚲 **{full_name}**\n\n"
    
    # Stok durumu
    stock_status = item_info[0] if len(item_info) > 0 else "Bilgi yok"
    text += f"📦 Stok: {stock_status}\n"
    
    if stock_status == "stokta":
        # Fiyat bilgileri
        if len(item_info) > 1 and item_info[1]:
            text += f"💰 Fiyat: {item_info[1]} TL\n"
        
        # EFT fiyatı
        if len(item_info) > 3 and item_info[3]:
            text += f"💳 Havale Fiyatı: {item_info[3]} TL\n"
        
        # Kampanyalı fiyat
        if len(item_info) > 4 and item_info[4]:
            text += f"🎯 Kampanyalı Fiyat: {item_info[4]} TL\n"
        
        # Resim
        if len(item_info) > 6 and item_info[6]:
            text += f"🖼️ {item_info[6]}\n"
        
        # Ürün linki
        if len(item_info) > 2 and item_info[2]:
            text += f"🔗 {item_info[2]}\n"
    
    return text

def clean_whatsapp_message(message):
    """WhatsApp mesajını temizle ve optimize et"""
    # Gereksiz boşlukları temizle
    lines = [line.strip() for line in message.split('\n') if line.strip()]
    
    # Aynı URL'leri tekrar eden satırları kaldır
    seen_urls = set()
    clean_lines = []
    
    for line in lines:
        if line.startswith('🖼️') or line.startswith('🔗'):
            url = line.split(' ', 1)[1] if ' ' in line else line
            if url not in seen_urls:
                seen_urls.add(url)
                clean_lines.append(line)
        else:
            clean_lines.append(line)
    
    return '\n'.join(clean_lines)