• 16-01-2026, 12:44:11
    #1
    Merhabalar,

    Trendyol ürün yükleme alanında otomatikleştirecek bir chrome extension yapmaya çalışıyorum. Bu konuda gpt ile bayağı yol aladık fakat önemli kısımlarını halledemiyor, eksik kısımlar için yardıma ihtiyacım var.

    Aşağıdaki kod yapısında tüm dropdown alanları dolduruluyor otomatik olarak. Beden seçimlerinide yapıyor. Fakat Benim ihtiyacım olan kısım renk seçeneklerinide seçsin ve otomatik olarak barkod ve stok kodu alanlarınıda doldurması.

    Koda renk seçimleri ve barkod,stok kodu alanlarını otomatik dolduracak kod yapısını eklememde yardımcı olabilecek kimse var mıdır?


    console.log("📦 Trendyol Otomasyon Yüklendi");

    // --------------------
    // SABİT DROPDOWN ALANLARI
    // --------------------
    const FIXED_ATTRIBUTES_SWEATSHIRT = {
    "Menşei": "TR - (Türkiye)",
    "Kumaş Tipi": "Örme",
    "Kalıp": "Regular",
    "Boy": "Standart",
    "Cinsiyet": "Unisex",
    "Yaş Grubu": "Yetişkin",
    "Yaka Tipi": "Kapüşonlu",
    "Ortam": "Casual/Günlük",
    "Ek Özellik": "Ek Özellik Mevcut Değil",
    "Parça Sayısı": "1",
    "Persona": "None Persona",
    "Kapama Şekli": "Geçirmeli",
    "Baskı/Nakış Tekniği": "DTF Baskı",
    "Materyal": "Pamuk - Polyester - Elastan",
    "Kol Tipi": "Uzun Kol",
    "Koleksiyon": "Casual / Günlük",
    "Desen": "Baskılı",
    "Kutu Durumu": "Kutu yok",
    "Cep": "Kanguru Cep",
    "Sürdürülebilirlik Detayı": "Hayır",
    "Ürün Detayı": "Mevcut Değil",
    "Paket İçeriği": "1+",
    "Siluet": "Regular",
    "Dokuma Tipi": "3 İplik Şardonlu",
    "Kol Boyu": "Uzun",
    "Sezon": "Kış"
    };

    const FIXED_ATTRIBUTES_TSHIRT = {
    "Menşei": "TR - (Türkiye)",
    "Kumaş Tipi": "Örme",
    "Kalıp": "Regular",
    "Boy": "Standart",
    "Cinsiyet": "Unisex",
    "Yaş Grubu": "Yetişkin",
    "Yaka Tipi": "Bisiklet Yaka",
    "Ortam": "Casual/Günlük",
    "Ek Özellik": "Ek Özellik Mevcut Değil",
    "Persona": "None Persona",
    "Baskı/Nakış Tekniği": "DTF Baskı",
    "Materyal": "%100 Pamuk",
    "Kol Tipi": "Kısa Kol",
    "Koleksiyon": "Casual / Günlük",
    "Dokuma Tipi": "24 / 1 opened suprem",
    "Desen": "Baskılı",
    "Kutu Durumu": "Kutu yok",
    "Cep": "Cepsiz",
    "Teknik": "Yok",
    "Sürdürülebilirlik Detayı": "Hayır",
    "Ürün Detayı": "Mevcut Değil",
    "Paket İçeriği": "1+",
    "Siluet": "Regular",
    "Kol Boyu": "Kısa",
    "Sezon": "Tüm Sezonlar"
    };

    // --------------------
    // BEDEN KONFİGÜRASYONU
    // --------------------
    const SIZES = ["S", "M", "L", "XL", "2XL"];

    // --------------------
    // HELPER FONKSİYONLAR
    // --------------------
    const sleep = ms => new Promise(r => setTimeout(r, ms));

    async function waitForElement(selector, timeout = 15000) {
    const start = Date.now();
    while (Date.now() - start < timeout) {
    const el = document.querySelector(selector);
    if (el) return el;
    await sleep(300);
    }
    throw new Error(`⛔ Element bulunamadı: ${selector}`);
    }

    async function selectSingle(cyId, value) {
    try {
    const select = await waitForElement(`bl-select[cy-id="${cyId}"]`, 8000);
    select.scrollIntoView({ behavior: "smooth", block: "center" });
    await sleep(400);
    select.click();
    await sleep(500);

    const options = [...select.querySelectorAll("bl-select-option span")];
    const option = options.find(el => el.innerText.trim() === value);

    if (!option) throw new Error("Seçenek yok");

    option.click();
    await sleep(400);
    console.log(`✅ ${cyId} → ${value}`);
    } catch {
    console.warn(`⚠️ Atlandı: ${cyId}`);
    }
    }

    // Çoklu seçim (SADECE BEDEN)
    async function selectMultiple(cyId, values) {
    try {
    const select = await waitForElement(`bl-select[cy-id="${cyId}"]`, 8000);
    select.scrollIntoView({ behavior: "smooth", block: "center" });
    await sleep(400);

    for (const value of values) {
    select.click();
    await sleep(500);

    const options = [...select.querySelectorAll("bl-select-option span")];
    const option = options.find(el => el.innerText.trim() === value);

    if (option) {
    option.click();
    await sleep(400);
    console.log(`✅ ${cyId} → ${value}`);
    }
    }
    } catch {
    console.warn(`⚠️ Atlandı: ${cyId}`);
    }
    }

    // --------------------
    // BARKOD & STOK KODU
    // --------------------
    function generateBarcode() {
    let barcode = "869";
    for (let i = 0; i < 10; i++) barcode += Math.floor(Math.random() * 10);
    return barcode;
    }

    function generateStockCode(prefix = "STK") {
    const random = Math.floor(Math.random() * 1000000)
    .toString()
    .padStart(6, "0");
    return `${prefix}-${random}`;
    }

    async function fillBarcodesAndStockCodes() {
    const barcodeInputs = document.querySelectorAll(
    'input[placeholder*="Barkod"], input[name*="barcode"]'
    );
    for (const input of barcodeInputs) {
    input.value = generateBarcode();
    input.dispatchEvent(new Event("input", { bubbles: true }));
    await sleep(200);
    }

    const stockInputs = document.querySelectorAll(
    'input[placeholder*="Stok"], input[name*="stock"]'
    );
    for (const input of stockInputs) {
    input.value = generateStockCode();
    input.dispatchEvent(new Event("input", { bubbles: true }));
    await sleep(200);
    }

    console.log("✅ Barkod ve stok kodları oluşturuldu");
    }

    // --------------------
    // OTOMASYONLAR
    // --------------------
    window.runTrendyolAutomationSweatshirt = async function () {
    console.log("🚀 Sweatshirt otomasyonu başladı");

    for (const [key, value] of Object.entries(FIXED_ATTRIBUTES_SWEATSHIRT)) {
    await selectSingle(key, value);
    }

    console.log("📏 Beden seçimi yapılıyor...");
    await selectMultiple("Beden", SIZES);

    console.log("🔢 Barkod ve stok kodları oluşturuluyor...");
    await fillBarcodesAndStockCodes();

    console.log("🎉 Sweatshirt otomasyonu tamamlandı!");
    };

    window.runTrendyolAutomationTshirt = async function () {
    console.log("🚀 T-Shirt otomasyonu başladı");

    for (const [key, value] of Object.entries(FIXED_ATTRIBUTES_TSHIRT)) {
    await selectSingle(key, value);
    }

    console.log("📏 Beden seçimi yapılıyor...");
    await selectMultiple("Beden", SIZES);

    console.log("🔢 Barkod ve stok kodları oluşturuluyor...");
    await fillBarcodesAndStockCodes();

    console.log("🎉 T-Shirt otomasyonu tamamlandı!");
    };

    console.log("✅ Trendyol Otomasyon Hazır!");
    console.log("📝 Kullanım:");
    console.log(" - runTrendyolAutomationTshirt()");
    console.log(" - runTrendyolAutomationSweatshirt()");
  • 16-01-2026, 13:04:02
    #2
    Bu tarz isler API ile yapilir.
  • 16-01-2026, 13:08:20
    #3
    Evet api ile belki daha sağlıklı olabilir fakat buraya kadar aktif olarak çalışıyor herşey aslında