// 豆瓣热门电影电视剧推荐功能 // 豆瓣标签列表 const doubanTags = ['热门', '最新', '经典', '豆瓣高分','古装剧', '冷门佳片', '科幻' ,'喜剧', '综艺', '欧美', '电视剧', '韩国', '日本', '动漫','动画片']; let doubanCurrentTag = localStorage.getItem('doubanCurrentTag') || '热门'; let doubanPageStart = 0; const doubanPageSize = 16; // 一次显示的项目数量 // 初始化豆瓣功能 function initDouban() { // 设置豆瓣开关的初始状态 const doubanToggle = document.getElementById('doubanToggle'); if (doubanToggle) { const isEnabled = localStorage.getItem('doubanEnabled') === 'true'; doubanToggle.checked = isEnabled; // 设置开关外观 const toggleBg = doubanToggle.nextElementSibling; const toggleDot = toggleBg.nextElementSibling; if (isEnabled) { toggleBg.classList.add('bg-pink-600'); toggleDot.classList.add('translate-x-6'); } // 添加事件监听 doubanToggle.addEventListener('change', function(e) { const isChecked = e.target.checked; localStorage.setItem('doubanEnabled', isChecked); // 更新开关外观 if (isChecked) { toggleBg.classList.add('bg-pink-600'); toggleDot.classList.add('translate-x-6'); } else { toggleBg.classList.remove('bg-pink-600'); toggleDot.classList.remove('translate-x-6'); } // 更新显示状态 updateDoubanVisibility(); }); // 初始更新显示状态 updateDoubanVisibility(); } // 渲染豆瓣标签 renderDoubanTags(); // 换一批按钮事件监听 setupDoubanRefreshBtn(); // 初始加载热门内容 if (localStorage.getItem('doubanEnabled') === 'true') { renderRecommend(doubanCurrentTag, doubanPageSize, doubanPageStart); } } // 根据设置更新豆瓣区域的显示状态 function updateDoubanVisibility() { const doubanArea = document.getElementById('doubanArea'); if (!doubanArea) return; const isEnabled = localStorage.getItem('doubanEnabled') === 'true'; const isSearching = document.getElementById('resultsArea') && !document.getElementById('resultsArea').classList.contains('hidden'); // 只有在启用且没有搜索结果显示时才显示豆瓣区域 if (isEnabled && !isSearching) { doubanArea.classList.remove('hidden'); // 如果豆瓣结果为空,重新加载 if (document.getElementById('douban-results').children.length === 0) { renderRecommend(doubanCurrentTag, doubanPageSize, doubanPageStart); } } else { doubanArea.classList.add('hidden'); } } // 只填充搜索框,不执行搜索,让用户自主决定搜索时机 function fillSearchInput(title) { if (!title) return; // 安全处理标题,防止XSS const safeTitle = title .replace(//g, '>') .replace(/"/g, '"'); const input = document.getElementById('searchInput'); if (input) { input.value = safeTitle; // 聚焦搜索框,便于用户立即使用键盘操作 input.focus(); // 显示一个提示,告知用户点击搜索按钮进行搜索 showToast('已填充搜索内容,点击搜索按钮开始搜索', 'info'); } } // 填充搜索框并执行搜索 function fillAndSearch(title) { if (!title) return; // 安全处理标题,防止XSS const safeTitle = title .replace(//g, '>') .replace(/"/g, '"'); const input = document.getElementById('searchInput'); if (input) { input.value = safeTitle; search(); // 使用已有的search函数执行搜索 } } // 填充搜索框,确保豆瓣资源API被选中,然后执行搜索 function fillAndSearchWithDouban(title) { if (!title) return; // 安全处理标题,防止XSS const safeTitle = title .replace(//g, '>') .replace(/"/g, '"'); // 确保豆瓣资源API被选中 if (typeof selectedAPIs !== 'undefined' && !selectedAPIs.includes('dbzy')) { // 在设置中勾选豆瓣资源API复选框 const doubanCheckbox = document.querySelector('input[id="api_dbzy"]'); if (doubanCheckbox) { doubanCheckbox.checked = true; // 触发updateSelectedAPIs函数以更新状态 if (typeof updateSelectedAPIs === 'function') { updateSelectedAPIs(); } else { // 如果函数不可用,则手动添加到selectedAPIs selectedAPIs.push('dbzy'); localStorage.setItem('selectedAPIs', JSON.stringify(selectedAPIs)); // 更新选中API计数(如果有这个元素) const countEl = document.getElementById('selectedAPICount'); if (countEl) { countEl.textContent = selectedAPIs.length; } } showToast('已自动选择豆瓣资源API', 'info'); } } // 填充搜索框并执行搜索 const input = document.getElementById('searchInput'); if (input) { input.value = safeTitle; search(); // 使用已有的search函数执行搜索 } } // 渲染豆瓣标签选择器 function renderDoubanTags() { const tagContainer = document.getElementById('douban-tags'); if (!tagContainer) return; tagContainer.innerHTML = ''; doubanTags.forEach(tag => { const btn = document.createElement('button'); // 更新标签样式:统一高度,添加过渡效果,改进颜色对比度 btn.className = 'py-1.5 px-3.5 rounded text-sm font-medium transition-all duration-300 ' + (tag === doubanCurrentTag ? 'bg-pink-600 text-white shadow-md' : 'bg-[#1a1a1a] text-gray-300 hover:bg-pink-700 hover:text-white'); btn.textContent = tag; btn.onclick = function() { if (doubanCurrentTag !== tag) { doubanCurrentTag = tag; localStorage.setItem('doubanCurrentTag', tag); doubanPageStart = 0; renderRecommend(doubanCurrentTag, doubanPageSize, doubanPageStart); renderDoubanTags(); } }; tagContainer.appendChild(btn); }); } // 设置换一批按钮事件 function setupDoubanRefreshBtn() { // 修复ID,使用正确的ID douban-refresh 而不是 douban-refresh-btn const btn = document.getElementById('douban-refresh'); if (!btn) return; btn.onclick = function() { doubanPageStart += doubanPageSize; if (doubanPageStart > 9 * doubanPageSize) { doubanPageStart = 0; } renderRecommend(doubanCurrentTag, doubanPageSize, doubanPageStart); }; } // 渲染热门推荐内容 function renderRecommend(tag, pageLimit, pageStart) { const container = document.getElementById("douban-results"); if (!container) return; // 显示加载状态 container.innerHTML = `