<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Le Havre - Ananas Sport 2025</title>
	<atom:link href="https://ananassport.live/tag/le-havre/feed/" rel="self" type="application/rss+xml" />
	<link>https://ananassport.live</link>
	<description>Canlı maç ve spor yayınları Full HD, 4K  CANLI YAYINLARI</description>
	<lastBuildDate>Sun, 30 Nov 2025 00:28:32 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>

<image>
	<url>https://ananassport.live/wp-content/uploads/2025/05/cropped-favico-32x32.png</url>
	<title>Le Havre - Ananas Sport 2025</title>
	<link>https://ananassport.live</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Le Havre &#8211; Lille &#8211; 2025</title>
		<link>https://ananassport.live/futbol-yayinlari/le-havre-lille-2025/</link>
					<comments>https://ananassport.live/futbol-yayinlari/le-havre-lille-2025/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Sun, 30 Nov 2025 00:26:44 +0000</pubDate>
				<category><![CDATA[Futbol Yayınları]]></category>
		<category><![CDATA[Le Havre]]></category>
		<category><![CDATA[lilie]]></category>
		<guid isPermaLink="false">https://ananassport.live/futbol-yayinlari/le-havre-lille-2025/</guid>

					<description><![CDATA[<p>Le Havre - Lille Maçı Ne Zaman, Saat Kaçta? Le Havre - Lille Maçı Nereden İzlenir?</p>
<p>The post <a href="https://ananassport.live/futbol-yayinlari/le-havre-lille-2025/">Le Havre – Lille – 2025</a> first appeared on <a href="https://ananassport.live">Ananas Sport 2025</a>.</p>]]></description>
										<content:encoded><![CDATA[<a href="https://ananassport.live/futbol-yayinlari/le-havre-lille-2025/" class="mf-card mf-card-clickable" data-match-id="2435"><div class="mf-header"><div class="mf-side"><img decoding="async" src="https://ananassport.live/wp-content/plugins/match-fixtures/assets/logos/placeholder.png" alt="Le Havre"><div class="mf-team-name">Le Havre</div></div><div class="mf-center"><div class="mf-score">0-1</div><div class="mf-status">Tamamlandı</div><div class="mf-date">30 Kasım 2025, 19:15 (TSİ)</div></div><div class="mf-side"><img decoding="async" src="https://ssl.gstatic.com/onebox/media/sports/logos/D2AQe8qoyPIP4K8MzLvwuA_96x96.png" alt="Lille"><div class="mf-team-name">Lille</div></div></div></a>
    <div class="ananas-stream-container" style="width: 100%; position: relative;">
            <video-js
                id="bein2"
                class="video-js vjs-default-skin has-clip-button"
                controls                preload="auto" poster="https://bunny-wp-pullzone-dn03t532yv.b-cdn.net/wp-content/uploads/2025/08/poster.avif"                playsinline
                webkit-playsinline
                x5-playsinline
                data-setup='{"playsinline":true}'
                data-stream="bein2"
                style="width: 100%; height: 100%;"
            >
                <source src="https://zbahisguncelgiris.click/live/bein2.m3u8" type="application/x-mpegURL" />
                <p class="vjs-no-js">
                    To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video.                </p>
            </video-js>
            
                            <div class="floating-ad-button" style="position: absolute; top: 20px; right: 20px; z-index: 9999;">
                    <button class="ad-button" onclick="window.open('https://cutt.ly/PrSX5xMR', '_blank')">
                        <span class="ad-button-text"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 700 TL NAKİT ÇEKİM BONUSU <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span>
                        <span class="ad-button-close" onclick="event.stopPropagation(); this.parentElement.parentElement.style.display='none';">&times;</span>
                    </button>
                </div>
                        </div>
        
        <!-- Clip Modal -->
        <div id="clipModal" class="clip-modal" style="display: none;">
            <div class="clip-modal-overlay" onclick="closeClipModal()"></div>
            <div class="clip-modal-content">
                <div class="clip-modal-header">
                    <h3 id="clipModalTitle">Klip Oluştur</h3>
                    <button class="clip-modal-close" onclick="closeClipModal()">&times;</button>
                </div>
                <div class="clip-modal-body">
                    <!-- Login/Register State -->
                    <div id="clipLoginState" class="clip-modal-state">
                        <div class="clip-auth-container">
                            <div class="clip-auth-icon"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f510.png" alt="🔐" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
                            <h4>Giriş Gerekli</h4>
                            <p>Video klip oluşturmak için giriş yapın</p>
                            <div class="clip-auth-buttons">
                                <button class="clip-btn clip-btn-primary" onclick="goToLogin()">Giriş Yap</button>
                                <button class="clip-btn clip-btn-secondary" onclick="goToRegister()">Kayıt Ol</button>
                            </div>
                        </div>
                    </div>
                    
                    <!-- Loading State -->
                    <div id="clipLoadingState" class="clip-modal-state" style="display: none;">
                        <div class="clip-loading-container">
                            <div class="clip-spinner"></div>
                            <h4>Klip Oluşturuluyor...</h4>
                            <p id="clipLoadingText">Video klip işleniyor</p>
                            <div class="clip-progress-bar">
                                <div class="clip-progress-fill"></div>
                            </div>
                        </div>
                    </div>
                    
                    <!-- Success State -->
                    <div id="clipSuccessState" class="clip-modal-state" style="display: none;">
                        <div class="clip-success-container">
                            <div class="clip-success-icon"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
                            <h4>Klip Başarıyla Oluşturuldu!</h4>
                            <p>Video klip hazır</p>
                            <div id="clipVideoPreview" class="clip-video-preview"></div>
                            <div class="clip-success-buttons">
                                <button class="clip-btn clip-btn-primary" onclick="downloadClip()">
                                    <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4e5.png" alt="📥" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span> İndir
                                </button>
                                <button class="clip-btn clip-btn-secondary" onclick="shareClip()">
                                    <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f517.png" alt="🔗" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span> Paylaş
                                </button>
                                <button class="clip-btn clip-btn-secondary" onclick="openClipInNew()">
                                    <span><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3ac.png" alt="🎬" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span> Yeni Sekmede Aç
                                </button>
                            </div>
                        </div>
                    </div>
                    
                    <!-- Error State -->
                    <div id="clipErrorState" class="clip-modal-state" style="display: none;">
                        <div class="clip-error-container">
                            <div class="clip-error-icon"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></div>
                            <h4>Klip Oluşturma Hatası</h4>
                            <p id="clipErrorMessage">Bir hata oluştu</p>
                            <div class="clip-error-buttons">
                                <button class="clip-btn clip-btn-primary" onclick="retryClipCreation()">Tekrar Dene</button>
                                <button class="clip-btn clip-btn-secondary" onclick="closeClipModal()">Kapat</button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        
        <style>
        /* Modal Styles */
        .clip-modal {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            z-index: 10000;
            display: flex;
            align-items: center;
            justify-content: center;
            animation: fadeIn 0.3s ease;
        }
        
        .clip-modal-overlay {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0, 0, 0, 0.7);
            backdrop-filter: blur(5px);
        }
        
        .clip-modal-content {
            position: relative;
            background: #ffffff;
            border-radius: 15px;
            max-width: 500px;
            width: 90%;
            max-height: 80vh;
            overflow: auto;
            box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
            animation: slideIn 0.3s ease;
            border: 2px solid #e9ecef;
        }
        
        .clip-modal-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 20px 25px 15px;
            border-bottom: 1px solid #eee;
        }
        
        .clip-modal-header h3 {
            margin: 0;
            color: #333;
            font-size: 20px;
            font-weight: 600;
        }
        
        .clip-modal-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 20px 25px 15px;
            border-bottom: 1px solid #eee;
            background: #f8f9fa;
        }
        
        .clip-modal-close {
            background: none;
            border: none;
            font-size: 24px;
            cursor: pointer;
            color: #999;
            padding: 5px;
            border-radius: 50%;
            width: 35px;
            height: 35px;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: all 0.2s ease;
        }
        
        .clip-modal-close:hover {
            background: #f5f5f5;
            color: #333;
        }
        
        .clip-modal-body {
            padding: 25px;
            background: #ffffff;
        }
        
        .clip-modal-state {
            text-align: center;
        }
        
        /* Ensure all text is readable */
        .clip-modal-state * {
            color: #333333 !important;
        }
        
        .clip-modal-state p {
            color: #555555 !important;
        }
        
        /* Auth State */
        .clip-auth-container {
            padding: 20px;
        }
        
        .clip-auth-icon {
            font-size: 48px;
            margin-bottom: 15px;
        }
        
        .clip-auth-container h4 {
            margin: 0 0 10px 0;
            color: #2c3e50 !important;
            font-size: 22px;
            font-weight: 600;
        }
        
        .clip-auth-container p {
            margin: 0 0 25px 0;
            color: #34495e !important;
            font-size: 16px;
            line-height: 1.5;
        }
        
        .clip-auth-buttons {
            display: flex;
            gap: 15px;
            justify-content: center;
            flex-wrap: wrap;
        }
        
        /* Loading State */
        .clip-loading-container {
            padding: 30px 20px;
        }
        
        .clip-spinner {
            width: 50px;
            height: 50px;
            border: 4px solid #f3f3f3;
            border-top: 4px solid #007cba;
            border-radius: 50%;
            animation: spin 1s linear infinite;
            margin: 0 auto 20px;
        }
        
        .clip-loading-container h4 {
            margin: 0 0 10px 0;
            color: #333;
            font-size: 20px;
        }
        
        .clip-loading-container p {
            margin: 0 0 20px 0;
            color: #666;
        }
        
        .clip-progress-bar {
            width: 100%;
            height: 6px;
            background: #f0f0f0;
            border-radius: 3px;
            overflow: hidden;
            margin-top: 20px;
        }
        
        .clip-progress-fill {
            height: 100%;
            background: linear-gradient(90deg, #007cba, #00a0d2);
            width: 0%;
            animation: progress 3s ease-in-out;
        }
        
        /* Success State */
        .clip-success-container {
            padding: 20px;
        }
        
        .clip-success-icon {
            font-size: 48px;
            margin-bottom: 15px;
        }
        
        .clip-success-container h4 {
            margin: 0 0 10px 0;
            color: #28a745;
            font-size: 22px;
        }
        
        .clip-video-preview {
            margin: 20px 0;
            border-radius: 8px;
            overflow: hidden;
            background: #f8f9fa;
            min-height: 200px;
            display: flex;
            align-items: center;
            justify-content: center;
            border: 2px dashed #dee2e6;
        }
        
        .clip-success-buttons {
            display: flex;
            gap: 10px;
            justify-content: center;
            flex-wrap: wrap;
            margin-top: 20px;
        }
        
        /* Error State */
        .clip-error-container {
            padding: 20px;
        }
        
        .clip-error-icon {
            font-size: 48px;
            margin-bottom: 15px;
        }
        
        .clip-error-container h4 {
            margin: 0 0 10px 0;
            color: #dc3545;
            font-size: 22px;
        }
        
        .clip-error-buttons {
            display: flex;
            gap: 15px;
            justify-content: center;
            flex-wrap: wrap;
            margin-top: 20px;
        }
        
        /* Buttons */
        .clip-btn {
            padding: 12px 24px;
            border: none;
            border-radius: 8px;
            font-size: 16px;
            font-weight: 500;
            cursor: pointer;
            transition: all 0.2s ease;
            display: inline-flex;
            align-items: center;
            gap: 8px;
            text-decoration: none;
            min-width: 120px;
            justify-content: center;
        }
        
        .clip-btn-primary {
            background: #007cba;
            color: white;
        }
        
        .clip-btn-primary:hover {
            background: #005a87;
            transform: translateY(-1px);
        }
        
        .clip-btn-secondary {
            background: #6c757d;
            color: white;
        }
        
        .clip-btn-secondary:hover {
            background: #5a6268;
            transform: translateY(-1px);
        }
        
        /* Animations */
        @keyframes fadeIn {
            from { opacity: 0; }
            to { opacity: 1; }
        }
        
        @keyframes slideIn {
            from { 
                opacity: 0;
                transform: translateY(-20px) scale(0.95);
            }
            to { 
                opacity: 1;
                transform: translateY(0) scale(1);
            }
        }
        
        @keyframes spin {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }
        
        @keyframes progress {
            0% { width: 0%; }
            50% { width: 70%; }
            100% { width: 100%; }
        }
        
        /* Mobile Responsive */
        @media (max-width: 768px) {
            .clip-modal-content {
                width: 95%;
                margin: 10px;
                max-height: 95vh;
            }
            
            .clip-modal-header {
                padding: 15px 20px 10px;
            }
            
            .clip-modal-header h3 {
                font-size: 18px;
            }
            
            .clip-modal-body {
                padding: 20px;
            }
            
            .clip-auth-buttons,
            .clip-success-buttons,
            .clip-error-buttons {
                flex-direction: column;
                align-items: center;
            }
            
            .clip-btn {
                width: 100%;
                max-width: 250px;
            }
            
            .clip-auth-icon,
            .clip-success-icon,
            .clip-error-icon {
                font-size: 36px;
            }
            
            /* Mobile VideoJS button adjustments */
            .vjs-clip-button {
                min-width: 44px !important;
                height: 44px !important;
                font-size: 18px !important;
                margin: 0 2px !important;
            }
            
            .vjs-control-bar {
                height: 60px !important;
            }
            
            .vjs-control-bar .vjs-control {
                min-width: 44px !important;
                height: 44px !important;
            }
        }
        
        @media (max-width: 480px) {
            .clip-modal-content {
                width: 98%;
                margin: 5px;
                border-radius: 10px;
            }
            
            .clip-modal-header h3 {
                font-size: 16px;
            }
            
            .clip-modal-body {
                padding: 15px;
            }
            
            .clip-auth-container,
            .clip-loading-container,
            .clip-success-container,
            .clip-error-container {
                padding: 15px;
            }
            
            /* Extra small mobile adjustments */
            .vjs-clip-button {
                min-width: 40px !important;
                height: 40px !important;
                font-size: 16px !important;
            }
            
            .vjs-control-bar {
                height: 56px !important;
            }
            
            .vjs-control-bar .vjs-control {
                min-width: 40px !important;
                height: 40px !important;
            }
        }
        
        /* Ensure clip button is always visible on mobile */
        @media (max-width: 768px) {
            .vjs-control-bar .vjs-clip-button {
                display: flex !important;
                visibility: visible !important;
                opacity: 1 !important;
                position: relative !important;
                float: none !important;
                order: 999 !important;
                z-index: 10 !important;
            }
            
            /* Force button to be in control bar */
            .vjs-control-bar .vjs-clip-button {
                order: 999 !important;
                position: relative !important;
                float: none !important;
                min-width: 44px !important;
                height: 44px !important;
                margin: 0 2px !important;
            }
            
            /* Ensure control bar has enough space */
            .vjs-control-bar {
                min-height: 60px !important;
                padding: 8px 0 !important;
            }
        }
        
        /* Additional mobile button styles - Fixed size and hover */
        .vjs-clip-button {
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            width: 32px !important;
            height: 32px !important;
            font-size: 14px !important;
            cursor: pointer !important;
            border: none !important;
            background: transparent !important;
            color: white !important;
            transition: all 0.2s ease !important;
            border-radius: 2px !important;
            overflow: hidden !important;
        }
        
        .vjs-clip-button:hover {
            background: rgba(255, 255, 255, 0.2) !important;
            transform: none !important;
        }
        
        .vjs-clip-button:active {
            background: rgba(255, 255, 255, 0.3) !important;
            transform: none !important;
        }
        
        /* Fallback button styles - Enhanced */
        .fallback-clip-button {
            position: absolute !important;
            top: 15px !important;
            right: 15px !important;
            width: 50px !important;
            height: 50px !important;
            background: rgba(0, 0, 0, 0.9) !important;
            color: white !important;
            border: 2px solid rgba(255, 255, 255, 0.3) !important;
            border-radius: 10px !important;
            font-size: 20px !important;
            cursor: pointer !important;
            z-index: 9999 !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            transition: all 0.3s ease !important;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3) !important;
        }
        
        .fallback-clip-button:hover {
            background: rgba(0, 0, 0, 1) !important;
            border-color: rgba(255, 255, 255, 0.6) !important;
            transform: scale(1.1) !important;
            box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4) !important;
        }
        
        .fallback-clip-button:active {
            transform: scale(0.95) !important;
        }
        
        /* Mobile responsive buttons - Fixed sizes */
        @media (max-width: 768px) {
            .vjs-clip-button {
                width: 36px !important;
                height: 36px !important;
                font-size: 16px !important;
            }
            
            .fallback-clip-button {
                width: 55px !important;
                height: 55px !important;
                font-size: 22px !important;
                top: 20px !important;
                right: 20px !important;
            }
        }
        
        @media (max-width: 480px) {
            .vjs-clip-button {
                width: 40px !important;
                height: 40px !important;
                font-size: 18px !important;
            }
            
            .fallback-clip-button {
                width: 60px !important;
                height: 60px !important;
                font-size: 24px !important;
                top: 25px !important;
                right: 25px !important;
            }
        }
        </style>
        
        <script>
        // Wait for VideoJS to be ready with multiple fallbacks
        function waitForVideoJS() {
            var maxAttempts = 10;
            var attempt = 0;
            
            function tryToAddButton() {
                attempt++;
                console.log('Attempt', attempt, 'to add clip button...');
                
                try {
                    var player = videojs('bein2');
                    if (player && player.readyState && player.readyState() >= 1) {
                        console.log('VideoJS player ready, adding clip button...');
                        addClipButtonToPlayer(player, 'bein2');
                        return true;
                    } else if (player && typeof player.ready === 'function') {
                        player.ready(function() {
                            console.log('VideoJS player.ready() called, adding clip button...');
                            addClipButtonToPlayer(player, 'bein2');
                        });
                        return true;
                    }
                } catch (e) {
                    console.log('Attempt', attempt, 'failed:', e.message);
                }
                
                if (attempt < maxAttempts) {
                    setTimeout(tryToAddButton, 500);
                } else {
                    console.error('Failed to add clip button after', maxAttempts, 'attempts');
                    // Last resort: try to add button directly
                    try {
                        var videoElement = document.getElementById('bein2');
                        if (videoElement && videoElement.parentNode) {
                            console.log('Adding clip button as fallback...');
                            addClipButtonAsFallback(videoElement, 'bein2');
                        }
                    } catch (e) {
                        console.error('Fallback also failed:', e);
                    }
                }
                
                return false;
            }
            
            tryToAddButton();
        }
        
        // Start waiting for VideoJS
        if (document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', waitForVideoJS);
        } else {
            waitForVideoJS();
        }
        
        function addClipButtonToPlayer(player, streamName) {
            try {
                // Create button element with better mobile support
                var clipButton = document.createElement('button');
                clipButton.className = 'vjs-control vjs-button vjs-clip-button';
                clipButton.setAttribute('type', 'button');
                clipButton.setAttribute('title', 'Create Clip');
                clipButton.innerHTML = '&#x2702;';
                
                // Enhanced styling for better mobile visibility
                clipButton.style.cssText = 'font-size: 18px; padding: 8px; margin: 0 2px; border: none; background: transparent; color: white; cursor: pointer; border-radius: 4px; transition: all 0.2s ease; min-width: 44px; height: 44px; display: flex; align-items: center; justify-content: center;';
                
                // Add hover effect
                clipButton.addEventListener('mouseenter', function() {
                    this.style.background = 'rgba(255, 255, 255, 0.2)';
                    this.style.transform = 'scale(1.1)';
                });
                
                clipButton.addEventListener('mouseleave', function() {
                    this.style.background = 'transparent';
                    this.style.transform = 'scale(1)';
                });
                
                // Add click handler
                clipButton.onclick = function() {
                    createSimpleClip(streamName);
                };
                
                // Add to control bar at the beginning (left side)
                var controlBar = player.controlBar.el();
                var firstControl = controlBar.querySelector('.vjs-control');
                
                if (firstControl) {
                    // Insert at the beginning of control bar (left side)
                    controlBar.insertBefore(clipButton, firstControl);
                    console.log('Clip button added to left side of toolbar!');
                } else {
                    // Fallback: add to beginning of control bar
                    controlBar.insertBefore(clipButton, controlBar.firstChild);
                    console.log('Clip button added to beginning of toolbar!');
                }
                
                // Ensure button is visible on mobile
                setTimeout(function() {
                    if (clipButton.style.display === 'none' || clipButton.style.visibility === 'hidden') {
                        clipButton.style.display = 'flex !important';
                        clipButton.style.visibility = 'visible !important';
                        clipButton.style.opacity = '1 !important';
                    }
                    
                    // Force mobile visibility
                    if (window.innerWidth <= 768) {
                        clipButton.style.display = 'flex !important';
                        clipButton.style.visibility = 'visible !important';
                        clipButton.style.opacity = '1 !important';
                        clipButton.style.position = 'relative !important';
                        clipButton.style.float = 'none !important';
                    }
                }, 200);
                
            } catch (e) {
                console.error('Error adding button to toolbar:', e);
            }
        }
        
        // Fallback function to add button when VideoJS fails
        function addClipButtonAsFallback(videoElement, streamName) {
            try {
                console.log('Adding fallback clip button...');
                
                // Create a floating button overlay
                var clipButton = document.createElement('button');
                clipButton.className = 'fallback-clip-button';
                clipButton.innerHTML = '&#x2702;';
                clipButton.title = 'Create Clip';
                clipButton.onclick = function() {
                    createSimpleClip(streamName);
                };
                
                // Style the fallback button
                clipButton.style.cssText = 'position: absolute; top: 10px; right: 10px; width: 44px; height: 44px; background: rgba(0, 0, 0, 0.8); color: white; border: none; border-radius: 8px; font-size: 18px; cursor: pointer; z-index: 1000; display: flex; align-items: center; justify-content: center; transition: all 0.2s ease;';
                
                // Add hover effect
                clipButton.addEventListener('mouseenter', function() {
                    this.style.background = 'rgba(0, 0, 0, 0.9)';
                    this.style.transform = 'scale(1.1)';
                });
                
                clipButton.addEventListener('mouseleave', function() {
                    this.style.background = 'rgba(0, 0, 0, 0.8)';
                    this.style.transform = 'scale(1)';
                });
                
                // Add to video container
                var videoContainer = videoElement.parentNode;
                if (videoContainer) {
                    videoContainer.style.position = 'relative';
                    videoContainer.appendChild(clipButton);
                    console.log('Fallback clip button added successfully');
                }
            } catch (e) {
                console.error('Error adding fallback button:', e);
            }
        }
        
        // Global variables for modal
        var currentStreamName = '';
        var currentClipUrl = '';
        
        function createSimpleClip(streamName) {
            console.log('[Clip] Creating clip for stream:', streamName);
            currentStreamName = streamName;
            
            if (typeof ananassportClipAjax === 'undefined') {
                console.error('[Clip] Plugin not configured');
                return;
            }
            
            if (!ananassportClipAjax.isLoggedIn) {
                showClipModal('login');
                return;
            }
            
            // Try range modal first
            if (typeof window.openRangeClipModal === 'function' && ananassportClipAjax.apiUrl) {
                try {
                    const apiBase = ananassportClipAjax.apiUrl.replace(/\/api.*$/, '');
                    window.openRangeClipModal({
                        apiBase: apiBase,
                        apiPrefix: '/api',
                        streamName: streamName,
                        defaultDuration: 15,
                        relaxed: true
                    });
                    return;
                } catch (e) {
                    console.error('[Clip] Range modal error:', e);
                }
            }
            
            // Fallback to quick clip
            showClipModal('loading');
            jQuery.ajax({
                url: ananassportClipAjax.ajaxurl,
                type: 'POST',
                data: {
                    action: 'create_clip',
                    nonce: ananassportClipAjax.nonce,
                    stream_name: streamName,
                    duration: 15,
                    timestamp: new Date().toISOString()
                },
                success: function(response) {
                    if (response.success) {
                        currentClipUrl = response.clip_url || '';
                        showClipModal('success', response);
                    } else {
                        showClipModal('error', response.error || 'Unknown error');
                    }
                },
                error: function(xhr, status, error) {
                    showClipModal('error', 'Network error: ' + error);
                }
            });
        }
        
        function showClipModal(state, data) {
            var modal = document.getElementById('clipModal');
            var loginState = document.getElementById('clipLoginState');
            var loadingState = document.getElementById('clipLoadingState');
            var successState = document.getElementById('clipSuccessState');
            var errorState = document.getElementById('clipErrorState');
            
            // Hide all states
            loginState.style.display = 'none';
            loadingState.style.display = 'none';
            successState.style.display = 'none';
            errorState.style.display = 'none';
            
            // Show modal
            modal.style.display = 'flex';
            
            // Show specific state
            switch(state) {
                case 'login':
                    loginState.style.display = 'block';
                    document.getElementById('clipModalTitle').textContent = 'Giriş Gerekli';
                    break;
                    
                case 'loading':
                    loadingState.style.display = 'block';
                    document.getElementById('clipModalTitle').textContent = 'Klip Oluşturuluyor';
                    // Animate loading text
                    animateLoadingText();
                    break;
                    
                case 'success':
                    successState.style.display = 'block';
                    document.getElementById('clipModalTitle').textContent = 'Klip Hazır';
                    if (data && data.clip_url) {
                        setupVideoPreview(data.clip_url);
                    }
                    break;
                    
                case 'error':
                    errorState.style.display = 'block';
                    document.getElementById('clipModalTitle').textContent = 'Hata';
                    document.getElementById('clipErrorMessage').textContent = data || 'Bir hata oluştu';
                    break;
            }
        }
        
        function animateLoadingText() {
            var texts = [
                'Video klip işleniyor...',
                'Stream segmenti çıkarılıyor...',
                'Logo overlay uygulanıyor...',
                'Video kodlanıyor...',
                'Neredeyse hazır...'
            ];
            var index = 0;
            var loadingText = document.getElementById('clipLoadingText');
            
            var interval = setInterval(function() {
                if (document.getElementById('clipLoadingState').style.display === 'none') {
                    clearInterval(interval);
                    return;
                }
                loadingText.textContent = texts[index];
                index = (index + 1) % texts.length;
            }, 800);
        }
        
        function setupVideoPreview(clipUrl) {
            var preview = document.getElementById('clipVideoPreview');
            if (clipUrl) {
                preview.innerHTML = '<video controls style="width: 100%; max-height: 200px; border-radius: 8px;"><source src="' + clipUrl + '" type="video/mp4">Your browser does not support video playback.</video>';
            } else {
                preview.innerHTML = '<div style="padding: 40px; color: #666;">&#x1f3ac; Clip ready for download</div>';
            }
        }
        
        function closeClipModal() {
            document.getElementById('clipModal').style.display = 'none';
        }
        
        function goToLogin() {
            if (ananassportClipAjax && ananassportClipAjax.loginUrl) {
                window.location.href = ananassportClipAjax.loginUrl;
            } else {
                window.location.href = '/wp-login.php';
            }
        }
        
        function goToRegister() {
            if (ananassportClipAjax && ananassportClipAjax.registerUrl) {
                window.location.href = ananassportClipAjax.registerUrl;
            } else {
                window.location.href = '/wp-login.php?action=register';
            }
        }
        
        function downloadClip() {
            if (currentClipUrl) {
                var a = document.createElement('a');
                a.href = currentClipUrl;
                a.download = 'clip_' + currentStreamName + '_' + new Date().getTime() + '.mp4';
                document.body.appendChild(a);
                a.click();
                document.body.removeChild(a);
            }
        }
        
        function shareClip() {
            if (currentClipUrl) {
                if (navigator.share) {
                    navigator.share({
                        title: 'Video Clip',
                        text: 'Check out this video clip!',
                        url: currentClipUrl
                    });
                } else {
                    // Fallback to clipboard
                    navigator.clipboard.writeText(currentClipUrl).then(function() {
                        alert('Clip URL copied to clipboard!');
                    });
                }
            }
        }
        
        function openClipInNew() {
            if (currentClipUrl) {
                window.open(currentClipUrl, '_blank');
            }
        }
        
        function retryClipCreation() {
            if (currentStreamName) {
                createSimpleClip(currentStreamName);
            }
        }
        
        // Close modal on escape key
        document.addEventListener('keydown', function(e) {
            if (e.key === 'Escape') {
                closeClipModal();
            }
        });
        </script>
        
<p>Fransa Ligue 1, tüm hızı ile devam ediyor! Lig&#8217;in heyecanlı haftasında birbirinden heyecanlı maçlar oynanacak. Le Havre ile Lille bu hafta oynanacak kritik maçlar arasında. Peki, Le Havre &#8211; Lille maçı ne zaman? Le Havre-Lille maçı saat kaçta ve hangi kanalda yayınlanacak? Maç nereden izlenecek?</p>
<h2>Le Havre &#8211; Lille Maçı Ne Zaman?</h2>
<p>Fransa Ligue 1&#8217;de heyecan devam ediyor. Le Havre ve Lille&#8217;ın çekişmeli karşılaşması, taraftarlar ve futbolseverler tarafından heyecanla bekleniyor. Maç ise 30 Kasım 2025 Pazar günü gerçekleşecek.</p>
<h2>Le Havre Lille Maçı Saat Kaçta?</h2>
<p>Futbol tutkunlarının dört gözle beklediği bu karşılaşma, 30 Kasım Pazar günü Türkiye saatiyle 19.15&#8217;de başlayacak.</p>
<p>Le Havre ile Lille arasında gerçekleştirilecek heyecan dolu futbol mücadelesi, beIN SPORTS 2 ekranlarında futbol severlerle canlı olarak buluşacak.</p>
<h2>Le Havre &#8211; Lille Maçı Nerede Oynanacak?</h2>
<p>30 Kasım&#8217;da Le Havre ile Lille arasında gerçekleşecek olan karşılaşmanın stadyum ve hakem bilgileri maç saati yaklaştığında netleşecektir.</p>


<p></p><p>The post <a href="https://ananassport.live/futbol-yayinlari/le-havre-lille-2025/">Le Havre – Lille – 2025</a> first appeared on <a href="https://ananassport.live">Ananas Sport 2025</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://ananassport.live/futbol-yayinlari/le-havre-lille-2025/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
