• 02-12-2025, 00:45:22
    #10
    obisa adlı üyeden alıntı: mesajı görüntüle
    Yok hocam yani 23:54 te olan depremi verirken bunda 23:54 . 23:57 23;59 saatlerinde olan depremleri veriyor AFAD bu saatleri sonradan veriyor
    Tamam şimdi anladım teşekkürler. Hangi yapay zeka modelini kullandınız peki. Özel değilse yazar mısınız ?
  • 02-12-2025, 00:46:07
    #11
    obisa adlı üyeden alıntı: mesajı görüntüle
    <!DOCTYPE html>
    <html lang="tr">
    <head>
        <meta charset="UTF-8">
        <title>DEPREM SİSTEMİ</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <style>
            :root {
                --bg: #121212;
                --panel: #1e1e1e;
                --text: #e0e0e0;
                --accent: #ff3b30;
                --green: #30d158;
                --border: #333;
            }
            body {
                background-color: var(--bg);
                color: var(--text);
                font-family: 'Consolas', 'Monaco', monospace;
                margin: 0; padding: 10px;
                font-size: 13px;
            }
    
            header {
                background: var(--panel);
                padding: 15px; border-radius: 6px;
                border-bottom: 2px solid var(--green);
                display: flex; justify-content: space-between; align-items: center;
                margin-bottom: 15px;
            }
            
            h1 { margin: 0; font-size: 1.1rem; display: flex; align-items: center; gap: 10px; }
            .live-dot { width: 10px; height: 10px; background: var(--green); border-radius: 50%; box-shadow: 0 0 10px var(--green); }
            .blink { animation: blink 1s infinite; }
            @keyframes blink { 50% { opacity: 0.3; } }
            
            .status-box { text-align: right; font-size: 0.85rem; color: #888; }
            .btn-sound {
                background: #333; color: white; border: 1px solid #555; padding: 5px 10px; cursor: pointer; border-radius: 4px;
            }
    
            .table-wrap { overflow-x: auto; background: var(--panel); border-radius: 6px; box-shadow: 0 4px 10px rgba(0,0,0,0.5); }
            table { width: 100%; border-collapse: collapse; white-space: nowrap; }
            
            th, td { padding: 12px; text-align: left; border-bottom: 1px solid var(--border); }
            th { background: #252525; position: sticky; top: 0; color: #aaa; font-weight: 600; }
            
            tr:hover { background-color: #2a2a2a; }
    
            .mag-badge {
                padding: 3px 8px; border-radius: 4px; font-weight: bold; display: inline-block; width: 40px; text-align: center;
            }
            .low { color: #30d158; background: rgba(48, 209, 88, 0.1); }
            .med { color: #ffd60a; background: rgba(255, 214, 10, 0.1); }
            .high { color: #ff453a; background: rgba(255, 69, 58, 0.2); animation: shake 0.5s; }
    
            @keyframes shake {
                0% { transform: translateX(0); } 25% { transform: translateX(-3px); } 50% { transform: translateX(3px); } 100% { transform: translateX(0); }
            }
            .flash { animation: flashHighlight 1s ease-out; }
            @keyframes flashHighlight { 0% { background-color: rgba(255, 255, 255, 0.2); } 100% { background-color: transparent; } }
            
            .refresh-indicator {
                position: fixed;
                bottom: 20px;
                right: 20px;
                background: rgba(0, 0, 0, 0.7);
                color: #30d158;
                padding: 8px 15px;
                border-radius: 20px;
                font-size: 12px;
                display: flex;
                align-items: center;
                gap: 8px;
            }
            
            .refresh-icon {
                width: 14px;
                height: 14px;
                border: 2px solid #30d158;
                border-radius: 50%;
                border-top-color: transparent;
                animation: spin 3s linear infinite;
            }
            
            @keyframes spin {
                to { transform: rotate(360deg); }
            }
        </style>
    </head>
    <body>
    
    <header>
        <h1><span class="live-dot blink"></span> DEPREM SİSTEMİ CANLI</h1>
        <div class="status-box">
            <div id="connection-status">Sunucuya Bağlanıyor...</div>
            <div style="margin-top:5px"><button onclick="enableAudio()" id="snd-btn" class="btn-sound">🔇 Sesi Aç</button></div>
        </div>
    </header>
    
    <div class="table-wrap">
        <table>
            <thead>
                <tr>
                    <th>Tarih</th>
                    <th>Saat</th>
                    <th>Büyüklük</th>
                    <th>Derinlik</th>
                    <th>Yer</th>
                    <th>Koord (E/B)</th>
                </tr>
            </thead>
            <tbody id="quake-body">
                <tr><td colspan="6" style="text-align:center; padding:20px;">Veriler yükleniyor...</td></tr>
            </tbody>
        </table>
    </div>
    
    <div class="refresh-indicator">
        <div class="refresh-icon"></div>
        <span>3 saniyede bir yenileniyor</span>
    </div>
    
    <script>
        // Önbellek sorununu aşmak için rastgele parametre ekleyeceğiz
        const API_BASE = "https://api.orhanaydogdu.com.tr/deprem/kandilli/live";
        
        // Yenileme aralığını milisaniye cinsinden belirleyelim
        const REFRESH_INTERVAL = 3000; // 3 saniye
        
        let lastQuakeID = "";
        let audioCtx = null;
        let soundOn = false;
        let refreshTimer = null;
    
        function enableAudio() {
            soundOn = true;
            const btn = document.getElementById('snd-btn');
            btn.innerText = "🔊 Ses Aktif";
            btn.style.borderColor = "#30d158";
            btn.style.color = "#30d158";
            if (!audioCtx) audioCtx = new (window.AudioContext || window.webkitAudioContext)();
            audioCtx.resume();
        }
    
        function playBeep(isHigh) {
            if (!soundOn || !audioCtx) return;
            const osc = audioCtx.createOscillator();
            const gain = audioCtx.createGain();
            osc.frequency.value = isHigh ? 220 : 600;
            osc.type = isHigh ? 'square' : 'sine';
            osc.connect(gain);
            gain.connect(audioCtx.destination);
            osc.start();
            gain.gain.exponentialRampToValueAtTime(0.00001, audioCtx.currentTime + (isHigh ? 1 : 0.2));
            osc.stop(audioCtx.currentTime + (isHigh ? 1 : 0.2));
        }
    
        async function fetchQuakes() {
            try {
                // URL sonuna rastgele sayı ekleyerek her seferinde taze veri çekiyoruz (?v=...)
                const response = await fetch(API_BASE + "?v=" + Math.random());
                const data = await response.json();
    
                if (data.status && data.result && data.result.length > 0) {
                    updateTable(data.result);
                    updateStatus(true);
                }
            } catch (error) {
                console.warn("Veri çekme hatası:", error);
                updateStatus(false);
            }
        }
    
        function updateStatus(isOnline) {
            const statEl = document.getElementById('connection-status');
            const now = new Date();
            const timeStr = now.toLocaleTimeString();
            if (isOnline) {
                statEl.innerHTML = `<span style="color:#30d158">● Çevrimiçi</span> - ${timeStr}`;
            } else {
                statEl.innerHTML = `<span style="color:#ff3b30">● Bağlantı Hatası</span> - Tekrar deneniyor...`;
            }
        }
    
        function updateTable(quakes) {
            const tbody = document.getElementById('quake-body');
            
            // Veri yoksa çık
            if (!quakes || quakes.length === 0) return;
    
            // ID kontrolü (Tarih verisi bozuksa ID olarak başlığı kullanalım)
            const firstQ = quakes[0];
            const currentID = (firstQ.date || firstQ.date_time || "nodate") + firstQ.mag + firstQ.title;
            
            if (currentID === lastQuakeID) return;
    
            if (lastQuakeID !== "") {
                const mag = parseFloat(firstQ.mag);
                playBeep(mag >= 4.0);
            }
            lastQuakeID = currentID;
    
            tbody.innerHTML = "";
    
            quakes.slice(0, 50).forEach((q, index) => {
                try {
                    // --- KESİN ÇÖZÜM TARİH FORMATLAMA ---
                    
                    // 1. Olası tüm tarih alanlarını kontrol et
                    let rawDate = q.date || q.date_time || q.created_at;
                    
                    let datePart = "";
                    let timePart = "";
    
                    if (rawDate) {
                        // Veri string değilse stringe çevir
                        rawDate = String(rawDate);
    
                        // Eğer veri "2024.12.02 01:22:33" formatındaysa (en yaygın)
                        if (rawDate.length >= 10) {
                            // T harfini boşluğa çevir (ISO formatı koruması)
                            rawDate = rawDate.replace("T", " ");
                            
                            // Direkt karakter sırasına göre kes (Split hatasını engeller)
                            datePart = rawDate.substring(0, 10); // İlk 10 karakter (Tarih)
                            
                            if (rawDate.length > 11) {
                                timePart = rawDate.substring(11, 19); // 11. karakterden sonrası (Saat)
                            } else {
                                timePart = "-";
                            }
                        } else {
                            // Format çok garipse olduğu gibi bas
                            datePart = rawDate;
                            timePart = "?";
                        }
                    } else {
                        datePart = "Belirsiz";
                        timePart = "-";
                    }
    
                    // Koordinat
                    let lat = "0.00";
                    let lng = "0.00";
                    if (q.geojson && q.geojson.coordinates) {
                        lat = q.geojson.coordinates[1].toFixed(4);
                        lng = q.geojson.coordinates[0].toFixed(4);
                    }
    
                    const tr = document.createElement('tr');
                    if (index === 0) tr.classList.add('flash');
    
                    let magClass = "low";
                    const m = parseFloat(q.mag);
                    if (m >= 3.0) magClass = "med";
                    if (m >= 4.0) magClass = "high";
    
                    tr.innerHTML = `
                        <td style="color:#888">${datePart}</td>
                        <td style="font-weight:bold; color:#fff; font-size:1.1em">${timePart}</td>
                        <td><span class="mag-badge ${magClass}">${q.mag}</span></td>
                        <td>${q.depth} km</td>
                        <td style="color:#ccc">${q.title}</td>
                        <td style="font-family:monospace; color:#666">${lat} / ${lng}</td>
                    `;
                    tbody.appendChild(tr);
    
                } catch (err) {
                    console.error("Satır hatası:", err);
                }
            });
        }
    
        // İlk veri çekme işlemini başlat
        fetchQuakes();
        
        // Belirtilen aralıklarla veri çekme işlemini tekrarla
        refreshTimer = setInterval(fetchQuakes, REFRESH_INTERVAL);
    
    </script>
    </body>
    </html>









    selamlar kodları masasütüne .html olarak kaydedin ve yukardan sesi açın deprem bildirimi geldikçe ses verecek 3 saniyede 1 yenileme afadı solladık afad 23:54 verirken biz 23:59 veriyoruz çok gerimizde masaüstünüzde kullanın sistem yapay zeka ile yapıldı iyi forumlar
    bunu yazdırmak ve yaptırmak, gayet başarılı her ne kadar emeğin anlamı farklı olsa'da bir şeyler yaptırmış ve paylaşmışsın. Eline sağlık ama konuda bazı cümlelerini değiştir onun dışında 10 numara.
  • 02-12-2025, 00:46:34
    #12
    Temajet adlı üyeden alıntı: mesajı görüntüle
    Tamam şimdi anladım teşekkürler. Hangi yapay zeka modelini kullandınız peki. Özel değilse yazar mısınız ?
    yok hocam bende özel herşey açık gemini ile yaptım
  • 02-12-2025, 00:48:17
    #13
    obisa adlı üyeden alıntı: mesajı görüntüle
    yok hocam bende özel herşey açık gemini ile yaptım
    Teşekkürler. Bir tane de eklenti yapmıştınız sanırım kimsenin beğenmediği bir yapay zeka modeliyle yapmıştınız. Onun adı neydi not edeyim. Konunuzda sormuştum daha önceden.
  • 02-12-2025, 00:48:30
    #14
    Nookta adlı üyeden alıntı: mesajı görüntüle
    bunu yazdırmak ve yaptırmak, gayet başarılı her ne kadar emeğin anlamı farklı olsa'da bir şeyler yaptırmış ve paylaşmışsın. Eline sağlık ama konuda bazı cümlelerini değiştir onun dışında 10 numara.
    Evet bu konuda haklısınız hocam bir anlık gaza geldim Yapay Zeka ile Deprem Sistemi Yaptım daha doğru bir başlık olurdu afadı solladık diyince herşeyi ben yapmış gibi olmuş
  • 02-12-2025, 00:49:05
    #15
    Temajet adlı üyeden alıntı: mesajı görüntüle
    Teşekkürler. Bir tane de eklenti yapmıştınız sanırım kimsenin beğenmediği bir yapay zeka modeliyle yapmıştınız. Onun adı neydi not edeyim. Konunuzda sormuştum daha önceden.
    Chat.z.ai hocam
  • 02-12-2025, 00:51:25
    #16
    obisa adlı üyeden alıntı: mesajı görüntüle
    Chat.z.ai hocam
    Teşekkür ederim, Başarılar size de
  • 02-12-2025, 00:51:58
    #17
    Temajet adlı üyeden alıntı: mesajı görüntüle
    Teşekkür ederim, Başarılar size de
    Rica ederim hocam 🙏🏻
  • 02-12-2025, 01:11:23
    #18
    Orhan Aydoğdu apisini kullanarak yapılmış bir ürün de şimdi sizin başarınız ne bu olayda onu çözemedim ? Kod yapay zeka dediniz , api deseniz instagram twitter apileri olan bir farklı kişiye ait.. Bu bildiğin wærez uygulama / tema / program gibi yani hiç emeğin yok fakat hak iddaa etmek yani.. Tebrik edenler neyi tebrik etmiş anlamadım.