{"id":451,"date":"2025-04-19T18:44:04","date_gmt":"2025-04-19T15:44:04","guid":{"rendered":"http:\/\/bantv.ru\/?page_id=451"},"modified":"2025-04-20T17:53:56","modified_gmt":"2025-04-20T14:53:56","slug":"%d1%81%d0%ba%d0%b0%d1%87%d0%b0%d1%82%d1%8c-%d1%81%d1%86%d0%b5%d0%bd%d0%b0%d1%80%d0%b8%d0%b9","status":"publish","type":"page","link":"https:\/\/bantv.ru\/?page_id=451","title":{"rendered":"\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c"},"content":{"rendered":"\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"http:\/\/bantv.ru\/wp-content\/uploads\/2025\/04\/\u041f\u043e\u0434-\u043f\u0440\u0438\u043a\u0440\u044b\u0442\u0438\u0435\u043c-\u0441-\u043a\u043d\u0446.pdf\" type=\"application\/pdf\" style=\"width:100%;height:900px\" aria-label=\"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u041f\u043e\u0434 \u043f\u0440\u0438\u043a\u0440\u044b\u0442\u0438\u0435\u043c \u0441 \u043a\u043d\u0446\"><\/object><a id=\"wp-block-file--media-df00383b-4255-435d-9b90-ed13a9e374da\" href=\"http:\/\/bantv.ru\/wp-content\/uploads\/2025\/04\/\u041f\u043e\u0434-\u043f\u0440\u0438\u043a\u0440\u044b\u0442\u0438\u0435\u043c-\u0441-\u043a\u043d\u0446.pdf\">\u041f\u043e\u0434 \u043f\u0440\u0438\u043a\u0440\u044b\u0442\u0438\u0435\u043c \u0441 \u043a\u043d\u0446<\/a><a href=\"http:\/\/bantv.ru\/wp-content\/uploads\/2025\/04\/\u041f\u043e\u0434-\u043f\u0440\u0438\u043a\u0440\u044b\u0442\u0438\u0435\u043c-\u0441-\u043a\u043d\u0446.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-df00383b-4255-435d-9b90-ed13a9e374da\">\u0421\u043a\u0430\u0447\u0430\u0442\u044c<\/a><\/div>\n\n\n\n<div style=\"height:874px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"http:\/\/bantv.ru\/wp-content\/uploads\/2025\/04\/\u0420\u0430\u0434\u0438\u0439-325-2.pdf\" type=\"application\/pdf\" style=\"width:100%;height:680px\" aria-label=\"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0420\u0430\u0434\u0438\u0439-325 (2)\"><\/object><a id=\"wp-block-file--media-7995cd72-6cdc-4b94-af34-7139357c60b8\" href=\"http:\/\/bantv.ru\/wp-content\/uploads\/2025\/04\/\u0420\u0430\u0434\u0438\u0439-325-2.pdf\">\u0420\u0430\u0434\u0438\u0439-325 (2)<\/a><a href=\"http:\/\/bantv.ru\/wp-content\/uploads\/2025\/04\/\u0420\u0430\u0434\u0438\u0439-325-2.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-7995cd72-6cdc-4b94-af34-7139357c60b8\">\u0421\u043a\u0430\u0447\u0430\u0442\u044c<\/a><\/div>\n\n\n\n<div style=\"height:802px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"http:\/\/bantv.ru\/wp-content\/uploads\/2025\/04\/\u0420\u0430\u0434\u0438\u0439-325-\u043d\u043e\u0432\u0430\u044f-\u0432\u0435\u0440\u0441\u0438\u044f.pdf\" type=\"application\/pdf\" style=\"width:100%;height:800px\" aria-label=\"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0420\u0430\u0434\u0438\u0439-325 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f\"><\/object><a id=\"wp-block-file--media-1d92d6be-0cc8-4000-9353-569e5e04a6cb\" href=\"http:\/\/bantv.ru\/wp-content\/uploads\/2025\/04\/\u0420\u0430\u0434\u0438\u0439-325-\u043d\u043e\u0432\u0430\u044f-\u0432\u0435\u0440\u0441\u0438\u044f.pdf\">\u0420\u0430\u0434\u0438\u0439-325 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f<\/a><a href=\"http:\/\/bantv.ru\/wp-content\/uploads\/2025\/04\/\u0420\u0430\u0434\u0438\u0439-325-\u043d\u043e\u0432\u0430\u044f-\u0432\u0435\u0440\u0441\u0438\u044f.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-1d92d6be-0cc8-4000-9353-569e5e04a6cb\">\u0421\u043a\u0430\u0447\u0430\u0442\u044c<\/a><\/div>\n\n\n\n<div style=\"height:1029px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<!DOCTYPE html>\n<html lang=\"ru\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>BanTV \u23f1 \u0425\u0440\u043e\u043d\u043e\u043c\u0435\u0442\u0440 \u0441\u0446\u0435\u043d\u044b \u0438 \u0441\u0446\u0435\u043d\u0430\u0440\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430<\/title>\n  <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;600;700&#038;display=swap\" rel=\"stylesheet\">\n  <style>\n    body {\n      background: linear-gradient(135deg, #fdfbfb 0%, #ebedee 100%);\n      color: #1f2937;\n      font-family: 'Inter', sans-serif;\n    }\n    textarea, input[type=\"file\"] {\n      background-color: #f9fafb;\n      color: #111827;\n      border: 1px solid #d1d5db;\n      border-radius: 8px;\n    }\n    textarea:focus, input[type=\"file\"]:focus {\n      outline: none;\n      border-color: #6366f1;\n      box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.3);\n    }\n    button {\n      transition: all 0.2s;\n    }\n    .score {\n      font-weight: bold;\n      padding: 2px 6px;\n      border-radius: 4px;\n      display: inline-block;\n    }\n    .score-low {\n      background-color: #f87171;\n      color: white;\n    }\n    .score-medium {\n      background-color: #fbbf24;\n      color: black;\n    }\n    .score-high {\n      background-color: #34d399;\n      color: white;\n    }\n    .emotion-bar {\n      height: 10px;\n      border-radius: 5px;\n      margin-top: 4px;\n    }\n    .emotion-tension { background-color: #ef4444; }\n    .emotion-joy { background-color: #34d399; }\n    .emotion-fear { background-color: #6b7280; }\n    .emotion-anger { background-color: #f97316; }\n  <\/style>\n<\/head>\n<body class=\"min-h-screen flex flex-col items-center justify-center p-6\">\n  <div class=\"w-full max-w-5xl grid md:grid-cols-2 gap-6\">\n    <div class=\"bg-white shadow-xl rounded-lg p-6\">\n      <h1 class=\"text-2xl font-bold text-indigo-600 mb-4 text-center\">\ud83c\udfac \u0425\u0440\u043e\u043d\u043e\u043c\u0435\u0442\u0440 \u0441\u0446\u0435\u043d\u044b<\/h1>\n      <label class=\"block text-gray-700 text-sm font-medium mb-2\">\u0412\u0441\u0442\u0430\u0432\u044c \u0442\u0435\u043a\u0441\u0442 \u0441\u0446\u0435\u043d\u044b \u0438\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438 PDF:<\/label>\n      <textarea id=\"scriptInput\" rows=\"10\" class=\"w-full p-3 text-base mb-4\"><\/textarea>\n      <input type=\"file\" id=\"pdfInput\" accept=\"application\/pdf\" class=\"w-full mb-4\" \/>\n      <div id=\"sceneEvaluations\" class=\"text-sm text-gray-600 mb-4\"><\/div>\n      <button onclick=\"calculateDuration()\" class=\"w-full bg-indigo-600 hover:bg-indigo-700 text-white font-semibold py-3 rounded-lg\">\u041f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c<\/button>\n      <p id=\"result\" class=\"mt-4 text-lg text-center font-semibold text-indigo-700\"><\/p>\n    <\/div>\n\n    <div class=\"bg-white shadow-xl rounded-lg p-6\">\n      <h2 class=\"text-2xl font-bold text-indigo-600 mb-4 text-center\">\ud83d\udcdd \u041f\u0440\u043e\u0444.\u043e\u0446\u0435\u043d\u043a\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f<\/h2>\n      <div id=\"analysisReport\" class=\"text-sm text-gray-700 space-y-2\">\n        <p><strong>1. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430:<\/strong> <span id=\"structureScore\">&#8212;<\/span> <span id=\"structureComment\">&#8212;<\/span><\/p>\n        <p><strong>2. \u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442:<\/strong> <span id=\"conflictScore\">&#8212;<\/span> <span id=\"conflictComment\">&#8212;<\/span><\/p>\n        <p><strong>3. \u041f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0438:<\/strong> <span id=\"charactersScore\">&#8212;<\/span> <span id=\"charactersComment\">&#8212;<\/span><\/p>\n        <p><strong>4. \u0414\u0438\u0430\u043b\u043e\u0433\u0438:<\/strong> <span id=\"dialogsScore\">&#8212;<\/span> <span id=\"dialogsComment\">&#8212;<\/span><\/p>\n        <p><strong>5. \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c:<\/strong> <span id=\"visualScore\">&#8212;<\/span> <span id=\"visualComment\">&#8212;<\/span><\/p>\n        <p><strong>6. \u0420\u0438\u0442\u043c:<\/strong> <span id=\"rhythmScore\">&#8212;<\/span> <span id=\"rhythmComment\">&#8212;<\/span><\/p>\n        <p><strong>7. \u042d\u043c\u043e\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435:<\/strong> <span id=\"emotionScore\">&#8212;<\/span> <span id=\"emotionComment\">&#8212;<\/span><\/p>\n        <div id=\"emotionDistribution\" class=\"space-y-1\">\n          <p>\u041d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435: <span id=\"tensionPercent\">&#8212;<\/span>% <div id=\"tensionBar\" class=\"emotion-bar emotion-tension\"><\/div><\/p>\n          <p>\u0420\u0430\u0434\u043e\u0441\u0442\u044c: <span id=\"joyPercent\">&#8212;<\/span>% <div id=\"joyBar\" class=\"emotion-bar emotion-joy\"><\/div><\/p>\n          <p>\u0421\u0442\u0440\u0430\u0445: <span id=\"fearPercent\">&#8212;<\/span>% <div id=\"fearBar\" class=\"emotion-bar emotion-fear\"><\/div><\/p>\n          <p>\u0413\u043d\u0435\u0432: <span id=\"angerPercent\">&#8212;<\/span>% <div id=\"angerBar\" class=\"emotion-bar emotion-anger\"><\/div><\/p>\n        <\/div>\n        <p><strong>8. \u041e\u0431\u044a\u0451\u043c \u0442\u0435\u043a\u0441\u0442\u0430:<\/strong> <span id=\"wordCount\">&#8212;<\/span> \u0441\u043b\u043e\u0432<\/p>\n        <p><strong>9. \u041f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432:<\/strong> <span id=\"dialogPercent\">&#8212;<\/span>%<\/p>\n        <p><strong>\u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430:<\/strong> <span id=\"finalScore\">&#8212;<\/span>\/10<\/p>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdf.js\/3.4.120\/pdf.min.js\"><\/script>\n  <script>\n    let analysisData = {\n      structure: { score: 0, comment: '-' },\n      conflict: { score: 0, comment: '-' },\n      characters: { score: 0, comment: '-' },\n      dialogs: { score: 0, comment: '-' },\n      visual: { score: 0, comment: '-' },\n      rhythm: { score: 0, comment: '-' },\n      emotions: { score: 0, comment: '-', distribution: { tension: 0, joy: 0, fear: 0, anger: 0 } },\n      wordCount: 0,\n      dialogPercent: 0,\n      finalScore: 0\n    };\n\n    function getScoreClass(score) {\n      if (score <= 4) return 'score-low';\n      if (score <= 7) return 'score-medium';\n      return 'score-high';\n    }\n\n    function resetAnalysisUI() {\n      console.log(\"\u0421\u0431\u0440\u043e\u0441 UI...\");\n      document.getElementById(\"structureScore\").innerHTML = \"-\";\n      document.getElementById(\"structureComment\").innerText = \"-\";\n      document.getElementById(\"conflictScore\").innerHTML = \"-\";\n      document.getElementById(\"conflictComment\").innerText = \"-\";\n      document.getElementById(\"charactersScore\").innerHTML = \"-\";\n      document.getElementById(\"charactersComment\").innerText = \"-\";\n      document.getElementById(\"dialogsScore\").innerHTML = \"-\";\n      document.getElementById(\"dialogsComment\").innerText = \"-\";\n      document.getElementById(\"visualScore\").innerHTML = \"-\";\n      document.getElementById(\"visualComment\").innerText = \"-\";\n      document.getElementById(\"rhythmScore\").innerHTML = \"-\";\n      document.getElementById(\"rhythmComment\").innerText = \"-\";\n      document.getElementById(\"emotionScore\").innerHTML = \"-\";\n      document.getElementById(\"emotionComment\").innerText = \"-\";\n      document.getElementById(\"tensionPercent\").innerText = \"-\";\n      document.getElementById(\"joyPercent\").innerText = \"-\";\n      document.getElementById(\"fearPercent\").innerText = \"-\";\n      document.getElementById(\"angerPercent\").innerText = \"-\";\n      document.getElementById(\"tensionBar\").style.width = \"0%\";\n      document.getElementById(\"joyBar\").style.width = \"0%\";\n      document.getElementById(\"fearBar\").style.width = \"0%\";\n      document.getElementById(\"angerBar\").style.width = \"0%\";\n      document.getElementById(\"wordCount\").innerText = \"-\";\n      document.getElementById(\"dialogPercent\").innerText = \"-\";\n      document.getElementById(\"finalScore\").innerHTML = \"-\";\n      document.getElementById(\"sceneEvaluations\").innerHTML = \"\";\n      document.getElementById(\"result\").innerText = \"\";\n    }\n\n    function updateAnalysisUI() {\n      console.log(\"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 UI \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438:\", analysisData);\n      document.getElementById(\"wordCount\").innerText = analysisData.wordCount || 0;\n      document.getElementById(\"dialogPercent\").innerText = analysisData.dialogPercent || 0;\n      document.getElementById(\"structureScore\").innerHTML = `<span class=\"${getScoreClass(analysisData.structure.score)}\">${analysisData.structure.score}<\/span>\/10`;\n      document.getElementById(\"structureComment\").innerText = analysisData.structure.comment || '-';\n      document.getElementById(\"conflictScore\").innerHTML = `<span class=\"${getScoreClass(analysisData.conflict.score)}\">${analysisData.conflict.score}<\/span>\/10`;\n      document.getElementById(\"conflictComment\").innerText = analysisData.conflict.comment || '-';\n      document.getElementById(\"charactersScore\").innerHTML = `<span class=\"${getScoreClass(analysisData.characters.score)}\">${analysisData.characters.score}<\/span>\/10`;\n      document.getElementById(\"charactersComment\").innerText = analysisData.characters.comment || '-';\n      document.getElementById(\"dialogsScore\").innerHTML = `<span class=\"${getScoreClass(analysisData.dialogs.score)}\">${analysisData.dialogs.score}<\/span>\/10`;\n      document.getElementById(\"dialogsComment\").innerText = analysisData.dialogs.comment || '-';\n      document.getElementById(\"visualScore\").innerHTML = `<span class=\"${getScoreClass(analysisData.visual.score)}\">${analysisData.visual.score}<\/span>\/10`;\n      document.getElementById(\"visualComment\").innerText = analysisData.visual.comment || '-';\n      document.getElementById(\"rhythmScore\").innerHTML = `<span class=\"${getScoreClass(analysisData.rhythm.score)}\">${analysisData.rhythm.score}<\/span>\/10`;\n      document.getElementById(\"rhythmComment\").innerText = analysisData.rhythm.comment || '-';\n      document.getElementById(\"emotionScore\").innerHTML = `<span class=\"${getScoreClass(analysisData.emotions.score)}\">${analysisData.emotions.score}<\/span>\/10`;\n      document.getElementById(\"emotionComment\").innerText = analysisData.emotions.comment || '-';\n      document.getElementById(\"tensionPercent\").innerText = analysisData.emotions.distribution.tension || 0;\n      document.getElementById(\"joyPercent\").innerText = analysisData.emotions.distribution.joy || 0;\n      document.getElementById(\"fearPercent\").innerText = analysisData.emotions.distribution.fear || 0;\n      document.getElementById(\"angerPercent\").innerText = analysisData.emotions.distribution.anger || 0;\n      document.getElementById(\"tensionBar\").style.width = `${analysisData.emotions.distribution.tension || 0}%`;\n      document.getElementById(\"joyBar\").style.width = `${analysisData.emotions.distribution.joy || 0}%`;\n      document.getElementById(\"fearBar\").style.width = `${analysisData.emotions.distribution.fear || 0}%`;\n      document.getElementById(\"angerBar\").style.width = `${analysisData.emotions.distribution.anger || 0}%`;\n      document.getElementById(\"finalScore\").innerHTML = `<span class=\"${getScoreClass(analysisData.finalScore)}\">${analysisData.finalScore}<\/span>`;\n    }\n\n    function cleanText(text) {\n      if (!text) return '';\n      console.log(\"\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442:\", text);\n      const cleaned = text\n        .replace(\/\\s+\/g, ' ') \/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043e\u0434\u0438\u043d\u043e\u0447\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u044b\n        .replace(\/\\n+\/g, '\\n')\n        .trim();\n      console.log(\"\u041e\u0447\u0438\u0449\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442:\", cleaned);\n      return cleaned;\n    }\n\n    function calculateDuration() {\n      console.log(\"\u0417\u0430\u043f\u0443\u0441\u043a calculateDuration...\");\n      let text = document.getElementById(\"scriptInput\").value;\n      if (!text || !text.trim()) {\n        console.error(\"\u0422\u0435\u043a\u0441\u0442 \u043f\u0443\u0441\u0442\u043e\u0439!\");\n        alert(\"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0442\u0435\u043a\u0441\u0442 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u0438\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 PDF!\");\n        return;\n      }\n\n      text = cleanText(text);\n      if (!text) {\n        console.error(\"\u041f\u043e\u0441\u043b\u0435 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u0442\u0435\u043a\u0441\u0442 \u043f\u0443\u0441\u0442\u043e\u0439!\");\n        return;\n      }\n\n      resetAnalysisUI();\n\n      const scenes = text.split(\/\\n{2,}\/);\n      console.log(\"\u0420\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u044b:\", scenes);\n      let totalSeconds = 0;\n      let evaluations = '';\n      let totalWords = 0;\n      let dialogueLines = 0;\n      let totalLines = 0;\n      const sceneCount = scenes.length;\n\n      scenes.forEach((scene, index) => {\n        const lines = scene.split('\\n').filter(line => line.trim().length > 0);\n        console.log(`\u0421\u0446\u0435\u043d\u0430 ${index + 1}, \u0441\u0442\u0440\u043e\u043a\u0438:`, lines);\n        let dialogWords = 0;\n        let descriptionWords = 0;\n        let actionCount = 0;\n\n        const actionKeywords = ['\u0431\u0435\u0436\u0438\u0442', '\u0441\u0442\u0440\u0435\u043b\u044f\u0435\u0442', '\u043f\u0440\u044b\u0433\u0430\u0435\u0442', '\u0431\u044c[\u0430-\u044f]+', '\u0432\u0437\u0440\u044b\u0432', '\u043a\u0440\u0438\u0447\u0438\u0442', '\u043f\u0430\u0434\u0430\u0435\u0442', '\u0433\u043e\u043d\u0438\u0442', '\u0434\u0435\u0440[\u0430-\u044f]+'];\n\n        lines.forEach(line => {\n          const words = line.trim().split(\/\\s+\/).filter(Boolean).length;\n          const isDialog = line.trim() === line.trim().toUpperCase() && line.length < 30 &#038;&#038; !line.match(\/\u0421\u0426\u0415\u041d\u0410\\s+\\d+:\/i);\n          const isDescription = !line.match(\/\u0421\u0426\u0415\u041d\u0410\\s+\\d+:\/i) &#038;&#038; !isDialog;\n\n          if (isDialog) {\n            dialogWords += words;\n            dialogueLines++;\n          } else if (isDescription) {\n            descriptionWords += words;\n            if (actionKeywords.some(keyword => new RegExp(keyword, 'i').test(line.toLowerCase()))) {\n              actionCount++;\n            }\n          }\n          totalLines++;\n        });\n\n        totalWords += dialogWords + descriptionWords;\n        const seconds = (dialogWords * 0.5) + (descriptionWords * 0.8) + (actionCount * 3);\n        totalSeconds += seconds;\n        const mins = Math.floor(seconds \/ 60);\n        const secs = Math.round(seconds % 60);\n        evaluations += `<p>\u0421\u0446\u0435\u043d\u0430 ${index + 1}: ${mins} \u043c\u0438\u043d ${secs} \u0441\u0435\u043a<\/p>`;\n        console.log(`\u0421\u0446\u0435\u043d\u0430 ${index + 1}: ${mins} \u043c\u0438\u043d ${secs} \u0441\u0435\u043a, \u0441\u043b\u043e\u0432 \u0432 \u0434\u0438\u0430\u043b\u043e\u0433\u0430\u0445: ${dialogWords}, \u0441\u043b\u043e\u0432 \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f\u0445: ${descriptionWords}, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439: ${actionCount}`);\n      });\n\n      const totalMinutes = Math.floor(totalSeconds \/ 60);\n      const totalRemainder = Math.round(totalSeconds % 60);\n      const dialogPercent = totalLines > 0 ? Math.round((dialogueLines \/ totalLines) * 100) : 0;\n\n      console.log(\"\u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438:\", { totalMinutes, totalRemainder, dialogPercent, totalWords, sceneCount });\n\n      document.getElementById(\"sceneEvaluations\").innerHTML = evaluations;\n      document.getElementById(\"result\").innerText = `\u23f1 \u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c: ${totalMinutes} \u043c\u0438\u043d ${totalRemainder} \u0441\u0435\u043a`;\n\n      analyzeScript(text, totalWords, dialogPercent, sceneCount);\n      updateAnalysisUI();\n    }\n\n    function analyzeScript(text, totalWords, dialogPercent, sceneCount) {\n      console.log(\"\u0417\u0430\u043f\u0443\u0441\u043a analyzeScript...\", { text, totalWords, dialogPercent, sceneCount });\n      const lines = text.split('\\n').filter(line => line.trim().length > 0);\n      console.log(\"\u041b\u0438\u043d\u0438\u0438 \u0442\u0435\u043a\u0441\u0442\u0430:\", lines);\n\n      const sceneHeadings = lines.filter(line => line.match(\/\u0421\u0426\u0415\u041d\u0410\\s+\\d+:\/i));\n      console.log(\"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0441\u0446\u0435\u043d:\", sceneHeadings);\n\n      const characterLines = lines.filter(line => line.trim() === line.trim().toUpperCase() && line.length < 30 &#038;&#038; !line.match(\/\u0421\u0426\u0415\u041d\u0410\\s+\\d+:\/i));\n      const uniqueCharacters = [...new Set(characterLines.map(line => line.trim()))];\n      console.log(\"\u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0438:\", uniqueCharacters);\n\n      const descriptionLines = lines.filter(line => !line.match(\/\u0421\u0426\u0415\u041d\u0410\\s+\\d+:\/i) && line.trim() !== line.trim().toUpperCase());\n      console.log(\"\u041e\u043f\u0438\u0441\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043b\u0438\u043d\u0438\u0438:\", descriptionLines);\n\n      \/\/ 1. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\n      const hasIntro = sceneHeadings.length > 0;\n      const hasClimax = descriptionLines.some(line => line.toLowerCase().includes('\u043a\u0443\u043b\u044c\u043c\u0438\u043d\u0430\u0446\u0438\u044f') || line.toLowerCase().includes('\u0440\u0430\u0437\u0432\u044f\u0437\u043a\u0430'));\n      const hasConclusion = lines.slice(-5).some(line => line.toLowerCase().includes('\u043a\u043e\u043d\u0435\u0446') || line.toLowerCase().includes('\u0444\u0438\u043d\u0430\u043b'));\n      const structureScore = (hasIntro ? 3 : 0) + (sceneHeadings.length > 2 ? 3 : 0) + (hasClimax ? 2 : 0) + (hasConclusion ? 2 : 0);\n      const structureComment = structureScore >= 8 ? \"\u0425\u043e\u0440\u043e\u0448\u043e \u0432\u044b\u0441\u0442\u0440\u043e\u0435\u043d\u0430: \u0435\u0441\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u043e, \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0438 \u0444\u0438\u043d\u0430\u043b.\" : structureScore >= 5 ? \"\u041d\u0435\u043f\u043b\u043e\u0445\u043e, \u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u0443\u0441\u0438\u043b\u0438\u0442\u044c \u043a\u0443\u043b\u044c\u043c\u0438\u043d\u0430\u0446\u0438\u044e \u0438\u043b\u0438 \u0444\u0438\u043d\u0430\u043b.\" : \"\u0421\u043b\u0430\u0431\u043e: \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b.\";\n      analysisData.structure = { score: structureScore, comment: structureComment };\n      console.log(\"\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430:\", analysisData.structure);\n\n      \/\/ 2. \u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\n      const conflictKeywords = ['\u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435', '\u0431\u043e\u0440\u044c\u0431\u0430', '\u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442', '\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c', '\u0432\u0440\u0430\u0433', '\u043f\u0440\u0435\u0434\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e'];\n      const hasConflict = descriptionLines.some(line => conflictKeywords.some(keyword => line.toLowerCase().includes(keyword)));\n      const conflictScore = hasConflict ? (sceneCount > 2 ? 8 : 6) : 4;\n      const conflictComment = conflictScore >= 8 ? \"\u041e\u0442\u043b\u0438\u0447\u043d\u043e: \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u044f\u0441\u0435\u043d \u0438 \u0443\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435.\" : conflictScore >= 6 ? \"\u0415\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0438.\" : \"\u0421\u043b\u0430\u0431\u043e: \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442 \u043d\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d.\";\n      analysisData.conflict = { score: conflictScore, comment: conflictComment };\n      console.log(\"\u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442:\", analysisData.conflict);\n\n      \/\/ 3. \u041f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0438\n      const characterScore = uniqueCharacters.length >= 3 ? 8 : uniqueCharacters.length >= 1 ? 5 : 3;\n      const characterComment = characterScore >= 8 ? \"\u0425\u043e\u0440\u043e\u0448\u043e: \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439 \u0441 \u044f\u0441\u043d\u043e\u0439 \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u0435\u0439.\" : characterScore >= 5 ? \"\u041f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0438 \u0435\u0441\u0442\u044c, \u043d\u043e \u0438\u0445 \u043c\u0430\u043b\u043e \u0438\u043b\u0438 \u043d\u0435 \u0440\u0430\u0441\u043a\u0440\u044b\u0442\u044b.\" : \"\u0421\u043b\u0430\u0431\u043e: \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442 \u0438\u043b\u0438 \u043d\u0435 \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u044b.\";\n      analysisData.characters = { score: characterScore, comment: characterComment };\n      console.log(\"\u041f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0438:\", analysisData.characters);\n\n      \/\/ 4. \u0414\u0438\u0430\u043b\u043e\u0433\u0438\n      const dialogScore = dialogPercent >= 40 ? 8 : dialogPercent >= 20 ? 6 : 4;\n      const dialogComment = dialogScore >= 8 ? \"\u041e\u0442\u043b\u0438\u0447\u043d\u043e: \u0434\u0438\u0430\u043b\u043e\u0433\u0438 \u0436\u0438\u0432\u044b\u0435 \u0438 \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u044b.\" : dialogScore >= 6 ? \"\u041d\u0435\u043f\u043b\u043e\u0445\u043e, \u043d\u043e \u0434\u0438\u0430\u043b\u043e\u0433\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438.\" : \"\u0421\u043b\u0430\u0431\u043e: \u0434\u0438\u0430\u043b\u043e\u0433\u043e\u0432 \u043c\u0430\u043b\u043e \u0438\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435\u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435.\";\n      analysisData.dialogs = { score: dialogScore, comment: dialogComment };\n      console.log(\"\u0414\u0438\u0430\u043b\u043e\u0433\u0438:\", analysisData.dialogs);\n\n      \/\/ 5. \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\n      const visualKeywords = ['\u043a\u0430\u043c\u0435\u0440\u0430', '\u0441\u0432\u0435\u0442', '\u0434\u0435\u043a\u043e\u0440\u0430\u0446\u0438\u0438', '\u043a\u043e\u0441\u0442\u044e\u043c\u044b', '\u043f\u043e\u0433\u043e\u043d\u044f', '\u0432\u0437\u0440\u044b\u0432', '\u043f\u0435\u0439\u0437\u0430\u0436'];\n      const hasVisual = descriptionLines.some(line => visualKeywords.some(keyword => line.toLowerCase().includes(keyword)));\n      const visualScore = hasVisual ? 8 : 5;\n      const visualComment = visualScore >= 8 ? \"\u0425\u043e\u0440\u043e\u0448\u043e: \u0441\u0446\u0435\u043d\u044b \u043b\u0435\u0433\u043a\u043e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e.\" : \"\u041c\u043e\u0436\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c: \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u0442\u0430\u043b\u0435\u0439.\";\n      analysisData.visual = { score: visualScore, comment: visualComment };\n      console.log(\"\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c:\", analysisData.visual);\n\n      \/\/ 6. \u0420\u0438\u0442\u043c\n      const rhythmScore = sceneCount > 1 && totalSeconds \/ sceneCount >= 60 ? 8 : sceneCount > 0 ? 6 : 4;\n      const rhythmComment = rhythmScore >= 8 ? \"\u0421\u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d: \u0441\u0446\u0435\u043d\u044b \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b.\" : rhythmScore >= 6 ? \"\u041d\u0435\u043f\u043b\u043e\u0445\u043e, \u043d\u043e \u0435\u0441\u0442\u044c \u0440\u0438\u0441\u043a \u043f\u0440\u043e\u0432\u0438\u0441\u0430\u043d\u0438\u0439.\" : \"\u0421\u043b\u0430\u0431\u043e: \u0440\u0438\u0442\u043c \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u044b\u0439.\";\n      analysisData.rhythm = { score: rhythmScore, comment: rhythmComment };\n      console.log(\"\u0420\u0438\u0442\u043c:\", analysisData.rhythm);\n\n      \/\/ 7. \u042d\u043c\u043e\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\n      const emotionKeywords = {\n        tension: [\n          '\u043d\u0430\u043f\u0440\u044f\u0436[\u0430-\u044f]+', '\u043e\u043f\u0430\u0441\u043d[\u0430-\u044f]+', '\u043b\u043e\u0432\u0443\u0448\u043a[\u0430-\u044f]+', '\u043f\u043e\u0433\u043e\u043d[\u0430-\u044f]+', '\u0437\u0430\u0433\u043e\u0432\u043e\u0440', '\u043f\u0440\u0435\u0434\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432[\u0430-\u044f]+', \n          '\u0440\u0438\u0441\u043a', '\u0443\u0433\u0440\u043e\u0437[\u0430-\u044f]+', '\u043a\u0440\u0438\u0437\u0438\u0441', '\u0431\u0438\u0442\u0432[\u0430-\u044f]+', '\u0430\u0434\u0440\u0435\u043d\u0430\u043b\u0438\u043d', '\u0441\u043f\u0435\u0448\u043a[\u0430-\u044f]+', '\u0441\u0445\u0432\u0430\u0442\u043a[\u0430-\u044f]+',\n          '\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435', '\u0432 \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438', '\u043d\u0430 \u0433\u0440\u0430\u043d\u0438', '\u043d\u0435\u0440\u0432[\u0430-\u044f]+', '\u0442\u0440\u0435\u0432\u043e\u0436[\u0430-\u044f]+', '\u0441\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u044b\u0445\u0430\u043d\u0438\u0435',\n          '\u0441\u0435\u0440\u0434\u0446\u0435 \u043a\u043e\u043b\u043e\u0442[\u0430-\u044f]+', '\u0432 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0438', '\u043f\u043e\u0434 \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c', '\u0432\u044b\u0436\u0438\u0432\u0430\u0435\u0442', '\u043d\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0435', '\u0441\u043e\u043f\u0435\u0440\u043d\u0438\u0447\u0435\u0441\u0442\u0432[\u0430-\u044f]+',\n          '\u0434\u044b\u0445\u0430\u043d\u0438\u0435 \u0443\u0447\u0430\u0441\u0442\u0438\u043b\u043e\u0441\u044c', '\u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430\u043f\u0440\u044f\u0436\u0451\u043d\u043d\u044b\u0439', '\u0442\u0438\u0448\u0438\u043d\u0430 \u043f\u0435\u0440\u0435\u0434 \u0431\u0443\u0440\u0435\u0439', '\u043d\u0430 \u0432\u0437\u0432\u043e\u0434\u0435', '\u0442\u0438\u0448\u0438\u043d\u0430 \u0434\u0430\u0432\u0438\u0442',\n          '\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u0443\u0433\u0440\u043e\u0437\u0443', '\u0432\u0441\u0451 \u043d\u0430 \u0432\u043e\u043b\u043e\u0441\u043a\u0435', '\u0433\u043e\u0442\u043e\u0432 \u043a \u0431\u043e\u044e', '\u0432\u0441\u0442\u0440\u0435\u0432\u043e\u0436\u0435\u043d[\u0430-\u044f]+', '\u043f\u043e\u0434 \u043f\u0440\u0438\u043a\u0440\u044b\u0442\u0438\u0435\u043c'\n        ],\n        joy: [\n          '\u0443\u043b\u044b\u0431[\u0430-\u044f]+', '\u0441\u0447\u0430\u0441\u0442[\u0430-\u044f]+', '\u0440\u0430\u0434\u043e\u0441\u0442[\u0430-\u044f]+', '\u043b\u044e\u0431[\u0430-\u044f]+', '\u0434\u0440\u0443\u0436[\u0430-\u044f]+', '\u043f\u0440\u0430\u0437\u0434\u043d\u0438\u043a', '\u0432\u0435\u0441\u0435\u043b[\u0430-\u044f]+', \n          '\u0441\u043c\u0435\u0445', '\u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438[\u0430-\u044f]+', '\u0433\u0430\u0440\u043c\u043e\u043d\u0438[\u0430-\u044f]+', '\u0442\u0435\u043f\u043b[\u0430-\u044f]+', '\u043e\u0431\u043d\u0438\u043c\u0430[\u0430-\u044f]+', '\u0443\u043c\u0438\u0440\u043e\u0442\u0432\u043e\u0440[\u0430-\u044f]+',\n          '\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u0430\u0434\u043e\u0441\u0442\u044c', '\u0441\u043c\u0435\u0451\u0442\u0441\u044f', '\u0432 \u0432\u043e\u0441\u0442\u043e\u0440\u0433\u0435', '\u0441\u0438\u044f[\u0430-\u044f]+', '\u0441\u0432\u0435\u0442[\u0430-\u044f]+', '\u043b\u0438\u043a\u043e\u0432[\u0430-\u044f]+', '\u0442\u043e\u0440\u0436\u0435\u0441\u0442\u0432[\u0430-\u044f]+',\n          '\u0433\u043b\u0430\u0437\u0430 \u0431\u043b\u0435\u0441\u0442[\u0430-\u044f]+', '\u0443\u043b\u044b\u0431\u043a\u0430 \u0434\u043e \u0443\u0448\u0435\u0439', '\u0441\u0432\u0435\u0442\u0438\u0442\u0441\u044f \u043e\u0442 \u0441\u0447\u0430\u0441\u0442\u044c\u044f', '\u0431\u0435\u0437\u0437\u0430\u0431\u043e\u0442\u043d[\u0430-\u044f]+', '\u0432\u0434\u043e\u0445\u043d\u043e\u0432[\u0430-\u044f]+',\n          '\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0435\u043f\u043b\u043e', '\u0441\u0435\u0440\u0434\u0446\u0435 \u043f\u043e\u0451\u0442', '\u043f\u043e\u043b\u043e\u043d \u044d\u043d\u0435\u0440\u0433\u0438\u0438', '\u0434\u043e\u0432\u043e\u043b\u044c\u043d[\u0430-\u044f]+', '\u0432\u0435\u0441\u0435\u043b\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b', \n          '\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0431\u043b\u0435\u0433\u0447\u0435\u043d\u0438\u0435', '\u0440\u0430\u0441\u0441\u043b\u0430\u0431[\u0430-\u044f]+', '\u0448\u0443\u0442[\u0430-\u044f]+'\n        ],\n        fear: [\n          '\u0441\u0442\u0440\u0430\u0445', '\u0443\u0436\u0430\u0441', '\u0442\u0435\u043c\u043d\u043e\u0442[\u0430-\u044f]+', '\u043a\u0440\u0438\u043a', '\u043f\u0430\u043d\u0438\u043a[\u0430-\u044f]+', '\u043c\u043e\u043d\u0441\u0442\u0440', '\u0441\u0442\u0440\u0430\u0448\u043d[\u0430-\u044f]+', '\u0442\u0440\u0435\u0432\u043e\u0433[\u0430-\u044f]+', \n          '\u043a\u043e\u0448\u043c\u0430\u0440', '\u0431\u043e\u044f\u0437\u043d[\u0430-\u044f]+', '\u0438\u0441\u043f\u0443\u0433[\u0430-\u044f]+', '\u0436\u0443\u0442\u043a[\u0430-\u044f]+', '\u043f\u0430\u0440\u0430\u043d\u043e[\u0430-\u044f]+', '\u0448\u043e\u043a', '\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0442\u0440\u0430\u0445', \n          '\u0432 \u0443\u0436\u0430\u0441\u0435', '\u0431\u043e\u0438\u0442\u0441\u044f', '\u0434\u0440\u043e\u0436[\u0430-\u044f]+', '\u0431\u043b\u0435\u0434\u043d[\u0430-\u044f]+', '\u0437\u0430\u0441\u0442\u044b\u043b', '\u0432\u0437\u0434\u0440\u043e\u0433\u043d\u0443\u043b', '\u0445\u043e\u043b\u043e\u0434\u043d\u044b\u0439 \u043f\u043e\u0442',\n          '\u0441\u0435\u0440\u0434\u0446\u0435 \u0437\u0430\u043c\u0435\u0440\u043b\u043e', '\u0433\u043b\u0430\u0437\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u043b\u0438\u0441\u044c', '\u0434\u044b\u0445\u0430\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0438\u043b\u043e', '\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u0445\u043e\u043b\u043e\u0434', '\u0441\u0436\u0430\u043b\u0441\u044f \u043e\u0442 \u0441\u0442\u0440\u0430\u0445\u0430',\n          '\u0432\u0437\u0434\u0440\u0430\u0433\u0438\u0432\u0430\u0435\u0442', '\u043d\u0435\u0443\u0432\u0435\u0440\u0435\u043d\u043d[\u0430-\u044f]+', '\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u0443\u0433\u0440\u043e\u0437\u0443', '\u0437\u0430\u043c\u0435\u0440 \u043e\u0442 \u0441\u0442\u0440\u0430\u0445\u0430', '\u0448\u0435\u043f\u0442\u0430\u043b \u0432 \u043f\u0430\u043d\u0438\u043a\u0435',\n          '\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u0435\u0431\u044f \u0437\u0430\u0433\u043d\u0430\u043d\u043d\u044b\u043c', '\u0432 \u0441\u043c\u044f\u0442\u0435\u043d\u0438\u0438', '\u043f\u043e\u0442\u0435\u0440\u044f\u043b \u0434\u0430\u0440 \u0440\u0435\u0447\u0438'\n        ],\n        anger: [\n          '\u0433\u043d\u0435\u0432', '\u0437\u043b[\u0430-\u044f]+', '\u043a\u0440\u0438\u0447[\u0430-\u044f]+', '\u043d\u0435\u043d\u0430\u0432[\u0430-\u044f]+', '\u043c\u0435\u0441\u0442\u044c', '\u044f\u0440\u043e\u0441\u0442\u044c', '\u0430\u0433\u0440\u0435\u0441\u0441\u0438[\u0430-\u044f]+', '\u0441\u0441\u043e\u0440[\u0430-\u044f]+', \n          '\u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442', '\u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0435\u043d[\u0430-\u044f]+', '\u0432\u043e\u0437\u043c\u0443\u0449[\u0430-\u044f]+', '\u0432\u0441\u043f\u044b\u043b[\u0430-\u044f]+', '\u0440\u0443\u0433[\u0430-\u044f]+', '\u043e\u0441\u043a\u043e\u0440\u0431[\u0430-\u044f]+',\n          '\u0432 \u044f\u0440\u043e\u0441\u0442\u0438', '\u043a\u0440\u0438\u0447\u0438\u0442 \u043e\u0442 \u0437\u043b\u043e\u0441\u0442\u0438', '\u043d\u0435\u0433\u043e\u0434[\u0430-\u044f]+', '\u0441\u0436\u0430\u043b \u043a\u0443\u043b\u0430\u043a\u0438', '\u0445\u043b\u043e\u043f\u043d\u0443\u043b \u0434\u0432\u0435\u0440\u044c\u044e', '\u0433\u043e\u043b\u043e\u0441 \u0434\u0440\u043e\u0436\u0438\u0442 \u043e\u0442 \u0433\u043d\u0435\u0432\u0430',\n          '\u0432\u0437\u0431\u0435\u0448\u0435\u043d[\u0430-\u044f]+', '\u044f\u0440\u043e\u0441\u0442\u043d[\u0430-\u044f]+', '\u0433\u043d\u0435\u0432\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b', '\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u044f\u0440\u043e\u0441\u0442\u044c', '\u0441\u043a\u0440\u0438\u043f\u0438\u0442 \u0437\u0443\u0431\u0430\u043c\u0438', '\u0432\u0437\u043e\u0440\u0432\u0430\u043b\u0441\u044f',\n          '\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0431\u0438\u0434\u0443', '\u0433\u043e\u0442\u043e\u0432 \u0440\u0430\u0437\u043d\u0435\u0441\u0442\u0438 \u0432\u0441\u0451', '\u0431\u0440\u043e\u0441\u0438\u043b \u0441\u043e \u0437\u043b\u043e\u0441\u0442\u044c\u044e', '\u0445\u043c\u0443\u0440\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434', '\u0441\u0430\u0440\u043a\u0430\u0441\u0442\u0438\u0447[\u0430-\u044f]+',\n          '\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u0430\u0437\u0434\u0440\u0430\u0436\u0435\u043d\u0438\u0435', '\u0433\u043d\u0435\u0432\u043d\u043e \u0444\u044b\u0440\u043a\u043d\u0443\u043b', '\u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043e\u0442\u0432\u0435\u0442\u0430'\n        ]\n      };\n\n      let emotionCounts = { tension: 0, joy: 0, fear: 0, anger: 0 };\n      let contextEmotionCounts = { tension: 0, joy: 0, fear: 0, anger: 0 };\n      const totalLinesForEmotion = descriptionLines.length + characterLines.length;\n      let emotionDebug = [];\n\n      const thrillerKeywords = ['\u043f\u043e\u0434 \u043f\u0440\u0438\u043a\u0440\u044b\u0442\u0438\u0435\u043c', '\u0437\u0430\u0433\u043e\u0432\u043e\u0440', '\u043f\u0440\u0435\u0434\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e', '\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c'];\n      let isThriller = descriptionLines.some(line => thrillerKeywords.some(keyword => line.toLowerCase().includes(keyword)));\n      if (isThriller) {\n        emotionCounts.tension += 1;\n        emotionDebug.push(\"\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d \u0442\u0440\u0438\u043b\u043b\u0435\u0440 (\u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435 +1)\");\n      }\n\n      descriptionLines.concat(characterLines).forEach(line => {\n        const lowerLine = line.toLowerCase();\n        let lineDebug = { line: lowerLine, tension: 0, joy: 0, fear: 0, anger: 0 };\n\n        Object.keys(emotionKeywords).forEach(emotion => {\n          emotionKeywords[emotion].forEach(keyword => {\n            if (keyword.includes(' ')) {\n              if (lowerLine.includes(keyword)) {\n                emotionCounts[emotion]++;\n                lineDebug[emotion]++;\n                lineDebug[`${emotion}_match`] = keyword;\n              }\n            } else if (new RegExp(keyword, 'i').test(lowerLine)) {\n              emotionCounts[emotion]++;\n              lineDebug[emotion]++;\n              lineDebug[`${emotion}_match`] = keyword;\n            }\n          });\n        });\n\n        if (\/\u0434\u0440\u043e\u0436[\u0430-\u044f]+|\u0431\u043b\u0435\u0434\u043d[\u0430-\u044f]+|\u0437\u0430\u0441\u0442\u044b\u043b|\u0432\u0437\u0434\u0440\u043e\u0433\u043d\u0443\u043b|\u0445\u043e\u043b\u043e\u0434\u043d\u044b\u0439 \u043f\u043e\u0442|\u0433\u043b\u0430\u0437\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u043b\u0438\u0441\u044c|\u0437\u0430\u043c\u0435\u0440 \u043e\u0442 \u0441\u0442\u0440\u0430\u0445\u0430\/i.test(lowerLine)) {\n          contextEmotionCounts.fear++;\n          lineDebug.fear++;\n          lineDebug.fear_match = \"\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 (\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435)\";\n        }\n        if (\/\u0441\u0436\u0430\u043b \u043a\u0443\u043b\u0430\u043a\u0438|\u0445\u043b\u043e\u043f\u043d\u0443\u043b \u0434\u0432\u0435\u0440\u044c\u044e|\u0433\u043e\u043b\u043e\u0441 \u0434\u0440\u043e\u0436\u0438\u0442 \u043e\u0442 \u0433\u043d\u0435\u0432\u0430|\u0441\u043a\u0440\u0438\u043f\u0438\u0442 \u0437\u0443\u0431\u0430\u043c\u0438|\u0445\u043c\u0443\u0440\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434\/i.test(lowerLine)) {\n          contextEmotionCounts.anger++;\n          lineDebug.anger++;\n          lineDebug.anger_match = \"\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 (\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435)\";\n        }\n        if (\/\u0443\u043b\u044b\u0431\u043a\u0430 \u0434\u043e \u0443\u0448\u0435\u0439|\u0441\u0432\u0435\u0442\u0438\u0442\u0441\u044f \u043e\u0442 \u0441\u0447\u0430\u0441\u0442\u044c\u044f|\u0433\u043b\u0430\u0437\u0430 \u0431\u043b\u0435\u0441\u0442[\u0430-\u044f]+|\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0435\u043f\u043b\u043e|\u0432\u0435\u0441\u0435\u043b\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u043b\/i.test(lowerLine)) {\n          contextEmotionCounts.joy++;\n          lineDebug.joy++;\n          lineDebug.joy_match = \"\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 (\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435)\";\n        }\n        if (\/\u0441\u0435\u0440\u0434\u0446\u0435 \u043a\u043e\u043b\u043e\u0442[\u0430-\u044f]+|\u0434\u044b\u0445\u0430\u043d\u0438\u0435 \u0443\u0447\u0430\u0441\u0442\u0438\u043b\u043e\u0441\u044c|\u0432\u0437\u0433\u043b\u044f\u0434 \u043d\u0430\u043f\u0440\u044f\u0436\u0451\u043d\u043d\u044b\u0439|\u043d\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0435|\u0442\u0438\u0448\u0438\u043d\u0430 \u0434\u0430\u0432\u0438\u0442\/i.test(lowerLine)) {\n          contextEmotionCounts.tension++;\n          lineDebug.tension++;\n          lineDebug.tension_match = \"\u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 (\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435)\";\n        }\n\n        if (characterLines.includes(line)) {\n          if (\/\\b\u043d\u0435 \u043c\u043e\u0433\u0443\\b|\\b\u0431\u043e\u044e\u0441\u044c\\b|\\b\u0441\u043f\u0430\u0441\u0438\u0442\u0435\\b\/i.test(lowerLine)) {\n            contextEmotionCounts.fear++;\n            lineDebug.fear++;\n            lineDebug.fear_match = \"\u0434\u0438\u0430\u043b\u043e\u0433 (\u0441\u0442\u0440\u0430\u0445)\";\n          }\n          if (\/\\b\u0445\u0432\u0430\u0442\u0438\u0442\\b|\\b\u0443\u0439\u0434\u0438\\b|\\b\u0434\u043e\u0441\u0442\u0430\u043b[\u0430-\u044f]*\\b\/i.test(lowerLine)) {\n            contextEmotionCounts.anger++;\n            lineDebug.anger++;\n            lineDebug.anger_match = \"\u0434\u0438\u0430\u043b\u043e\u0433 (\u0433\u043d\u0435\u0432)\";\n          }\n          if (\/\\b\u0437\u0434\u043e\u0440\u043e\u0432\u043e\\b|\\b\u043e\u0442\u043b\u0438\u0447\u043d\u043e\\b|\\b\u043f\u043e\u0445\u0435\u0440\\b\/i.test(lowerLine)) {\n            contextEmotionCounts.joy++;\n            lineDebug.joy++;\n            lineDebug.joy_match = \"\u0434\u0438\u0430\u043b\u043e\u0433 (\u0440\u0430\u0434\u043e\u0441\u0442\u044c)\";\n          }\n          if (\/\\b\u0431\u044b\u0441\u0442\u0440\u0435\u0435\\b|\\b\u043e\u0441\u0442\u043e\u0440\u043e\u0436\u043d\u043e\\b|\\b\u0441\u043a\u0440\u044b\u0432\u0430\u0439\u0441\u044f\\b\/i.test(lowerLine)) {\n            contextEmotionCounts.tension++;\n            lineDebug.tension++;\n            lineDebug.tension_match = \"\u0434\u0438\u0430\u043b\u043e\u0433 (\u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435)\";\n          }\n        }\n\n        emotionDebug.push(lineDebug);\n      });\n\n      emotionCounts.tension += contextEmotionCounts.tension;\n      emotionCounts.joy += contextEmotionCounts.joy;\n      emotionCounts.fear += contextEmotionCounts.fear;\n      emotionCounts.anger += contextEmotionCounts.anger;\n\n      const totalEmotionHits = emotionCounts.tension + emotionCounts.joy + emotionCounts.fear + emotionCounts.anger;\n      const totalContextHits = contextEmotionCounts.tension + contextEmotionCounts.joy + contextEmotionCounts.fear + contextEmotionCounts.anger;\n\n      const distribution = {\n        tension: totalEmotionHits > 0 ? Math.round((emotionCounts.tension \/ totalEmotionHits) * 100) : 0,\n        joy: totalEmotionHits > 0 ? Math.round((emotionCounts.joy \/ totalEmotionHits) * 100) : 0,\n        fear: totalEmotionHits > 0 ? Math.round((emotionCounts.fear \/ totalEmotionHits) * 100) : 0,\n        anger: totalEmotionHits > 0 ? Math.round((emotionCounts.anger \/ totalEmotionHits) * 100) : 0\n      };\n\n      let emotionScore = 3;\n      if (totalEmotionHits > 0) {\n        emotionScore += totalEmotionHits * 0.2;\n        emotionScore += totalContextHits * 0.5;\n        const uniqueEmotions = Object.values(emotionCounts).filter(count => count > 0).length;\n        emotionScore += uniqueEmotions * 1;\n        const maxEmotion = Math.max(...Object.values(distribution));\n        if (maxEmotion > 70) emotionScore += 1;\n        if (totalEmotionHits > 5) emotionScore += (totalEmotionHits - 5) * 0.1;\n      }\n      emotionScore = Math.min(Math.round(emotionScore), 10);\n\n      const emotionComment = emotionScore >= 8 ? \"\u041e\u0442\u043b\u0438\u0447\u043d\u043e: \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u044d\u043c\u043e\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0432\u043b\u0435\u043a\u0430\u0435\u0442.\" : \n                            emotionScore >= 5 ? \"\u041d\u0435\u043f\u043b\u043e\u0445\u043e, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0441\u0438\u043b\u0438\u0442\u044c \u044d\u043c\u043e\u0446\u0438\u0438.\" : \n                            \"\u0421\u043b\u0430\u0431\u043e: \u044d\u043c\u043e\u0446\u0438\u0438 \u0441\u043b\u0430\u0431\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u044b.\";\n      analysisData.emotions = { score: emotionScore, comment: emotionComment, distribution };\n      console.log(\"\u042d\u043c\u043e\u0446\u0438\u0438:\", analysisData.emotions);\n      console.log(\"\u0414\u0435\u0442\u0430\u043b\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u044d\u043c\u043e\u0446\u0438\u0439:\", emotionDebug);\n\n      analysisData.wordCount = totalWords;\n      analysisData.dialogPercent = dialogPercent;\n      const scores = [structureScore, conflictScore, characterScore, dialogScore, visualScore, rhythmScore, emotionScore];\n      analysisData.finalScore = Math.round(scores.reduce((a, b) => a + b, 0) \/ scores.length);\n      console.log(\"\u0418\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430:\", analysisData.finalScore);\n    }\n\n    document.getElementById('pdfInput').addEventListener('change', async (e) => {\n      console.log(\"\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 PDF...\");\n      const file = e.target.files[0];\n      if (file) {\n        try {\n          await loadPDF(file);\n        } catch (error) {\n          console.error(\"\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0435 PDF:\", error);\n          alert(\"\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c PDF. \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0444\u0430\u0439\u043b \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0441\u043d\u043e\u0432\u0430.\");\n        }\n      }\n    });\n\n    async function loadPDF(file) {\n      return new Promise((resolve, reject) => {\n        const reader = new FileReader();\n        reader.onload = async function () {\n          try {\n            const typedarray = new Uint8Array(this.result);\n            const pdf = await pdfjsLib.getDocument(typedarray).promise;\n            let fullText = '';\n            for (let i = 1; i <= pdf.numPages; i++) {\n              const page = await pdf.getPage(i);\n              const textContent = await page.getTextContent();\n              const strings = textContent.items.map(item => item.str);\n              fullText += strings.join(' ') + '\\n\\n';\n            }\n            document.getElementById(\"scriptInput\").value = fullText;\n            console.log(\"PDF \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d, \u0442\u0435\u043a\u0441\u0442:\", fullText);\n            resolve(fullText);\n          } catch (error) {\n            reject(error);\n          }\n        };\n        reader.onerror = () => reject(new Error(\"\u041e\u0448\u0438\u0431\u043a\u0430 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430\"));\n        reader.readAsArrayBuffer(file);\n      });\n    }\n  <\/script>\n<\/body>\n<\/html>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>BanTV \u23f1 \u0425\u0440\u043e\u043d\u043e\u043c\u0435\u0442\u0440 \u0441\u0446\u0435\u043d\u044b \u0438 \u0441\u0446\u0435\u043d\u0430\u0440\u043d\u0430\u044f \u043e\u0446\u0435\u043d\u043a\u0430 \ud83c\udfac \u0425\u0440\u043e\u043d\u043e\u043c\u0435\u0442\u0440 \u0441\u0446\u0435\u043d\u044b \u0412\u0441\u0442\u0430\u0432\u044c \u0442\u0435\u043a\u0441\u0442 \u0441\u0446\u0435\u043d\u044b \u0438\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438 PDF: \u041f\u043e\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \ud83d\udcdd \u041f\u0440\u043e\u0444.\u043e\u0446\u0435\u043d\u043a\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f 1. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430: &#8212; &#8212; 2. \u041a\u043e\u043d\u0444\u043b\u0438\u043a\u0442: &#8212; &#8212; 3. \u041f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0438: &#8212; &#8212; 4. \u0414\u0438\u0430\u043b\u043e\u0433\u0438: &#8212; &#8212; 5. \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c: &#8212; &#8212; 6. \u0420\u0438\u0442\u043c: &#8212; &#8212; 7. \u042d\u043c\u043e\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435: &#8212; &#8212; \u041d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435: &#8212;% \u0420\u0430\u0434\u043e\u0441\u0442\u044c: &#8212;% \u0421\u0442\u0440\u0430\u0445: &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/bantv.ru\/?page_id=451\" class=\"more-link\">\u0427\u0438\u0442\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435<span class=\"screen-reader-text\"> &#171;\u0421\u043a\u0430\u0447\u0430\u0442\u044c \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c&#187;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inspiro_hide_title":false,"footnotes":""},"class_list":["post-451","page","type-page","status-publish","hentry"],"featured_media_urls":[],"_links":{"self":[{"href":"https:\/\/bantv.ru\/index.php?rest_route=\/wp\/v2\/pages\/451","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bantv.ru\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bantv.ru\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bantv.ru\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bantv.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=451"}],"version-history":[{"count":21,"href":"https:\/\/bantv.ru\/index.php?rest_route=\/wp\/v2\/pages\/451\/revisions"}],"predecessor-version":[{"id":621,"href":"https:\/\/bantv.ru\/index.php?rest_route=\/wp\/v2\/pages\/451\/revisions\/621"}],"wp:attachment":[{"href":"https:\/\/bantv.ru\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=451"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}