您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Gartic.io'da Google Görseller'de arama yapıp ilk resmi gösterir.
// ==UserScript== // @name Babasokucu // @namespace http://tampermonkey.net/ // @version 3.3 - TEMIZ KURULUM // @description Gartic.io'da Google Görseller'de arama yapıp ilk resmi gösterir. // @author Ferres // @match https://gartic.io/* // @grant GM_addStyle // @grant GM_xmlhttpRequest // @connect googleapis.com // @connect serpapi.com // @license MIT // ==/UserScript== (function() { 'use strict'; // === API BİLGİLERİ BURADA HAZIR, DOKUNMA === const API_KEY = "AIzaSyBP6U28ngnKhCKYoYgkExWXNxHT_-MCJvQ"; const SEARCH_ENGINE_ID = "d3a4fb1c91a394ccd"; // ========================================== // Panel ve içeriği için gerekli CSS stillerini ekle GM_addStyle(` #babaSokucuPanel { position: fixed; top: 10px; left: 50%; transform: translateX(-50%); width: 320px; background-color: #f1f1f1; border: 2px solid #888; border-radius: 8px; z-index: 9999; display: none; flex-direction: column; box-shadow: 0 4px 8px rgba(0,0,0,0.2); font-family: Arial, sans-serif; } #babaSokucuHeader { padding: 10px; cursor: move; z-index: 10000; background-color: #c0392b; /* Koyu kırmızı */ color: white; border-top-left-radius: 6px; border-top-right-radius: 6px; text-align: center; font-weight: bold; } #babaSokucuContent { padding: 15px; display: flex; flex-direction: column; align-items: center; } #flagSearchInput { width: 95%; padding: 8px; margin-bottom: 10px; border: 1px solid #ccc; border-radius: 4px; } #flagImageContainer { width: 100%; height: 180px; border: 1px dashed #ccc; display: flex; justify-content: center; align-items: center; background-color: #fff; margin-top: 5px; overflow: hidden; } #flagImage { max-width: 100%; max-height: 100%; display: none; } #infoText { color: #555; text-align: center; } `); const panel = document.createElement('div'); panel.id = 'babaSokucuPanel'; panel.innerHTML = ` <div id="babaSokucuHeader">babasokucu (Google)</div> <div id="babaSokucuContent"> <input type="text" id="flagSearchInput" placeholder="Kelimeyi yazıp Enter'a basın..."> <div id="flagImageContainer"> <img id="flagImage" src="" alt="Resim"> <span id="infoText">Google'daki ilk resim burada görünecek.</span> </div> </div> `; document.body.appendChild(panel); const flagSearchInput = document.getElementById('flagSearchInput'); const flagImage = document.getElementById('flagImage'); const infoText = document.getElementById('infoText'); function searchGoogleImages(query) { if (!query) return; infoText.textContent = "Aranıyor..."; infoText.style.display = 'block'; flagImage.style.display = 'none'; const finalQuery = `${query} flag`; // SerpApi kullanarak Google Images araması (daha güvenilir) const serpApiUrl = `https://serpapi.com/search.json?engine=google_images&q=${encodeURIComponent(finalQuery)}&api_key=demo`; // Önce SerpApi'yi dene GM_xmlhttpRequest({ method: "GET", url: serpApiUrl, onload: function(response) { try { const data = JSON.parse(response.responseText); if (data.images_results && data.images_results.length > 0) { flagImage.src = data.images_results[0].original; flagImage.style.display = 'block'; infoText.style.display = 'none'; return; } } catch (e) { console.log("SerpApi başarısız, Google API deneniyor..."); } // SerpApi başarısızsa Google Custom Search API'yi dene const googleApiUrl = `https://www.googleapis.com/customsearch/v1?key=${API_KEY}&cx=${SEARCH_ENGINE_ID}&q=${encodeURIComponent(finalQuery)}&searchType=image&num=1`; GM_xmlhttpRequest({ method: "GET", url: googleApiUrl, onload: function(response) { try { const data = JSON.parse(response.responseText); if (data.error) { console.error("Google API Hatası:", data.error.message); // Alternatif çözüm: Unsplash tryUnsplashFallback(query); return; } if (data.items && data.items.length > 0) { flagImage.src = data.items[0].link; flagImage.style.display = 'block'; infoText.style.display = 'none'; } else { tryUnsplashFallback(query); } } catch (error) { console.error("Parse hatası:", error); tryUnsplashFallback(query); } }, onerror: function(error) { console.error("Google API Bağlantı Hatası:", error); tryUnsplashFallback(query); } }); }, onerror: function(error) { console.log("SerpApi bağlantı hatası, Google API deneniyor..."); // Google API'yi dene const googleApiUrl = `https://www.googleapis.com/customsearch/v1?key=${API_KEY}&cx=${SEARCH_ENGINE_ID}&q=${encodeURIComponent(finalQuery)}&searchType=image&num=1`; GM_xmlhttpRequest({ method: "GET", url: googleApiUrl, onload: function(response) { try { const data = JSON.parse(response.responseText); if (data.error) { tryUnsplashFallback(query); return; } if (data.items && data.items.length > 0) { flagImage.src = data.items[0].link; flagImage.style.display = 'block'; infoText.style.display = 'none'; } else { tryUnsplashFallback(query); } } catch (error) { tryUnsplashFallback(query); } }, onerror: function(error) { tryUnsplashFallback(query); } }); } }); } // Yedek çözüm olarak Unsplash function tryUnsplashFallback(query) { const unsplashUrl = `https://source.unsplash.com/400x300/?${encodeURIComponent(query + ' flag')}`; flagImage.onload = function() { flagImage.style.display = 'block'; infoText.style.display = 'none'; }; flagImage.onerror = function() { infoText.textContent = `"${query}" için resim bulunamadı.`; }; flagImage.src = unsplashUrl; } flagSearchInput.addEventListener('keyup', (e) => { if (e.key === 'Enter') { searchGoogleImages(flagSearchInput.value.trim()); } }); dragElement(panel); function dragElement(elmnt) { let pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; const header = document.getElementById('babaSokucuHeader'); if (header) { header.onmousedown = dragMouseDown; } function dragMouseDown(e) { e.preventDefault(); pos3 = e.clientX; pos4 = e.clientY; document.onmouseup = closeDragElement; document.onmousemove = elementDrag; } function elementDrag(e) { e.preventDefault(); pos1 = pos3 - e.clientX; pos2 = pos4 - e.clientY; pos3 = e.clientX; pos4 = e.clientY; elmnt.style.top = (elmnt.offsetTop - pos2) + "px"; elmnt.style.left = (elmnt.offsetLeft - pos1) + "px"; } function closeDragElement() { document.onmouseup = null; document.onmousemove = null; } } // Paneli göster (Insert tuşu olmadan) panel.style.display = 'flex'; })();