Spaces:
Running
Running
| // URL'den link kodunu al | |
| function getLinkCodeFromUrl() { | |
| const urlParams = new URLSearchParams(window.location.search); | |
| return urlParams.get('code'); | |
| } | |
| // URL'den link verisini decode et | |
| function getLinkFromUrl() { | |
| const urlParams = new URLSearchParams(window.location.search); | |
| const encodedData = urlParams.get('data'); | |
| if (!encodedData) return null; | |
| try { | |
| return JSON.parse(atob(encodedData)); | |
| } catch (e) { | |
| return null; | |
| } | |
| } | |
| // Link kodunu doğrula (localStorage'dan) | |
| function validateLink(code) { | |
| const links = localStorage.getItem('videoLinks'); | |
| if (!links) return null; | |
| try { | |
| const linkArray = JSON.parse(links); | |
| return linkArray.find(link => link.code === code) || null; | |
| } catch (e) { | |
| return null; | |
| } | |
| } | |
| // Linkin süresi doldu mu kontrol et | |
| function isLinkExpired(link) { | |
| if (link.limitType === 'time') { | |
| const now = new Date(); | |
| const expiresAt = new Date(link.expiresAt); | |
| return now > expiresAt; | |
| } else { | |
| return link.remainingViews <= 0; | |
| } | |
| } | |
| // İzleme sayısını azalt ve localStorage'a kaydet | |
| function decrementViewCount(link) { | |
| const links = localStorage.getItem('videoLinks'); | |
| if (!links) return link.remainingViews - 1; | |
| try { | |
| const linkArray = JSON.parse(links); | |
| const linkIndex = linkArray.findIndex(l => l.code === link.code); | |
| if (linkIndex !== -1) { | |
| linkArray[linkIndex].remainingViews = linkArray[linkIndex].remainingViews - 1; | |
| localStorage.setItem('videoLinks', JSON.stringify(linkArray)); | |
| return linkArray[linkIndex].remainingViews; | |
| } | |
| } catch (e) { | |
| console.error('Error decrementing view count:', e); | |
| } | |
| return link.remainingViews - 1; | |
| } | |
| // Bildirim göster | |
| function showNotification(message, type = 'success') { | |
| const notification = document.getElementById('notification'); | |
| notification.textContent = message; | |
| notification.className = 'notification'; | |
| if (type === 'error') { | |
| notification.style.background = '#333'; | |
| notification.style.color = '#fff'; | |
| } else { | |
| notification.style.background = '#fff'; | |
| notification.style.color = '#000'; | |
| } | |
| notification.style.display = 'block'; | |
| setTimeout(() => { | |
| notification.style.display = 'none'; | |
| }, 3000); | |
| } | |
| // Videoyu göster | |
| function showVideo(link) { | |
| document.getElementById('loading').style.display = 'none'; | |
| document.getElementById('error').style.display = 'none'; | |
| document.getElementById('videoSection').style.display = 'block'; | |
| document.getElementById('linkCode').textContent = link.code; | |
| // Video player'ı ayarla ve videoyu dinamik yükle | |
| const videoPlayer = document.getElementById('videoPlayer'); | |
| videoPlayer.src = 'Proje_Taslak_v7.mp4'; | |
| if (link.limitType === 'count') { | |
| // Kez bazlı limit | |
| const currentRemaining = link.remainingViews; | |
| if (currentRemaining <= 0) { | |
| // Hak doldu | |
| showNotification('İzleme hakkınız doldu!', 'error'); | |
| videoPlayer.pause(); | |
| videoPlayer.src = ''; | |
| setTimeout(() => { | |
| window.location.href = 'viewer.html?code=' + link.code; | |
| }, 2000); | |
| return; | |
| } | |
| // İzleme sayısını azalt | |
| const newRemaining = decrementViewCount(link); | |
| link.remainingViews = newRemaining; | |
| document.getElementById('remainingViews').textContent = newRemaining; | |
| document.getElementById('viewCountDisplay').textContent = newRemaining; | |
| } else { | |
| // Süre bazlı limit | |
| const now = new Date(); | |
| const expiresAt = new Date(link.expiresAt); | |
| const totalDuration = expiresAt - now; | |
| const remainingMinutes = Math.max(0, Math.ceil(totalDuration / 60000)); | |
| // Video bilgilerindeki kalan hakkı güncelle | |
| document.getElementById('remainingViews').textContent = remainingMinutes + ' dakika'; | |
| // Timer'ı göster, view-counter'ı gizle | |
| document.getElementById('timerContainer').style.display = 'block'; | |
| const viewCounter = document.getElementById('viewCounter'); | |
| if (viewCounter) { | |
| viewCounter.style.display = 'none'; | |
| } | |
| // Süre formatlama fonksiyonu | |
| function formatTime(ms) { | |
| const totalSeconds = Math.floor(ms / 1000); | |
| const minutes = Math.floor(totalSeconds / 60); | |
| const seconds = totalSeconds % 60; | |
| return `${minutes.toString().padStart(2, '0')}:${seconds.toString().padStart(2, '0')}`; | |
| } | |
| // Timer değişkenlerini window'a taşı | |
| window.linkExpiresAt = expiresAt; | |
| window.linkTotalDuration = totalDuration; | |
| window.linkVideoPlayer = videoPlayer; | |
| window.linkCode = link.code; | |
| // Timer güncelleme fonksiyonu | |
| window.updateTimer = () => { | |
| const currentTime = new Date(); | |
| const remainingMs = Math.max(0, window.linkExpiresAt - currentTime); | |
| const progressPercent = window.linkTotalDuration > 0 ? (remainingMs / window.linkTotalDuration) * 100 : 0; | |
| document.getElementById('timerDisplay').textContent = formatTime(remainingMs); | |
| document.getElementById('timerProgress').style.width = progressPercent + '%'; | |
| document.getElementById('remainingViews').textContent = Math.ceil(remainingMs / 60000) + ' dakika'; | |
| if (remainingMs <= 0) { | |
| showNotification('Süreniz doldu!', 'error'); | |
| window.linkVideoPlayer.pause(); | |
| window.linkVideoPlayer.src = ''; | |
| clearInterval(window.expirationInterval); | |
| setTimeout(() => { | |
| window.location.href = 'viewer.html?code=' + window.linkCode; | |
| }, 2000); | |
| } | |
| }; | |
| // Başlangıç değerini göster ve timer'ı başlat | |
| window.updateTimer(); | |
| window.expirationInterval = setInterval(window.updateTimer, 1000); | |
| } | |
| } | |
| // Hata göster | |
| function showError() { | |
| document.getElementById('loading').style.display = 'none'; | |
| document.getElementById('videoSection').style.display = 'none'; | |
| document.getElementById('error').style.display = 'block'; | |
| } | |
| // Sayfa yüklendiğinde | |
| document.addEventListener('DOMContentLoaded', function() { | |
| const code = getLinkCodeFromUrl(); | |
| if (!code) { | |
| showError(); | |
| return; | |
| } | |
| const link = validateLink(code); | |
| if (!link) { | |
| showError(); | |
| return; | |
| } | |
| if (isLinkExpired(link)) { | |
| if (link.limitType === 'count') { | |
| document.querySelector('.error-message').textContent = 'İzleme Hakkı Doldu'; | |
| document.querySelector('.error-description').textContent = 'Bu link için izleme hakkınız tükenmiş.'; | |
| } else { | |
| document.querySelector('.error-message').textContent = 'Süre Doldu'; | |
| document.querySelector('.error-description').textContent = 'Bu linkin süresi dolmuş.'; | |
| } | |
| showError(); | |
| return; | |
| } | |
| showVideo(link); | |
| }); | |