/
marazmdev
/
imdbplay
Обзор
Документация
Войти
/
marazmdev
/
imdbplay
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
master
embed.html
240 строк
8 KB
TwixoffStudio
Create: kinobox.css, kinoplayer.css, kinoplayer.js, LICENSE, README.md, titlename.js, vercel.json, faq.md, integration.md, privacy.md, terms.md, .gitignore, _redirects, ad.js, app.js, embed.html, index.html
01 июл 2026, 06:12
Верифицирован
01 июл 2026, 06:12
26692cf
Код
Авторство
О чём код?
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Kinoplayer.top Player</title> <style> *{margin:0;padding:0;box-sizing:border-box} html,body{width:100%;height:100%;background:#000;overflow:hidden} #embedBox{ width:100%;height:100vh; display:flex;align-items:center;justify-content:center; } .loader{color:#6a78a3;font-family:sans-serif;font-size:14px;text-align:center} .err{color:#fca5a5;font-family:sans-serif;font-size:13px;text-align:center;padding:20px} /* kinobox frame override — занять весь экран */ .kinobox__wrapper{border-radius:0!important} iframe{border:none!important} /* COOKIE BANNER - Glass Style */ .cookie-banner{ position:fixed;bottom:16px;left:50%;transform:translateX(-50%); width:calc(100% - 32px);max-width:520px; background:rgba(10,30,20,0.85);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px); border-radius:20px;padding:18px 20px; border:1px solid rgba(16,185,129,0.2);box-shadow:0 8px 32px rgba(0,0,0,0.4),0 10px 40px rgba(0,0,0,0.5); z-index:9999;display:none;animation:slideUp .3s ease; } .cookie-banner.show{display:block} @keyframes slideUp{from{opacity:0;transform:translate(-50%,30px)}to{opacity:1;transform:translate(-50%,0)}} .cookie-content{display:flex;align-items:flex-start;gap:14px;margin-bottom:14px} .cookie-icon{font-size:2rem;flex-shrink:0} .cookie-text h4{font-size:.95rem;font-weight:600;color:#fff;margin-bottom:6px} .cookie-text p{font-size:.78rem;color:rgba(255,255,255,0.85);line-height:1.5;margin:0} .cookie-text a{color:#34d399;text-decoration:none} .cookie-buttons{display:flex;gap:10px;justify-content:flex-end} .cookie-btn{ padding:9px 20px;border-radius:50px;font-size:.8rem;font-weight:600; font-family:'Montserrat',sans-serif;cursor:pointer;transition:.25s;border:1px solid rgba(255,255,255,0.15); } .cookie-btn-primary{ background:linear-gradient(135deg,#10b981,#34d399);color:#fff; box-shadow:0 4px 15px rgba(16,185,129,0.5); } .cookie-btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(16,185,129,0.5);} .cookie-btn-secondary{ background:rgba(255,255,255,0.08);color:rgba(255,255,255,0.85); backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px); } .cookie-btn-secondary:hover{background:rgba(255,255,255,0.15);color:#fff;} @media(max-width:680px){ .cookie-banner{width:calc(100% - 20px);bottom:10px;padding:14px 16px} .cookie-content{gap:10px} .cookie-icon{font-size:1.7rem} .cookie-text h4{font-size:.85rem} .cookie-text p{font-size:.72rem} .cookie-buttons{flex-wrap:wrap} .cookie-btn{padding:7px 16px;font-size:.75rem} } </style> </head> <body> <div id="embedBox"> <div class="loader">⏳ Загрузка плеера...</div> </div> <!-- COOKIE BANNER --> <div id="cookieBanner" class="cookie-banner"> <div class="cookie-content"> <div class="cookie-icon">🍪</div> <div class="cookie-text"> <h4>Мы используем cookie</h4> <p>Для улучшения работы сайта мы используем файлы cookie. Продолжая использовать сайт, вы соглашаетесь с нашей политикой конфиденциальности.</p> </div> </div> <div class="cookie-buttons"> <button id="cookieAccept" class="cookie-btn cookie-btn-primary">Принять</button> <button id="cookieDecline" class="cookie-btn cookie-btn-secondary">Отклонить</button> </div> </div> <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script> <script> (function(){ var proxies = [ "https://secure-272717.vercel.app", "https://secure-272717.tatnet.app", "https://secure-ridge-22999-537c838d4a8a.herokuapp.com", "https://proxy-video.vercel.app", window.location.origin ]; function normalize(base){ return base.replace(/\/$/, "") + "/kinoplayer.js"; } function loadScript(url, onOk, onErr){ var s = document.createElement("script"); s.src = url; s.async = true; s.onload = onOk; s.onerror = onErr; document.head.appendChild(s); } function loadFrom(i){ if(i >= proxies.length){ console.error("[KinoBox] Не удалось загрузить kinobox.js ни с одного прокси."); return; } var src = normalize(proxies[i]); loadScript(src, function(){ console.info("[Kinoplayer.top] загружен:", src); }, function(){ loadFrom(i + 1); }); } loadFrom(0); })(); </script> <script> (function(){ /* Читаем ID из хэша: /embed/#301 или /embed/#films/301 */ function getKpId(){ var h = window.location.hash.replace(/^#\/?/,''); var m = h.match(/^(?:films\/|serials\/)?(\d+)/i); return m ? parseInt(m[1],10) : null; } var kpId = getKpId(); if(!kpId){ document.getElementById('embedBox').innerHTML = '<div class="err">⚠️ Не указан ID.<br>Формат: <code>/embed/#KINOPOISK_ID</code></div>'; return; } function showInitTimeoutError(){ var box = document.getElementById('embedBox'); box.innerHTML = '<div class="err">⚠️ Плеер долго отвечает. Это не всегда проблема интернета.<br>'+ 'Отключите блокировщик рекламы и попробуйте ещё раз.<br><br>'+ '<button id="retryEmbedBtn" style="background:#3b5bdb;color:#fff;border:0;border-radius:8px;padding:8px 14px;cursor:pointer">Повторить</button></div>'; var retryBtn = document.getElementById('retryEmbedBtn'); if(retryBtn){ retryBtn.addEventListener('click', function(){ box.innerHTML = '<div class="loader">⏳ Повторная загрузка плеера...</div>'; setTimeout(function(){tryInit(Date.now());},100); }, {once:true}); } } function tryInit(startTs){ if(typeof window.kinobox === 'function'){ var box = document.getElementById('embedBox'); box.innerHTML = ''; box.id = 'kbPlayer'; try{ window.kinobox('#kbPlayer', {search:{kinopoisk: kpId}}); }catch(e){ box.innerHTML = '<div class="err">⚠️ Ошибка плеера: '+e.message+'</div>'; } return; } var elapsed = Date.now() - startTs; if(elapsed < 30000){ setTimeout(function(){tryInit(startTs);}, 250); } else { showInitTimeoutError(); } } tryInit(Date.now()); /* Обновляем при смене хэша */ window.addEventListener('hashchange', function(){ window.location.reload(); }); // Cookie Banner Logic for embed.html function setCookie(name, value, days){ var expires = ""; if(days){ var date = new Date(); date.setTime(date.getTime() + (days*24*60*60*1000)); expires = "; expires=" + date.toUTCString(); } document.cookie = name + "=" + (value || "") + expires + "; path=/; SameSite=Lax"; } function getCookie(name){ var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++){ var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if(c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } function showCookieBanner(){ var consent = getCookie('kp_cookie_consent'); if(!consent){ setTimeout(function(){ var banner = document.getElementById('cookieBanner'); if(banner) banner.classList.add('show'); }, 1500); } } function acceptCookies(){ setCookie('kp_cookie_consent', 'accepted', 365); hideCookieBanner(); } function declineCookies(){ setCookie('kp_cookie_consent', 'declined', 365); hideCookieBanner(); } function hideCookieBanner(){ var banner = document.getElementById('cookieBanner'); if(banner){ banner.classList.remove('show'); setTimeout(function(){ banner.style.display = 'none'; }, 300); } } document.addEventListener('DOMContentLoaded', function(){ showCookieBanner(); var acceptBtn = document.getElementById('cookieAccept'); var declineBtn = document.getElementById('cookieDecline'); if(acceptBtn) acceptBtn.addEventListener('click', acceptCookies); if(declineBtn) declineBtn.addEventListener('click', declineCookies); }); })(); </script> </body> </html>