✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR
✦ CODUM.TR


Tumblr VIP PANEL v10.0

⚠️ ÖNEMLİ BİLGİ: Bu sayfadaki kodlar yalnızca kopyalama amaçlıdır; sitede otomatik çalıştırılmaz. Kodu kullanmak için Tampermonkey kurup yeni script olarak eklemeniz gerekir. Otomasyonun sürekli, agresif veya dengesiz kullanımı platform limitlerine takılmanıza neden olabilir; hesabınız geçici olarak kilitlenebilir, kısıtlanabilir, askıya alınabilir veya kalıcı olarak kapatılabilir. Tüm işlemleri kendi sorumluluğunuzda, düşük hızda ve dikkatli şekilde kullanın.

1. Tampermonkey Kurulumu

Tarayıcınıza Tampermonkey uzantısını yükleyin. Ardından uzantı ayarlarından Geliştirici Modunu açın ve gerekiyorsa Dosya URL'lerine erişim iznini etkinleştirin.

2. Scripti Ekleme

Tumblr için aşağıdaki kodu 📋 KOPYALA ile alın, Tampermonkey'de yeni script açıp yapıştırın ve kaydedin.

3. Nasıl Kullanılır?

Tumblr sitesine giriş yapın, sayfayı yenileyin ve panel butonlarını kullanın.

Tumblr sayfasında script panelini kullanarak otomasyon işlemlerini başlatabilirsiniz.

// ==UserScript==
// @name         CODUM.TR VIP TUMBLR PANEL v10.0
// @namespace    https://codum.tr/
// @version      10.0
// @description  CODUM.TR Tumblr VIP Otomasyon Paneli (Neon Dark Theme)
// @author       Codum.tr
// @match        *://*.tumblr.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    // --- DURUM & HAFIZA YÖNETİMİ ---
    const ProcessedElements = new Set();
    let actionTimeout = null;
    let modalInterval = null;
    let isRunning = false;

    // Hız Ayarları
    const SPEED_SETTINGS = {
        slow: { min: 2000, max: 3500 },
        medium: { min: 800, max: 1600 },
        fast: { min: 400, max: 800 },
        turbo: { min: 150, max: 350 }
    };
    let currentSpeed = 'medium';

    const stats = {
        takip: 0,
        begeni: 0,
        islem: 0
    };

    // --- ARAYÜZ (PANEL - NEON DARK THEME) ---
    const panelHTML = `
        <div id="codumVipPanel" style="position: fixed; top: 70px; right: 20px; width: 330px; background-color: #0f141c; border-radius: 14px; z-index: 999999; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; box-shadow: 0 0 25px rgba(0, 255, 102, 0.15); color: #e6edf3; overflow: hidden; border: 1.5px solid #00ff66; box-sizing: border-box;">

            <!-- Header -->
            <div id="panelHeader" style="padding: 14px 16px 10px 16px; display: flex; justify-content: space-between; align-items: center; cursor: move; user-select: none;">
                <div style="display: flex; align-items: center; gap: 8px;">
                    <span style="color: #00ff66; font-family: monospace; font-weight: 900; font-size: 14px; letter-spacing: 0.5px;">>_ CODUM.TR VIP TUMBLR PANEL</span>
                </div>
                <span style="background: #0c2b1a; color: #00ff66; border: 1px solid #00ff66; padding: 2px 8px; border-radius: 6px; font-size: 11px; font-family: monospace; font-weight: bold;">v10.0</span>
            </div>

            <div style="padding: 0 16px 16px 16px;">
                <!-- Sayaçlar (Takip, Beğeni, İşlem) -->
                <div style="display: flex; justify-content: space-around; text-align: center; background: #080b10; border-radius: 10px; padding: 10px; margin-bottom: 12px; border: 1px solid #1a222d;">
                    <div><div style="font-size: 11px; color: #8b949e; font-weight: 600; margin-bottom: 2px;">Takip</div><div id="statTakip" style="color: #00ff66; font-weight: 800; font-size: 16px;">0</div></div>
                    <div><div style="font-size: 11px; color: #8b949e; font-weight: 600; margin-bottom: 2px;">Beğeni</div><div id="statBegeni" style="color: #ff2a8d; font-weight: 800; font-size: 16px;">0</div></div>
                    <div><div style="font-size: 11px; color: #8b949e; font-weight: 600; margin-bottom: 2px;">İşlem</div><div id="statIslem" style="color: #ff4747; font-weight: 800; font-size: 16px;">0</div></div>
                </div>

                <!-- Hız Seçim Dropdown -->
                <div style="margin-bottom: 10px;">
                    <select id="speedSelect" style="width: 100%; padding: 9px 12px; background: #080b10; color: #00ff66; border: 1px solid #1a222d; border-radius: 8px; font-weight: 700; font-size: 13px; outline: none; cursor: pointer;">
                        <option value="slow">🚶 Yavaş (Güvenli)</option>
                        <option value="medium" selected>🚶 Orta (Dengeli)</option>
                        <option value="fast">🏃 Hızlı</option>
                        <option value="turbo">🚀 Turbo</option>
                    </select>
                </div>

                <!-- Arama Filtresi Input -->
                <div style="margin-bottom: 12px;">
                    <input type="text" id="filterInput" placeholder="Arama Filtresi (Örn: art, blog)" style="width: 100%; padding: 9px 12px; background: #080b10; color: #e6edf3; border: 1px solid #1a222d; border-radius: 8px; font-size: 12px; outline: none; box-sizing: border-box;">
                </div>

                <!-- Butonlar -->
                <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 8px;">
                    <button id="btnFollow" style="padding: 10px; background: #080b10; color: #00ff66; border: 1px solid #00c853; border-radius: 8px; font-weight: bold; font-size: 12px; cursor: pointer;">Takip Et</button>
                    <button id="btnLike" style="padding: 10px; background: #080b10; color: #ff2a8d; border: 1px solid #d81b60; border-radius: 8px; font-weight: bold; font-size: 12px; cursor: pointer;">Beğeni</button>
                </div>

                <button id="btnUnfollowAll" style="width: 100%; padding: 10px; background: #080b10; color: #ff5252; border: 1px solid #ff1744; border-radius: 8px; font-weight: bold; font-size: 12px; cursor: pointer; margin-bottom: 10px;">Herkesi Takipten Çık</button>

                <!-- İşlemi Durdur Butonu -->
                <button id="btnStop" style="width: 100%; padding: 10px; background: #080b10; color: #ff3344; border: 1px solid #ff3344; border-radius: 8px; font-weight: bold; font-size: 13px; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 8px; margin-bottom: 12px;">
                    <span style="font-size: 12px;">🔴</span> İşlemi Durdur
                </button>

                <!-- Durum Yazısı -->
                <div id="statusText" style="font-size: 12px; text-align: center; color: #00ff66; font-weight: bold;">Hazır bekleniyor...</div>
            </div>
        </div>
    `;

    document.body.insertAdjacentHTML('beforeend', panelHTML);

    const codumVipPanel = document.getElementById('codumVipPanel');
    const panelHeader = document.getElementById('panelHeader');
    const statusText = document.getElementById('statusText');
    const statTakip = document.getElementById('statTakip');
    const statBegeni = document.getElementById('statBegeni');
    const statIslem = document.getElementById('statIslem');
    const speedSelect = document.getElementById('speedSelect');

    speedSelect.addEventListener('change', (e) => {
        currentSpeed = e.target.value;
    });

    // --- DRAG & DROP (PANELİ SÜRÜKLEME) ---
    let isDragging = false, currentX, currentY, initialX, initialY, xOffset = 0, yOffset = 0;
    panelHeader.addEventListener("mousedown", (e) => {
        initialX = e.clientX - xOffset;
        initialY = e.clientY - yOffset;
        isDragging = true;
    });
    document.addEventListener("mouseup", () => { isDragging = false; });
    document.addEventListener("mousemove", (e) => {
        if (isDragging) {
            e.preventDefault();
            currentX = e.clientX - initialX;
            currentY = e.clientY - initialY;
            xOffset = currentX;
            yOffset = currentY;
            codumVipPanel.style.transform = `translate3d(${currentX}px, ${currentY}px, 0)`;
        }
    });

    // --- YARDIMCI FONKSİYONLAR ---
    const getRandomDelay = () => {
        const config = SPEED_SETTINGS[currentSpeed] || SPEED_SETTINGS.medium;
        return Math.floor(Math.random() * (config.max - config.min + 1)) + config.min;
    };

    const updateStatus = (text, color = "#00ff66") => {
        statusText.innerText = text;
        statusText.style.color = color;
    };

    const incrementIslem = () => {
        stats.islem++;
        statIslem.innerText = stats.islem;
    };

    const stopAllProcess = () => {
        if (actionTimeout) clearTimeout(actionTimeout);
        if (modalInterval) clearInterval(modalInterval);
        isRunning = false;
        updateStatus("İşlem Durduruldu.", "#ff3344");
    };

    document.getElementById('btnStop').addEventListener('click', stopAllProcess);

    // Tumblr Onay Pencerelerini Otomatik Kapatıcı (Unfollow Modal Killer)
    function startModalKiller() {
        modalInterval = setInterval(() => {
            const buttons = document.querySelectorAll('[role="dialog"] button, .glass-overlay button, .modal button, div[data-is-modal] button');
            buttons.forEach(btn => {
                const txt = (btn.textContent || '').toLowerCase();
                if (['bırak', 'kaldır', 'evet', 'unfollow', 'tamam', 'confirm', 'ok'].some(t => txt.includes(t))) {
                    btn.click();
                }
            });
        }, 250);
    }

    // --- OTOMASYON MOTORLARI ---

    // 1. TAKİP ET
    const runFollowLoop = () => {
        if (!isRunning) return;
        const buttons = Array.from(document.querySelectorAll('button, [role="button"]'));

        const target = buttons.find(btn => {
            if (ProcessedElements.has(btn)) return false;
            if (btn.closest('#codumVipPanel')) return false;

            const txt = (btn.textContent || '').toLowerCase().trim();
            const aria = (btn.getAttribute('aria-label') || '').toLowerCase().trim();

            if (txt.includes('bırak') || aria.includes('bırak') || txt.includes('unfollow') || txt.includes('following')) {
                ProcessedElements.add(btn);
                return false;
            }

            return txt === 'takip et' || txt === 'follow' || aria === 'takip et' || aria === 'follow';
        });

        if (target) {
            ProcessedElements.add(target);
            target.click();

            stats.takip++;
            statTakip.innerText = stats.takip;
            incrementIslem();
            updateStatus(`Takip Edildi: ${stats.takip}`, "#00ff66");

            actionTimeout = setTimeout(runFollowLoop, getRandomDelay());
        } else {
            updateStatus("Tumblr blogları taranıyor...", "#00ff66");
            window.scrollBy(0, 800);
            actionTimeout = setTimeout(runFollowLoop, getRandomDelay() + 1000);
        }
    };

    document.getElementById('btnFollow').addEventListener('click', () => {
        if (isRunning) return;
        isRunning = true;
        updateStatus("Takip İşlemi Çalışıyor...", "#00ff66");
        runFollowLoop();
    });

    // 2. BEĞENİ
    const runLikeLoop = () => {
        if (!isRunning) return;
        const buttons = Array.from(document.querySelectorAll('button, [role="button"]'));

        const target = buttons.find(btn => {
            if (ProcessedElements.has(btn)) return false;
            if (btn.closest('#codumVipPanel')) return false;

            const aria = (btn.getAttribute('aria-label') || '').toLowerCase();
            const title = (btn.getAttribute('title') || '').toLowerCase();
            const isLiked = btn.querySelector('svg[data-is-liked="true"]') || btn.classList.contains('is-liked');

            if (isLiked || aria.includes('vazgeç') || aria.includes('unlike') || title.includes('unlike')) {
                ProcessedElements.add(btn);
                return false;
            }

            return aria.includes('beğen') || aria === 'like' || title.includes('beğen') || title === 'like';
        });

        if (target) {
            ProcessedElements.add(target);
            target.click();

            stats.begeni++;
            statBegeni.innerText = stats.begeni;
            incrementIslem();
            updateStatus(`Beğenildi: ${stats.begeni}`, "#ff2a8d");

            actionTimeout = setTimeout(runLikeLoop, getRandomDelay());
        } else {
            updateStatus("Aşağı kaydırılıyor...", "#ff2a8d");
            window.scrollBy(0, 800);
            actionTimeout = setTimeout(runLikeLoop, getRandomDelay() + 1000);
        }
    };

    document.getElementById('btnLike').addEventListener('click', () => {
        if (isRunning) return;
        isRunning = true;
        updateStatus("Beğeni İşlemi Çalışıyor...", "#ff2a8d");
        runLikeLoop();
    });

    // 3. HERKESİ TAKİPTEN ÇIK
    const runUnfollowLoop = () => {
        if (!isRunning) return;
        const buttons = Array.from(document.querySelectorAll('button, [role="button"]'));

        const target = buttons.find(btn => {
            if (ProcessedElements.has(btn)) return false;
            if (btn.closest('#codumVipPanel')) return false;

            const txt = (btn.textContent || '').toLowerCase();
            const aria = (btn.getAttribute('aria-label') || '').toLowerCase();

            return txt.includes('takibi bırak') || aria.includes('takibi bırak') || txt.includes('unfollow') || txt.includes('takip ediliyor');
        });

        if (target) {
            ProcessedElements.add(target);
            target.click();

            incrementIslem();
            updateStatus(`Takipten Çıkarılıyor...`, "#ff5252");

            actionTimeout = setTimeout(runUnfollowLoop, getRandomDelay());
        } else {
            window.scrollBy(0, 1000);
            actionTimeout = setTimeout(runUnfollowLoop, getRandomDelay() + 1000);
        }
    };

    document.getElementById('btnUnfollowAll').addEventListener('click', () => {
        if (isRunning) return;
        isRunning = true;
        updateStatus("Herkesi Takipten Çıkarılıyor...", "#ff5252");
        startModalKiller();
        runUnfollowLoop();
    });

})();