{"id":134,"date":"2026-08-20T00:50:25","date_gmt":"2026-08-19T21:20:25","guid":{"rendered":"https:\/\/videop.kioping.ir\/?page_id=134"},"modified":"2026-08-20T00:50:25","modified_gmt":"2026-08-19T21:20:25","slug":"%d8%a7%db%8c%d8%b1%d8%a7%d9%86%db%8c-%d8%ac%d8%af%db%8c%d8%af-%f0%9f%94%a5-2","status":"publish","type":"page","link":"https:\/\/videop.kioping.ir\/?page_id=134","title":{"rendered":"\u0627\u06cc\u0631\u0627\u0646\u06cc \u062c\u062f\u06cc\u062f \ud83d\udd25"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"fa\" dir=\"rtl\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>\u067e\u0644\u06cc\u0631 \u0648\u06cc\u062f\u06cc\u0648\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc<\/title>\n    <style>\n        \/* \u0627\u0633\u062a\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc \u0639\u0645\u0648\u0645\u06cc \u0648 \u0631\u06cc\u0633\u062a *\/\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n\n        body {\n            background: linear-gradient(145deg, #0b0e1a, #1a1f2f);\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            min-height: 100vh;\n            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n            padding: 20px;\n        }\n\n        .player-wrapper {\n            max-width: 900px;\n            width: 100%;\n            background: #141a26;\n            border-radius: 32px;\n            box-shadow: 0 30px 50px rgba(0, 0, 0, 0.7), 0 0 0 1px rgba(255, 255, 255, 0.06);\n            padding: 20px;\n            transition: all 0.2s ease;\n        }\n\n        \/* \u0645\u062d\u0641\u0638\u0647 \u0648\u06cc\u062f\u06cc\u0648 \u0628\u0627 \u0646\u0633\u0628\u062a 16:9 *\/\n        .video-container {\n            position: relative;\n            width: 100%;\n            padding-bottom: 56.25%; \/* 16:9 *\/\n            border-radius: 20px;\n            overflow: hidden;\n            background: #0a0d14;\n            box-shadow: inset 0 8px 12px rgba(0, 0, 0, 0.6);\n        }\n\n        .video-container video {\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            display: block;\n            background: #000;\n            object-fit: contain; \/* \u0645\u062d\u062a\u0648\u0627\u06cc \u0648\u06cc\u062f\u06cc\u0648 \u0631\u0627 \u0628\u062f\u0648\u0646 \u0628\u0631\u0634 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f *\/\n        }\n\n        \/* \u06a9\u0646\u062a\u0631\u0644\u200c\u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc *\/\n        .custom-controls {\n            display: flex;\n            flex-direction: column;\n            gap: 12px;\n            margin-top: 18px;\n            padding: 12px 16px 16px;\n            background: #1e2638;\n            border-radius: 28px;\n            box-shadow: inset 0 4px 6px rgba(0,0,0,0.4), 0 6px 12px rgba(0,0,0,0.3);\n        }\n\n        .controls-row {\n            display: flex;\n            align-items: center;\n            justify-content: space-between;\n            flex-wrap: wrap;\n            gap: 12px;\n        }\n\n        .controls-row .left-group {\n            display: flex;\n            align-items: center;\n            gap: 12px;\n            flex-wrap: wrap;\n        }\n\n        .controls-row .right-group {\n            display: flex;\n            align-items: center;\n            gap: 10px;\n        }\n\n        \/* \u062f\u06a9\u0645\u0647\u200c\u0647\u0627 *\/\n        .ctrl-btn {\n            background: transparent;\n            border: none;\n            color: #d0d9f0;\n            font-size: 22px;\n            width: 44px;\n            height: 44px;\n            border-radius: 40px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            cursor: pointer;\n            transition: all 0.2s ease;\n            background: rgba(255, 255, 255, 0.04);\n            backdrop-filter: blur(2px);\n            box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);\n        }\n\n        .ctrl-btn:hover {\n            background: #3e4a66;\n            color: #ffffff;\n            transform: scale(1.02);\n            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);\n        }\n\n        .ctrl-btn:active {\n            transform: scale(0.92);\n        }\n\n        .ctrl-btn svg {\n            width: 24px;\n            height: 24px;\n            fill: currentColor;\n        }\n\n        \/* \u0646\u0648\u0627\u0631 \u0632\u0645\u0627\u0646 *\/\n        .progress-container {\n            display: flex;\n            align-items: center;\n            gap: 12px;\n            flex: 2;\n            min-width: 160px;\n        }\n\n        .time-display {\n            color: #b0bedd;\n            font-size: 0.85rem;\n            font-weight: 500;\n            letter-spacing: 0.3px;\n            background: rgba(0, 0, 0, 0.3);\n            padding: 4px 10px;\n            border-radius: 30px;\n            white-space: nowrap;\n            font-feature-settings: \"tnum\";\n        }\n\n        .progress-bar {\n            flex: 1;\n            height: 6px;\n            background: #2e3a52;\n            border-radius: 20px;\n            cursor: pointer;\n            position: relative;\n            transition: height 0.15s;\n            box-shadow: inset 0 2px 4px rgba(0,0,0,0.3);\n        }\n\n        .progress-bar:hover {\n            height: 9px;\n        }\n\n        .progress-fill {\n            height: 100%;\n            width: 0%;\n            background: linear-gradient(90deg, #6c8cff, #a47cff);\n            border-radius: 20px;\n            transition: width 0.05s linear;\n            box-shadow: 0 0 12px #6c8cff88;\n        }\n\n        .progress-bar .progress-buffered {\n            height: 100%;\n            background: rgba(255, 255, 255, 0.15);\n            border-radius: 20px;\n            position: absolute;\n            top: 0;\n            left: 0;\n            pointer-events: none;\n        }\n\n        \/* \u0648\u0631\u0648\u062f\u06cc \u0644\u06cc\u0646\u06a9 \u0648 \u062f\u06a9\u0645\u0647 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc *\/\n        .link-section {\n            display: flex;\n            align-items: center;\n            gap: 10px;\n            flex-wrap: wrap;\n            margin-top: 4px;\n        }\n\n        .link-input {\n            flex: 2;\n            min-width: 200px;\n            background: #0f131f;\n            border: 1px solid #2d3850;\n            border-radius: 40px;\n            padding: 10px 18px;\n            color: #e8edff;\n            font-size: 0.9rem;\n            outline: none;\n            transition: all 0.2s;\n            box-shadow: inset 0 3px 6px rgba(0,0,0,0.4);\n        }\n\n        .link-input:focus {\n            border-color: #6c8cff;\n            background: #191f30;\n            box-shadow: 0 0 0 2px #6c8cff33, inset 0 3px 6px #00000066;\n        }\n\n        .link-input::placeholder {\n            color: #6b7a9b;\n            font-weight: 300;\n        }\n\n        .load-btn {\n            background: linear-gradient(145deg, #4a5a80, #2d3b5a);\n            border: none;\n            color: white;\n            padding: 10px 28px;\n            border-radius: 40px;\n            font-weight: 600;\n            font-size: 0.95rem;\n            letter-spacing: 0.5px;\n            cursor: pointer;\n            transition: all 0.2s ease;\n            box-shadow: 0 4px 10px rgba(0, 0, 0, 0.5);\n            border: 1px solid #5f72a0;\n            white-space: nowrap;\n        }\n\n        .load-btn:hover {\n            background: linear-gradient(145deg, #5d70a0, #3a4b70);\n            transform: scale(1.02);\n            box-shadow: 0 8px 18px #00000077;\n        }\n\n        .load-btn:active {\n            transform: scale(0.96);\n        }\n\n        \/* \u062f\u06a9\u0645\u0647 \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 *\/\n        .fullscreen-btn {\n            background: transparent;\n            border: none;\n            color: #b0bedd;\n            font-size: 22px;\n            cursor: pointer;\n            padding: 6px;\n            border-radius: 30px;\n            transition: 0.2s;\n            display: flex;\n            align-items: center;\n        }\n\n        .fullscreen-btn:hover {\n            background: #2d3850;\n            color: white;\n        }\n\n        \/* \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u06cc\u0627 \u0648\u0636\u0639\u06cc\u062a *\/\n        .status-msg {\n            color: #b8c7f0;\n            font-size: 0.8rem;\n            padding: 4px 12px;\n            background: #1f2840;\n            border-radius: 30px;\n            border-left: 3px solid #6c8cff;\n        }\n\n        \/* \u0648\u0627\u06a9\u0646\u0634\u200c\u06af\u0631\u0627\u06cc\u06cc *\/\n        @media (max-width: 650px) {\n            .controls-row {\n                flex-direction: column;\n                align-items: stretch;\n            }\n            .progress-container {\n                order: 3;\n                width: 100%;\n            }\n            .link-section {\n                flex-direction: column;\n            }\n            .load-btn {\n                width: 100%;\n                justify-content: center;\n            }\n            .ctrl-btn {\n                width: 40px;\n                height: 40px;\n                font-size: 18px;\n            }\n        }\n    <\/style>\n<\/head>\n<body>\n\n<div class=\"player-wrapper\">\n    <!-- \u0645\u062d\u0641\u0638\u0647 \u0648\u06cc\u062f\u06cc\u0648 -->\n    <div class=\"video-container\" id=\"videoContainer\">\n        <video id=\"customVideo\" preload=\"metadata\" playsinline><\/video>\n    <\/div>\n\n    <!-- \u06a9\u0646\u062a\u0631\u0644\u200c\u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc -->\n    <div class=\"custom-controls\">\n        <div class=\"controls-row\">\n            <div class=\"left-group\">\n                <!-- \u062f\u06a9\u0645\u0647 \u067e\u062e\u0634\/\u0645\u06a9\u062b -->\n                <button class=\"ctrl-btn\" id=\"playPauseBtn\" aria-label=\"\u067e\u062e\u0634 \u06cc\u0627 \u0645\u06a9\u062b\">\n                    <svg viewBox=\"0 0 24 24\"><polygon points=\"5,3 19,12 5,21\" \/><\/svg>\n                <\/button>\n                <!-- \u062f\u06a9\u0645\u0647 \u0635\u062f\u0627 -->\n                <button class=\"ctrl-btn\" id=\"muteBtn\" aria-label=\"\u0642\u0637\u0639\/\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0635\u062f\u0627\">\n                    <svg viewBox=\"0 0 24 24\"><path d=\"M3 9v6h4l5 5V4L7 9H3z\"\/><path d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02z\"\/><\/svg>\n                <\/button>\n                <!-- \u0646\u0645\u0627\u06cc\u0634 \u0632\u0645\u0627\u0646 -->\n                <span class=\"time-display\" id=\"timeDisplay\">\u06f0:\u06f0\u06f0 \/ \u06f0:\u06f0\u06f0<\/span>\n            <\/div>\n\n            <div class=\"right-group\">\n                <!-- \u062f\u06a9\u0645\u0647 \u0633\u0631\u0639\u062a -->\n                <button class=\"ctrl-btn\" id=\"speedBtn\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0633\u0631\u0639\u062a\" style=\"font-size: 0.8rem; font-weight: 600;\">\u06f1\u00d7<\/button>\n                <!-- \u062f\u06a9\u0645\u0647 \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 -->\n                <button class=\"fullscreen-btn\" id=\"fullscreenBtn\" aria-label=\"\u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647\">\n                    <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"\/><\/svg>\n                <\/button>\n            <\/div>\n        <\/div>\n\n        <!-- \u0646\u0648\u0627\u0631 \u067e\u06cc\u0634\u0631\u0641\u062a -->\n        <div class=\"progress-container\">\n            <div class=\"progress-bar\" id=\"progressBar\">\n                <div class=\"progress-buffered\" id=\"bufferedBar\" style=\"width:0%\"><\/div>\n                <div class=\"progress-fill\" id=\"progressFill\" style=\"width:0%\"><\/div>\n            <\/div>\n        <\/div>\n\n        <!-- \u0628\u062e\u0634 \u0644\u06cc\u0646\u06a9 \u0645\u0633\u062a\u0642\u06cc\u0645 -->\n        <div class=\"link-section\">\n            <input type=\"text\" class=\"link-input\" id=\"videoUrlInput\" placeholder=\"\u0644\u06cc\u0646\u06a9 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0648\u06cc\u062f\u06cc\u0648 (mp4, webm, ...)\" value=\"https:\/\/rx-videostreambot.koyeb.app\/15166?hash=AgAD9A\">\n            <button class=\"load-btn\" id=\"loadVideoBtn\">\u25b6 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc<\/button>\n            <span class=\"status-msg\" id=\"statusMsg\">\u0622\u0645\u0627\u062f\u0647<\/span>\n        <\/div>\n    <\/div>\n<\/div>\n\n<script>\n    (function(){\n        \"use strict\";\n\n        \/\/ \u0639\u0646\u0627\u0635\u0631 DOM\n        const video = document.getElementById('customVideo');\n        const playPauseBtn = document.getElementById('playPauseBtn');\n        const muteBtn = document.getElementById('muteBtn');\n        const timeDisplay = document.getElementById('timeDisplay');\n        const progressFill = document.getElementById('progressFill');\n        const bufferedBar = document.getElementById('bufferedBar');\n        const progressBar = document.getElementById('progressBar');\n        const videoUrlInput = document.getElementById('videoUrlInput');\n        const loadBtn = document.getElementById('loadVideoBtn');\n        const statusMsg = document.getElementById('statusMsg');\n        const fullscreenBtn = document.getElementById('fullscreenBtn');\n        const speedBtn = document.getElementById('speedBtn');\n        const videoContainer = document.getElementById('videoContainer');\n\n        \/\/ \u0645\u062a\u063a\u06cc\u0631\u0647\u0627\n        let speedLevels = [0.5, 0.75, 1, 1.25, 1.5, 2];\n        let speedIndex = 2; \/\/ \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 1x\n        let isDragging = false;\n\n        \/\/ --- \u062a\u0648\u0627\u0628\u0639 \u06a9\u0645\u06a9\u06cc ---\n        function formatTime(seconds) {\n            if (isNaN(seconds) || seconds < 0) return '\u06f0:\u06f0\u06f0';\n            const s = Math.floor(seconds);\n            const mins = Math.floor(s \/ 60);\n            const secs = s % 60;\n            return `${mins}:${secs.toString().padStart(2, '0')}`;\n        }\n\n        function updateTimeDisplay() {\n            const current = formatTime(video.currentTime);\n            const total = formatTime(video.duration || 0);\n            timeDisplay.textContent = `${current} \/ ${total}`;\n        }\n\n        function updateProgress() {\n            if (!isDragging) {\n                const percent = (video.duration > 0) ? (video.currentTime \/ video.duration) * 100 : 0;\n                progressFill.style.width = percent + '%';\n            }\n            \/\/ \u0646\u0645\u0627\u06cc\u0634 \u0628\u0627\u0641\u0631\n            if (video.buffered.length > 0) {\n                const bufferedEnd = video.buffered.end(video.buffered.length - 1);\n                const bufferedPercent = (video.duration > 0) ? (bufferedEnd \/ video.duration) * 100 : 0;\n                bufferedBar.style.width = bufferedPercent + '%';\n            }\n            updateTimeDisplay();\n        }\n\n        function setPlayPauseIcon(playing) {\n            if (playing) {\n                playPauseBtn.innerHTML = `<svg viewBox=\"0 0 24 24\"><rect x=\"6\" y=\"4\" width=\"4\" height=\"16\"\/><rect x=\"14\" y=\"4\" width=\"4\" height=\"16\"\/><\/svg>`;\n            } else {\n                playPauseBtn.innerHTML = `<svg viewBox=\"0 0 24 24\"><polygon points=\"5,3 19,12 5,21\" \/><\/svg>`;\n            }\n        }\n\n        function setMuteIcon(muted) {\n            if (muted) {\n                muteBtn.innerHTML = `<svg viewBox=\"0 0 24 24\"><path d=\"M3 9v6h4l5 5V4L7 9H3z\"\/><line x1=\"18\" y1=\"6\" x2=\"22\" y2=\"10\"\/><line x1=\"22\" y1=\"6\" x2=\"18\" y2=\"10\"\/><\/svg>`;\n            } else {\n                muteBtn.innerHTML = `<svg viewBox=\"0 0 24 24\"><path d=\"M3 9v6h4l5 5V4L7 9H3z\"\/><path d=\"M16.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02z\"\/><\/svg>`;\n            }\n        }\n\n        function updateSpeedLabel() {\n            speedBtn.textContent = speedLevels[speedIndex] + '\u00d7';\n        }\n\n        \/\/ --- \u062a\u0627\u0628\u0639 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0648\u06cc\u062f\u06cc\u0648 \u0627\u0632 \u0644\u06cc\u0646\u06a9 ---\n        function loadVideoFromUrl(url) {\n            if (!url || url.trim() === '') {\n                statusMsg.textContent = '\u26a0\ufe0f \u0644\u06cc\u0646\u06a9 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f';\n                return;\n            }\n            statusMsg.textContent = '\u23f3 \u062f\u0631 \u062d\u0627\u0644 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc...';\n            video.src = url.trim();\n            video.load();\n            \/\/ \u067e\u0633 \u0627\u0632 \u0645\u062a\u0627\u062f\u06cc\u062a\u0627\u060c \u0648\u0636\u0639\u06cc\u062a \u0628\u0647\u200c\u0631\u0648\u0632 \u0645\u06cc\u200c\u0634\u0648\u062f\n            video.onloadedmetadata = function() {\n                statusMsg.textContent = '\u2705 \u0622\u0645\u0627\u062f\u0647 \u067e\u062e\u0634';\n                updateTimeDisplay();\n                updateProgress();\n                \/\/ \u0627\u06af\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u067e\u062e\u0634 \u0646\u0634\u062f\u060c \u0622\u0645\u0627\u062f\u0647\u200c\u0627\u06cc\u0645\n                if (video.paused) {\n                    setPlayPauseIcon(false);\n                }\n            };\n            video.onerror = function(e) {\n                statusMsg.textContent = '\u274c \u062e\u0637\u0627 \u062f\u0631 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0648\u06cc\u062f\u06cc\u0648';\n                console.warn('\u062e\u0637\u0627\u06cc \u0648\u06cc\u062f\u06cc\u0648:', video.error);\n            };\n            \/\/ \u0627\u06af\u0631 \u0648\u06cc\u062f\u06cc\u0648 \u0642\u0628\u0644\u0627\u064b \u0628\u0627\u0631 \u0634\u062f\u0647 \u0628\u0627\u0634\u062f\n            if (video.readyState >= 2) {\n                statusMsg.textContent = '\u2705 \u0622\u0645\u0627\u062f\u0647';\n            }\n        }\n\n        \/\/ --- \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u0648\u06cc\u062f\u06cc\u0648 ---\n        video.addEventListener('play', function() {\n            setPlayPauseIcon(true);\n            statusMsg.textContent = '\u25b6 \u062f\u0631 \u062d\u0627\u0644 \u067e\u062e\u0634';\n        });\n        video.addEventListener('pause', function() {\n            setPlayPauseIcon(false);\n            statusMsg.textContent = '\u23f8 \u0645\u06a9\u062b';\n        });\n        video.addEventListener('ended', function() {\n            setPlayPauseIcon(false);\n            statusMsg.textContent = '\u23f9 \u067e\u0627\u06cc\u0627\u0646';\n            progressFill.style.width = '100%';\n        });\n        video.addEventListener('timeupdate', updateProgress);\n        video.addEventListener('progress', updateProgress);\n        video.addEventListener('volumechange', function() {\n            setMuteIcon(video.muted);\n        });\n\n        \/\/ --- \u06a9\u0646\u062a\u0631\u0644\u200c\u0647\u0627 ---\n        \/\/ \u067e\u062e\u0634\/\u0645\u06a9\u062b\n        playPauseBtn.addEventListener('click', function() {\n            if (video.paused) {\n                video.play().catch(err => {\n                    statusMsg.textContent = '\u26a0\ufe0f \u062e\u0637\u0627 \u062f\u0631 \u067e\u062e\u0634';\n                    console.warn(err);\n                });\n            } else {\n                video.pause();\n            }\n        });\n\n        \/\/ \u0642\u0637\u0639\/\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0635\u062f\u0627\n        muteBtn.addEventListener('click', function() {\n            video.muted = !video.muted;\n        });\n\n        \/\/ \u0646\u0648\u0627\u0631 \u067e\u06cc\u0634\u0631\u0641\u062a (\u06a9\u0644\u06cc\u06a9 \u0648 \u062f\u0631\u06af)\n        progressBar.addEventListener('mousedown', function(e) {\n            isDragging = true;\n            const rect = progressBar.getBoundingClientRect();\n            const x = (e.clientX - rect.left) \/ rect.width;\n            const clamped = Math.min(1, Math.max(0, x));\n            if (video.duration > 0) {\n                video.currentTime = clamped * video.duration;\n                progressFill.style.width = (clamped * 100) + '%';\n            }\n        });\n\n        window.addEventListener('mousemove', function(e) {\n            if (isDragging) {\n                const rect = progressBar.getBoundingClientRect();\n                let x = (e.clientX - rect.left) \/ rect.width;\n                x = Math.min(1, Math.max(0, x));\n                if (video.duration > 0) {\n                    video.currentTime = x * video.duration;\n                    progressFill.style.width = (x * 100) + '%';\n                }\n            }\n        });\n\n        window.addEventListener('mouseup', function() {\n            if (isDragging) {\n                isDragging = false;\n                updateProgress();\n            }\n        });\n\n        \/\/ \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0628\u0627 \u062f\u06a9\u0645\u0647\n        loadBtn.addEventListener('click', function() {\n            const url = videoUrlInput.value.trim();\n            loadVideoFromUrl(url);\n        });\n\n        \/\/ \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0628\u0627 Enter \u062f\u0631 input\n        videoUrlInput.addEventListener('keypress', function(e) {\n            if (e.key === 'Enter') {\n                loadBtn.click();\n            }\n        });\n\n        \/\/ \u062f\u06a9\u0645\u0647 \u0633\u0631\u0639\u062a\n        speedBtn.addEventListener('click', function() {\n            speedIndex = (speedIndex + 1) % speedLevels.length;\n            video.playbackRate = speedLevels[speedIndex];\n            updateSpeedLabel();\n            statusMsg.textContent = `\u26a1 \u0633\u0631\u0639\u062a ${speedLevels[speedIndex]}\u00d7`;\n        });\n\n        \/\/ \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647\n        fullscreenBtn.addEventListener('click', function() {\n            if (!document.fullscreenElement) {\n                if (videoContainer.requestFullscreen) {\n                    videoContainer.requestFullscreen().catch(err => {\n                        \/\/ \u0627\u06af\u0631 \u062e\u0637\u0627 \u062f\u0627\u0634\u062a\u060c \u0633\u0639\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0644 \u0635\u0641\u062d\u0647 \u0631\u0627 \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u06a9\u0646\u06cc\u0645\n                        if (document.documentElement.requestFullscreen) {\n                            document.documentElement.requestFullscreen();\n                        }\n                    });\n                } else if (videoContainer.webkitRequestFullscreen) {\n                    videoContainer.webkitRequestFullscreen();\n                }\n            } else {\n                if (document.exitFullscreen) {\n                    document.exitFullscreen();\n                } else if (document.webkitExitFullscreen) {\n                    document.webkitExitFullscreen();\n                }\n            }\n        });\n\n        \/\/ --- \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0628\u0627 \u0644\u06cc\u0646\u06a9 \u062c\u062f\u06cc\u062f \u0634\u0645\u0627 ---\n        const yourLink = \"https:\/\/rx-videostreambot.koyeb.app\/15166?hash=AgAD9A\";\n        videoUrlInput.value = yourLink;\n        loadVideoFromUrl(yourLink);\n\n        \/\/ \u0647\u0645\u06af\u0627\u0645\u200c\u0633\u0627\u0632\u06cc \u0627\u0648\u0644\u06cc\u0647 \u0622\u06cc\u06a9\u0648\u0646 \u0635\u062f\u0627\n        setMuteIcon(video.muted);\n        updateSpeedLabel();\n\n        console.log('\ud83c\udfac \u067e\u0644\u06cc\u0631 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u0628\u0627 \u0644\u06cc\u0646\u06a9 \u062c\u062f\u06cc\u062f \u0634\u0645\u0627 \u0631\u0627\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u06cc \u0634\u062f.');\n    })();\n<\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>\u067e\u0644\u06cc\u0631 \u0648\u06cc\u062f\u06cc\u0648\u06cc \u0627\u062e\u062a\u0635\u0627\u0635\u06cc \u06f0:\u06f0\u06f0 \/ \u06f0:\u06f0\u06f0 \u06f1\u00d7 \u25b6 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0622\u0645\u0627\u062f\u0647<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/videop.kioping.ir\/index.php?rest_route=\/wp\/v2\/pages\/134"}],"collection":[{"href":"https:\/\/videop.kioping.ir\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/videop.kioping.ir\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/videop.kioping.ir\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/videop.kioping.ir\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=134"}],"version-history":[{"count":1,"href":"https:\/\/videop.kioping.ir\/index.php?rest_route=\/wp\/v2\/pages\/134\/revisions"}],"predecessor-version":[{"id":135,"href":"https:\/\/videop.kioping.ir\/index.php?rest_route=\/wp\/v2\/pages\/134\/revisions\/135"}],"wp:attachment":[{"href":"https:\/\/videop.kioping.ir\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}