[{"articleStyle":2,"cacheFirst":false,"customOrder":3,"enableJs":true,"enabled":true,"enabledCookieJar":true,"header":"{\n  \"User-Agent\": \"Mozilla\/5.0 (Linux; Android 14; 23113RKC6C Build\/UKQ1.230804.001) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/142.0.6261.119 Mobile Safari\/537.36\"\n  }","lastUpdateTime":1785306561268,"loadWithBaseUrl":true,"loginUrl":"https:\/\/www.cz4k.com\/","preload":false,"ruleArticles":".bt_img ul li","ruleContent":"@js:\nvar doc = org.jsoup.Jsoup.parse(result);\nvar lines = doc.select(\".paly_list_btn a, .juji_list a\");\nif (lines.size() == 0) { \"未找到剧集线路\"; } else {\n    function esc(s) { return String(s||\"\").replace(\/&\/g,\"&amp;\").replace(\/<\/g,\"&lt;\").replace(\/>\/g,\"&gt;\"); }\n\n    \/\/ 提取剧名\n    var titleNode = doc.select(\".moviedteail_tt h1\");\n    var titleText = titleNode.size() > 0 ? titleNode.text().trim() : doc.select(\"title\").text().trim();\n\n    var html = \"\";\n    html += \"<style>\";\n    html += \"*{box-sizing:border-box;}\";\n    html += \".wrap{padding:8px;background:#f5f6fa;border-radius:12px;font-family:Arial;}\";\n    html += \".top-title{font-size:18px;font-weight:bold;text-align:center;color:#222;margin-bottom:12px;line-height:1.4;word-wrap:break-word;}\";\n    html += \".player-wrapper{position:relative;width:100%;aspect-ratio:16\/9;border-radius:12px;overflow:hidden;background:#000;margin-bottom:8px;}\";\n    html += \".player-wrapper iframe{width:100%;height:100%;border:none;}\";\n    \/* 新增历史记录提示样式 *\/\n    html += \".history-tip{font-size:13px;color:#666;margin-bottom:10px;padding:4px 8px;background:#eef2ff;border-radius:6px;display:inline-block;}\";\n    html += \".line-tabs{display:flex;gap:8px;flex-wrap:wrap;}\";\n    html += \".line-tabs button{flex:0 0 auto;min-width:44px;border:none;padding:8px 12px;border-radius:8px;background:#eef2ff;font-size:14px;font-weight:600;cursor:pointer;text-align:center;}\";\n    html += \".line-tabs button.active{background:#4f8cff;color:#fff;}\";\n    html += \".loading-txt{color:#ccc;text-align:center;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:14px;}\";\n    html += \"<\/style>\";\n\n    html += \"<div class='wrap'>\";\n    \n    \/\/ 如果提取到了剧名，就显示在最上方\n    if (titleText) {\n        html += \"<div class='top-title'>\" + esc(titleText) + \"<\/div>\";\n    }\n\n    html += \"<div class='player-wrapper' id='playerBox'>\";\n    html += \"<div class='loading-txt'>准备播放...<\/div>\";\n    html += \"<\/div>\";\n\n    \/\/ 预留历史记录提示的容器\n    html += \"<div id='historyTipWrapper' style='display:none;'><div class='history-tip' id='historyTip'><\/div><\/div>\";\n\n    html += \"<div class='line-tabs' id='lineTabs'>\";\n    for (var i = 0; i < lines.size(); i++) {\n        var name = lines.get(i).text().trim() || (\"集数\" + (i + 1));\n        var href = lines.get(i).attr(\"href\");\n        html += \"<button id='tab_\" + i + \"' data-href='\" + href + \"' class='' onclick='switchLine(this,\" + i + \")'>\" + esc(name) + \"<\/button>\";\n    }\n    html += \"<\/div>\";\n    html += \"<\/div>\";\n\n    html += \"<script>\";\n    \/\/ 安全地将当前剧名传递给 JS，作为 LocalStorage 的独立 key\n    html += \"var pageTitle = decodeURIComponent('\" + encodeURIComponent(titleText) + \"');\";\n    html += \"var storageKey = 'cz_hist_' + pageTitle;\";\n\n    html += \"function switchLine(btn, idx) {\";\n    html += \"  var tabs = document.querySelectorAll('.line-tabs button');\";\n    html += \"  for (var i = 0; i < tabs.length; i++) tabs[i].classList.remove('active');\";\n    html += \"  btn.classList.add('active');\";\n    \n    \/\/ 保存独立历史记录并更新UI\n    html += \"  var epName = btn.innerText;\";\n    html += \"  try { \";\n    html += \"    localStorage.setItem(storageKey, JSON.stringify({idx: idx, name: epName}));\";\n    html += \"    var tipWrapper = document.getElementById('historyTipWrapper');\";\n    html += \"    tipWrapper.style.display = 'block';\";\n    html += \"    document.getElementById('historyTip').innerHTML = '🎬 你已观看到：<span style=\\\"color:#4f8cff;font-weight:bold;\\\">' + epName + '<\/span>';\";\n    html += \"  } catch(e) {}\";\n\n    \/\/ 播放逻辑\n    html += \"  var targetUrl = btn.getAttribute('data-href');\";\n    html += \"  var playerBox = document.getElementById('playerBox');\";\n    html += \"  playerBox.innerHTML = '<div class=\\\"loading-txt\\\">解析真实播放源中...<\/div>';\";\n    \n    html += \"  fetch(targetUrl).then(function(res){return res.text();}).then(function(text){\";\n    html += \"    var realSrc = '';\";\n    html += \"    var iframeReg = \/<iframe[^>]+src=['\\\"]([^'\\\"]+)['\\\"]\/i;\";\n    html += \"    var match = text.match(iframeReg);\";\n    html += \"    if(match && match[1] && match[1].indexOf('about:blank') === -1) {\";\n    html += \"      realSrc = match[1];\";\n    html += \"    } else {\";\n    html += \"      var jsReg = \/player_aaaa\\\\s*=\\\\s*(\\\\{.*?\\\\})\/;\";\n    html += \"      var jsMatch = text.match(jsReg);\";\n    html += \"      if(jsMatch && jsMatch[1]){ try { var obj = JSON.parse(jsMatch[1]); realSrc = obj.url; } catch(e) {} }\";\n    html += \"    }\";\n    \n    html += \"    if(realSrc){\";\n    html += \"      if(realSrc.indexOf('\/\/') === 0) realSrc = 'https:' + realSrc;\";\n    html += \"      else if(realSrc.indexOf('\/') === 0) realSrc = 'https:\/\/www.cz01.org' + realSrc;\";\n    html += \"      playerBox.innerHTML = '<iframe src=\\\"' + realSrc + '\\\" allowfullscreen=\\\"true\\\" webkitallowfullscreen=\\\"true\\\" mozallowfullscreen=\\\"true\\\"><\/iframe>';\";\n    html += \"    } else {\";\n    html += \"      playerBox.innerHTML = '<div class=\\\"loading-txt\\\">无法提取源，<a href=\\\"' + targetUrl + '\\\" style=\\\"color:#4f8cff;\\\">点击跳转网页播放<\/a><\/div>';\";\n    html += \"    }\";\n    html += \"  }).catch(function(err){\";\n    html += \"    playerBox.innerHTML = '<div class=\\\"loading-txt\\\">网络请求失败，<a href=\\\"' + targetUrl + '\\\" style=\\\"color:#4f8cff;\\\">点击跳转网页播放<\/a><\/div>';\";\n    html += \"  });\";\n    html += \"}\";\n\n    \/\/ 初始化检查独立历史记录\n    html += \"setTimeout(function(){\";\n    html += \"  var histStr = localStorage.getItem(storageKey);\";\n    html += \"  var tabs = document.querySelectorAll('.line-tabs button');\";\n    html += \"  var targetBtn = tabs[0];\";\n    html += \"  if(histStr) {\";\n    html += \"    try {\";\n    html += \"      var hist = JSON.parse(histStr);\";\n    html += \"      if(tabs[hist.idx]) { targetBtn = tabs[hist.idx]; }\";\n    html += \"    } catch(e) {}\";\n    html += \"  }\";\n    html += \"  if(targetBtn) targetBtn.click();\";\n    html += \"}, 100);\";\n    html += \"<\/script>\";\n\n    html;\n}","ruleImage":"img@data-original","ruleLink":"a@href","ruleNextPage":"page","ruleTitle":"h3.dytit a@text","showWebLog":false,"singleUrl":false,"sortUrl":"搜索::\/boss1O1?q={{source.getVariable()}}&f=_all&p={{page}}\n豆瓣电影Top250::\/dbtop250\/page\/{{page}}\n最新电影::\/zuixindianying\/page\/{{page}}\n剧场版::\/dongmanjuchangban\/page\/{{page}}\n国产剧::\/gcj\/page\/{{page}}\n美剧::\/meijutt\/page\/{{page}}\n韩剧::\/hanjutv\/page\/{{page}}\n番剧::\/fanju\/page\/{{page}}","sourceGroup":"影视","sourceIcon":"https:\/\/c-ssl.dtstatic.com\/uploads\/blog\/202309\/22\/GgSb5GLzidPVw6g.thumb.400_0.jpg","sourceName":"厂长资源","sourceUrl":"https:\/\/www.cz4k.com\/","type":0}]