您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
OpenTogetherTube penceresi - Mobil uyumlu
// ==UserScript== // @name Gartic.io OpenTogetherTube dum // @namespace http://tampermonkey.net/ // @version 2.2 // @description OpenTogetherTube penceresi - Mobil uyumlu // @author You // @match https://gartic.io/* // @match http://gartic.io/* // @grant none // ==/UserScript== (function() { 'use strict'; let iframe; let container; let isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); // Sayfa yüklendiğinde başlat if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', initializeScript); } else { initializeScript(); } function initializeScript() { // Hemen pencereyi oluştur createFloatingWindow(); } function createFloatingWindow() { // Ana container - mobil ve desktop için farklı boyutlar container = document.createElement('div'); container.id = 'ott-container'; const mobileStyles = isMobile ? ` width: 90vw; height: 50vh; left: 5vw; bottom: 10px; min-width: 280px; min-height: 200px; max-width: 95vw; max-height: 80vh; ` : ` width: 480px; height: 350px; left: 20px; bottom: 20px; min-width: 350px; min-height: 250px; max-width: 1000px; max-height: 800px; `; container.style.cssText = ` position: fixed; ${mobileStyles} background: #1e1e1e; border: 2px solid #ff6b35; border-radius: 15px; z-index: 9999; box-shadow: 0 10px 30px rgba(0,0,0,0.5); resize: ${isMobile ? 'none' : 'both'}; overflow: hidden; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; touch-action: none; `; // Header const header = document.createElement('div'); header.style.cssText = ` background: linear-gradient(135deg, #ff6b35, #f39c12); color: white; padding: ${isMobile ? '15px' : '12px 15px'}; font-size: ${isMobile ? '14px' : '13px'}; cursor: ${isMobile ? 'grab' : 'move'}; display: flex; justify-content: space-between; align-items: center; user-select: none; font-weight: 600; touch-action: none; `; header.innerHTML = ` <span>🎵 OpenTogetherTube</span> <div> <button id="minimize-btn" style="background: #666; border: none; color: white; padding: ${isMobile ? '8px 12px' : '5px 10px'}; border-radius: 6px; cursor: pointer; font-size: ${isMobile ? '16px' : '14px'}; touch-action: manipulation;">−</button> </div> `; // Content area const content = document.createElement('div'); content.id = 'ott-content'; content.style.cssText = ` width: 100%; height: calc(100% - ${isMobile ? '63px' : '55px'}); position: relative; background: #2c2c2c; overflow: hidden; `; // Activation overlay const overlay = document.createElement('div'); overlay.id = 'activation-overlay'; overlay.style.cssText = ` position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(135deg, rgba(255,107,53,0.9), rgba(231,76,60,0.9)); display: flex; flex-direction: column; align-items: center; justify-content: center; z-index: 10; color: white; text-align: center; cursor: pointer; transition: all 0.3s ease; touch-action: manipulation; `; overlay.innerHTML = ` <div style="font-size: ${isMobile ? '80px' : '60px'}; margin-bottom: ${isMobile ? '30px' : '20px'}; animation: bounce 2s infinite;">🎵</div> <div style="font-size: ${isMobile ? '20px' : '18px'}; font-weight: bold; margin-bottom: ${isMobile ? '15px' : '10px'};">OpenTogetherTube'u Başlat</div> <div style="font-size: ${isMobile ? '16px' : '14px'}; opacity: 0.9; margin-bottom: ${isMobile ? '30px' : '20px'};">Video izlemek için dokunun</div> <div style="padding: ${isMobile ? '15px 30px' : '12px 24px'}; background: rgba(255,255,255,0.2); border-radius: 25px; font-size: ${isMobile ? '16px' : '14px'}; font-weight: 600;">BAŞLAT</div> `; // İframe oluştur iframe = document.createElement('iframe'); iframe.style.cssText = ` width: 100%; height: 100%; border: none; border-radius: 0 0 15px 15px; background: #000; `; iframe.setAttribute('allow', 'autoplay; fullscreen; microphone; camera; midi; encrypted-media; payment; clipboard-read; clipboard-write; web-share; picture-in-picture'); iframe.setAttribute('allowfullscreen', 'true'); // Elementleri birleştir content.appendChild(overlay); content.appendChild(iframe); container.appendChild(header); container.appendChild(content); document.body.appendChild(container); setupEventListeners(); showNotification('OpenTogetherTube hazır! Başlatmak için pencereye dokunun.', 'info'); } function setupEventListeners() { // Ana aktivasyon document.getElementById('activation-overlay').addEventListener('click', function() { activatePlayer(); }); // Touch için de ekle document.getElementById('activation-overlay').addEventListener('touchend', function(e) { e.preventDefault(); activatePlayer(); }); setupWindowControls(); } function activatePlayer() { const overlay = document.getElementById('activation-overlay'); overlay.style.opacity = '0'; setTimeout(() => { overlay.style.display = 'none'; }, 300); // 3131 odasına bağlan const fullUrl = 'https://opentogethertube.com/room/3131'; iframe.src = fullUrl; showNotification('OpenTogetherTube yükleniyor...', 'info'); } function setupWindowControls() { const header = container.querySelector('div'); let isDragging = false; let dragOffset = { x: 0, y: 0 }; // Mouse events (Desktop) header.addEventListener('mousedown', startDrag); document.addEventListener('mousemove', drag); document.addEventListener('mouseup', stopDrag); // Touch events (Mobile) header.addEventListener('touchstart', startDragTouch); document.addEventListener('touchmove', dragTouch); document.addEventListener('touchend', stopDrag); function startDrag(e) { if (e.target.tagName === 'BUTTON') return; isDragging = true; dragOffset.x = e.clientX - container.offsetLeft; dragOffset.y = e.clientY - container.offsetTop; document.body.style.userSelect = 'none'; header.style.cursor = 'grabbing'; e.preventDefault(); } function startDragTouch(e) { if (e.target.tagName === 'BUTTON') return; isDragging = true; const touch = e.touches[0]; dragOffset.x = touch.clientX - container.offsetLeft; dragOffset.y = touch.clientY - container.offsetTop; document.body.style.userSelect = 'none'; header.style.cursor = 'grabbing'; e.preventDefault(); } function drag(e) { if (!isDragging) return; const newLeft = Math.max(0, Math.min(window.innerWidth - container.offsetWidth, e.clientX - dragOffset.x)); const newTop = Math.max(0, Math.min(window.innerHeight - container.offsetHeight, e.clientY - dragOffset.y)); container.style.left = newLeft + 'px'; container.style.top = newTop + 'px'; } function dragTouch(e) { if (!isDragging) return; const touch = e.touches[0]; const newLeft = Math.max(0, Math.min(window.innerWidth - container.offsetWidth, touch.clientX - dragOffset.x)); const newTop = Math.max(0, Math.min(window.innerHeight - container.offsetHeight, touch.clientY - dragOffset.y)); container.style.left = newLeft + 'px'; container.style.top = newTop + 'px'; e.preventDefault(); } function stopDrag() { isDragging = false; document.body.style.userSelect = ''; header.style.cursor = isMobile ? 'grab' : 'move'; } // Minimize/Maximize let isMinimized = false; document.getElementById('minimize-btn').addEventListener('click', function() { const content = document.getElementById('ott-content'); if (isMinimized) { content.style.display = 'block'; container.style.height = isMobile ? '50vh' : '350px'; this.textContent = '−'; isMinimized = false; } else { content.style.display = 'none'; container.style.height = isMobile ? '63px' : '55px'; this.textContent = '+'; isMinimized = true; } }); // Touch için minimize butonu document.getElementById('minimize-btn').addEventListener('touchend', function(e) { e.preventDefault(); this.click(); }); } function showNotification(message, type = 'info') { const notification = document.createElement('div'); const mobileNotificationStyles = isMobile ? ` top: 10px; left: 5vw; right: 5vw; width: auto; font-size: 14px; padding: 18px 20px; ` : ` top: 20px; left: 20px; max-width: 300px; font-size: 13px; padding: 15px 20px; `; notification.style.cssText = ` position: fixed; ${mobileNotificationStyles} border-radius: 10px; color: white; font-family: 'Segoe UI', sans-serif; font-weight: 500; z-index: 10001; box-shadow: 0 8px 25px rgba(0,0,0,0.3); opacity: 0; transform: translateY(-20px); transition: all 0.3s ease; `; const colors = { success: '#27ae60', warning: '#f39c12', error: '#e74c3c', info: '#3498db' }; notification.style.background = colors[type] || colors.info; notification.textContent = message; document.body.appendChild(notification); requestAnimationFrame(() => { notification.style.opacity = '1'; notification.style.transform = 'translateY(0)'; }); setTimeout(() => { notification.style.opacity = '0'; notification.style.transform = 'translateY(-20px)'; setTimeout(() => notification.remove(), 300); }, 4000); } // CSS const style = document.createElement('style'); style.textContent = ` @keyframes bounce { 0%, 20%, 50%, 80%, 100% { transform: translateY(0); } 40% { transform: translateY(-20px); } 60% { transform: translateY(-10px); } } #ott-container button { transition: all 0.2s ease; } #ott-container button:hover { opacity: 0.85; transform: scale(1.05); } #activation-overlay:hover { transform: scale(1.02); } #ott-container { backdrop-filter: blur(10px); } /* Mobil için özel stiller */ @media (max-width: 768px) { #ott-container { border-width: 3px; } #ott-container button:active { transform: scale(0.95); opacity: 0.7; } #activation-overlay:active { transform: scale(0.98); } } /* Touch cihazları için scroll engelleyici */ body.dragging { overflow: hidden; -webkit-overflow-scrolling: none; } `; document.head.appendChild(style); // Mobil cihazlarda scroll engellemek için if (isMobile) { header.addEventListener('touchstart', () => { document.body.classList.add('dragging'); }); document.addEventListener('touchend', () => { document.body.classList.remove('dragging'); }); } console.log(`Gartic.io OpenTogetherTube Script yüklendi! (${isMobile ? 'Mobil' : 'Desktop'} Mod)`); })();