BotBB - Web Otomasyonu, Bot Mimarileri ve Scraping Topluluğu
Optimizasyon: Fiyat Değişmediğinde JSON Logunu Şişirmeme (Delta Loglama Yöntemi) - Baskı Önizleme

+- BotBB - Web Otomasyonu, Bot Mimarileri ve Scraping Topluluğu (https://botbb.tr)
+-- Forum: Yapay Zeka Destekli Bot Uretimi (https://botbb.tr/Forum-Yapay-Zeka-Destekli-Bot-Uretimi)
+--- Forum: Hazir Script & Kod Bankasi (https://botbb.tr/Forum-Hazir-Script-Kod-Bankasi)
+--- Konu Başlığı: Optimizasyon: Fiyat Değişmediğinde JSON Logunu Şişirmeme (Delta Loglama Yöntemi) (/Thread-Optimizasyon-Fiyat-De%C4%9Fi%C5%9Fmedi%C4%9Finde-JSON-Logunu-%C5%9Ei%C5%9Firmeme-Delta-Loglama-Y%C3%B6ntemi)



Optimizasyon: Fiyat Değişmediğinde JSON Logunu Şişirmeme (Delta Loglama Yöntemi) - admin - 10-17-2026

Optimizasyon: Fiyat Değişmediğinde JSON Logunu Şişirmeme (Delta Loglama Yöntemi)

Fiyat takip botları 7/24 çalışırken (örneğin 30 dakikada bir kontrol yaparken), fiyat haftalarca aynı kalabilir. Her kontrolde JSON dosyasına aynı fiyatı yazmak iki büyük soruna yol açar:
  1. Gereksiz Dosya Boyutu: 10 ürün için günde yüzlerce tekrarlanan satır oluşur ve JSON dosyası megabaytlarca şişer.
  2. Grafik ve Analiz Kirliliği: İleride fiyat grafiği çizdirmek istediğinizde aynı fiyatın binlerce kopyası grafiği anlamsız şekilde uzatır.

Bunun çözümü Delta Loglama (Sadece Değişimleri Kaydetme) mantığıdır: Bot yeni fiyatı aldığında dosyadaki en son kayıtlı fiyata bakar; fiyat kuruşu kuruşuna aynıysa dosyaya dokunmaz, yalnızca fiyat değişmişse (artmış veya azalmışsa) arşive yeni bir satır ekler.



1. Optimize Edilmiş `fiyatKaydet()` Fonksiyonu

Mevcut scriptinizdeki `fiyatKaydet` fonksiyonunu aşağıdaki mantıkla güncelleyin:

Kod:
/** * Yalnızca fiyat değiştiğinde JSON dosyasına log atan optimize fonksiyon */ function fiyatKaydet(urunAdi, guncelFiyat) {   let gecmisVeri = {};   // 1. Mevcut JSON dosyasını oku   if (fs.existsSync(LOG_DOSYASI)) {     try {       const hamIcerik = fs.readFileSync(LOG_DOSYASI, 'utf8');       gecmisVeri = hamIcerik ? JSON.parse(hamIcerik) : {};     } catch (e) {       gecmisVeri = {};     }   }   // 2. Bu ürünün geçmiş kayıt listesini al (yoksa boş dizi aç)   if (!gecmisVeri[urunAdi]) {     gecmisVeri[urunAdi] = [];   }   const urunKayitlari = gecmisVeri[urunAdi];   // 3. KONTROL: Ürünün son kayıtlı fiyatına bak   if (urunKayitlari.length > 0) {     const sonKayit = urunKayitlari[urunKayitlari.length - 1];         // Fiyat değişmemişse diske yazma işlemini pas geç     if (sonKayit.fiyat === guncelFiyat) {       console.log(`ℹ️ [Fiyat Sabit] ${urunAdi} hala ${guncelFiyat} TL (Log atlanıyor).`);       return false; // Değişim olmadığını bildirmek için false döner     }     // Fiyat değiştiyse konsola ne kadar değiştiğini yazdır     const fark = (guncelFiyat - sonKayit.fiyat).toFixed(2);     const durum = fark > 0 ? `+${fark} TL (Zam)` : `${fark} TL (İndirim)`;     console.log(`? [Fiyat Değişti] ${urunAdi}: ${sonKayit.fiyat} TL ➔ ${guncelFiyat} TL (${durum})`);   } else {     // Ürün dosyaya ilk defa ekleniyorsa     console.log(`? [İlk Kayıt] ${urunAdi} sisteme eklendi: ${guncelFiyat} TL`);   }   // 4. Yeni kaydı oluştur ve arşive ekle   const simdi = new Date();   const yeniKayit = {     tarih: simdi.toLocaleDateString('tr-TR'),     saat: simdi.toLocaleTimeString('tr-TR'),     fiyat: guncelFiyat   };   urunKayitlari.push(yeniKayit);   // 5. Dosyaya yaz   fs.writeFileSync(LOG_DOSYASI, JSON.stringify(gecmisVeri, null, 2), 'utf8');   return true; // Değişim olduğunu bildirmek için true döner }



2. Elde Ettiğimiz Avantajlar

Alıntı:İpucu: Bu fonksiyondan dönen `true` veya `false` değerini kullanarak; sadece fiyat gerçekten değiştiğinde Telegram'a "X ürününün fiyatı güncellendi!" şeklinde bilgilendirme mesajı da attırabilirsiniz.