"<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n        <link rel=\"icon\" href=\"\/uploads\/image\/20260420\/90d8308e9c561f0b59207b53f0ac1694.png\" \/>\n        <meta name=\"renderer\" content=\"webkit\">\n    <meta name=\"viewport\" content=\"width=device-width,user-scalable=no,maximum-scale=1.0\">\n    <title>爱搜网盘分享站 - 全网首发聚合网盘搜索引擎<\/title>\n    <meta name=\"keywords\" content=\"爱搜为您提供最新最全的夸克、百度网盘等网盘资源搜索服务，每天更新大量最新的网盘资源，资源实时失效检测。包含了海量影视剧、书籍、软件、素材、教程、资料等资源。满足您的需求！\n爱搜_网盘资源搜索_聚合网盘搜索资源神器_好用的全能网盘搜索引擎\" \/>\n    <meta name=\"description\" content=\"全网领先的聚合网盘搜索引擎，实时聚合夸克、百度网盘等平台资源，每日更新 影视、书籍、软件、教程等内容。独家失效检测系统，确保资源秒搜可用，告别 &ldquo;链接过期&rdquo; 烦恼！一站式满足办公、学习、娱乐资源需求，来爱搜，找资源更简单！\" \/>\n    <meta name=\"referrer\" content=\"no-referrer\">\n    <link rel=\"stylesheet\" href=\"\/views\/index\/news\/common\/static\/css\/index.min.css\">\n    <link rel=\"stylesheet\" href=\"\/views\/index\/news\/common\/static\/css\/app.css\">\n    <link rel=\"stylesheet\" href=\"\/views\/index\/news\/common\/static\/css\/m.css\">\n    \n        \n    <style>\n        \/* 主题配色方案 - 默认红 *\/\n        :root,\n        [data-theme=\"red\"] {\n            --theme-primary: #ff6b6b;\n            --theme-primary-light: #ff8e53;\n            --theme-primary-gradient: linear-gradient(135deg, #ff6b6b 0%, #ff8e53 100%);\n            --theme-primary-hover: #ff5252;\n            --theme-secondary-gradient: linear-gradient(135deg, #ff8e53 0%, #ffa940 100%);\n            --theme-tertiary-gradient: linear-gradient(135deg, #ffa940 0%, #ffc53d 100%);\n            --theme-background: #f5f5f5;\n            --theme-surface: #ffffff;\n            --theme-card: #fff8f0;\n            --theme-card-gradient: linear-gradient(135deg, #fff8f0 0%, #fff0f0 100%);\n            --theme-text: #333333;\n            --theme-text-secondary: #666666;\n            --theme-border: #f0f0f0;\n        }\n\n        \/* 海洋蓝主题 *\/\n        [data-theme=\"blue\"] {\n            --theme-primary: #4a90e2;\n            --theme-primary-light: #5fa3f0;\n            --theme-primary-gradient: linear-gradient(135deg, #4a90e2 0%, #5fa3f0 100%);\n            --theme-primary-hover: #3a7bc8;\n            --theme-secondary-gradient: linear-gradient(135deg, #5fa3f0 0%, #7eb8f7 100%);\n            --theme-tertiary-gradient: linear-gradient(135deg, #7eb8f7 0%, #9dcdff 100%);\n            --theme-background: #f0f4f8;\n            --theme-surface: #ffffff;\n            --theme-card: #f0f8ff;\n            --theme-card-gradient: linear-gradient(135deg, #f0f8ff 0%, #e6f2ff 100%);\n            --theme-text: #2c3e50;\n            --theme-text-secondary: #5a6c7d;\n            --theme-border: #e1e8ed;\n        }\n\n        \/* 森林绿主题 *\/\n        [data-theme=\"green\"] {\n            --theme-primary: #27ae60;\n            --theme-primary-light: #2ecc71;\n            --theme-primary-gradient: linear-gradient(135deg, #27ae60 0%, #2ecc71 100%);\n            --theme-primary-hover: #229954;\n            --theme-secondary-gradient: linear-gradient(135deg, #2ecc71 0%, #58d68d 100%);\n            --theme-tertiary-gradient: linear-gradient(135deg, #58d68d 0%, #82e0aa 100%);\n            --theme-background: #f0f7f4;\n            --theme-surface: #ffffff;\n            --theme-card: #f0faf4;\n            --theme-card-gradient: linear-gradient(135deg, #f0faf4 0%, #e6f5eb 100%);\n            --theme-text: #1e3a2f;\n            --theme-text-secondary: #4a6356;\n            --theme-border: #d4e6dc;\n        }\n\n        \/* 暗夜黑主题 *\/\n        [data-theme=\"dark\"] {\n            --theme-primary: #6366f1;\n            --theme-primary-light: #8b5cf6;\n            --theme-primary-gradient: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);\n            --theme-primary-hover: #4f46e5;\n            --theme-secondary-gradient: linear-gradient(135deg, #8b5cf6 0%, #a78bfa 100%);\n            --theme-tertiary-gradient: linear-gradient(135deg, #a78bfa 0%, #c4b5fd 100%);\n            --theme-background: #0f0f1a;\n            --theme-surface: #1a1a2e;\n            --theme-card: #252538;\n            --theme-card-gradient: linear-gradient(135deg, #252538 0%, #1e1e32 100%);\n            --theme-text: #f0f0f5;\n            --theme-text-secondary: #a0a0b0;\n            --theme-border: #3a3a4a;\n            --theme-text-muted: #808090;\n        }\n        \n        body {\n            background-color: var(--theme-background) !important;\n            color: var(--theme-text);\n            transition: background-color 0.3s ease, color 0.3s ease;\n        }\n            <\/style>\n<meta name=\"referrer\" content=\"never\">\n<style>\n    \/* 隐藏原导航栏 *\/\n    .headerBox,\n    .headerKox {\n        display: none !important;\n    }\n    \n    \/* 顶部导航栏样式 - 卡片式 *\/\n    #app > .top-nav {\n        background: transparent !important;\n        padding: 12px 16px 0 !important;\n        width: 100% !important;\n        box-sizing: border-box !important;\n    }\n\n    #app > .top-nav .top-nav-box {\n        width: 1048px !important;\n        max-width: calc(100% - 32px) !important;\n        margin: 0 auto !important;\n        padding: 6px 16px !important;\n        display: flex !important;\n        align-items: center !important;\n        justify-content: space-between !important;\n        background: var(--theme-surface) !important;\n        border-radius: 10px !important;\n        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05) !important;\n        position: relative !important;\n        transition: background-color 0.3s ease !important;\n    }\n\n    #app > .top-nav .top-nav-logo {\n        display: flex !important;\n        align-items: center !important;\n        gap: 10px !important;\n        text-decoration: none !important;\n    }\n\n    #app > .top-nav .top-nav-logo .logo-img,\n    #app > .top-nav .top-nav-logo .logo-placeholder {\n        width: 36px !important;\n        height: 36px !important;\n        border-radius: 8px !important;\n        flex-shrink: 0 !important;\n    }\n\n    #app > .top-nav .top-nav-logo .logo-placeholder {\n        background: var(--theme-primary-gradient) !important;\n        display: flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        color: #fff !important;\n        font-weight: bold !important;\n        font-size: 14px !important;\n    }\n\n    #app > .top-nav .top-nav-logo .logo-text {\n        display: flex !important;\n        flex-direction: column !important;\n        gap: 0px !important;\n    }\n\n    #app > .top-nav .top-nav-logo .logo-title-row {\n        display: flex !important;\n        align-items: center !important;\n        gap: 6px !important;\n    }\n\n    #app > .top-nav .top-nav-logo .logo-name {\n        font-size: 16px !important;\n        font-weight: 600 !important;\n        color: var(--theme-text) !important;\n    }\n\n    #app > .top-nav .top-nav-logo .logo-version {\n        font-size: 10px !important;\n        color: var(--theme-primary) !important;\n        background: rgba(255, 107, 107, 0.1) !important;\n        padding: 1px 6px !important;\n        border-radius: 8px !important;\n        font-weight: 500 !important;\n    }\n\n    #app > .top-nav .top-nav-logo .logo-subtitle {\n        font-size: 11px !important;\n        color: var(--theme-text-secondary) !important;\n        max-width: 20em;\n        overflow: hidden;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n        display: inline-block;\n        \/* 如需多行截断，使用以下属性（会有警告但兼容性好） *\/\n        \/* display: -webkit-box; *\/\n        \/* -webkit-line-clamp: 2; *\/\n        \/* -webkit-box-orient: vertical; *\/\n        \/* white-space: normal; *\/\n    }\n\n    #app > .top-nav .top-nav-menu {\n        display: flex !important;\n        align-items: center !important;\n        gap: 4px !important;\n    }\n\n    #app > .top-nav .nav-menu-item {\n        padding: 6px 14px !important;\n        font-size: 13px !important;\n        color: var(--theme-text-secondary) !important;\n        cursor: pointer !important;\n        border-radius: 16px !important;\n        transition: all 0.2s ease !important;\n        text-decoration: none !important;\n        display: inline-block !important;\n    }\n\n    #app > .top-nav .nav-menu-item:hover,\n    #app > .top-nav .nav-menu-item.active {\n        color: var(--theme-primary) !important;\n        background: rgba(255, 107, 107, 0.1) !important;\n    }\n\n    #app > .top-nav .top-nav-actions {\n        display: flex !important;\n        align-items: center !important;\n        gap: 8px !important;\n    }\n\n    #app > .top-nav .nav-filter-btn {\n        display: flex !important;\n        align-items: center !important;\n        gap: 4px !important;\n        padding: 6px 12px !important;\n        font-size: 13px !important;\n        color: var(--theme-text-secondary) !important;\n        cursor: pointer !important;\n        border-radius: 16px !important;\n        transition: all 0.2s ease !important;\n        border: 1px solid var(--theme-border) !important;\n    }\n\n    #app > .top-nav .nav-filter-btn:hover {\n        border-color: var(--theme-primary) !important;\n        color: var(--theme-primary) !important;\n    }\n\n    #app > .top-nav .nav-theme-btn {\n        width: 32px !important;\n        height: 32px !important;\n        display: flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        border-radius: 50% !important;\n        cursor: pointer !important;\n        transition: all 0.2s ease !important;\n        background: var(--theme-surface) !important;\n        color: var(--theme-text) !important;\n        border: 1px solid var(--theme-border) !important;\n    }\n\n    #app > .top-nav .nav-theme-btn:hover {\n        background: var(--theme-background) !important;\n        color: var(--theme-primary) !important;\n    }\n\n    #app > .top-nav .nav-avatar {\n        width: 32px !important;\n        height: 32px !important;\n        display: flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        border-radius: 50% !important;\n        cursor: pointer !important;\n        transition: all 0.2s ease !important;\n        background: var(--theme-surface) !important;\n        color: var(--theme-text) !important;\n        border: 1px solid var(--theme-border) !important;\n    }\n\n    #app > .top-nav .nav-avatar:hover {\n        background: #f5f5f5 !important;\n        color: var(--theme-primary) !important;\n    }\n\n    \/* 主题切换器 *\/\n    #app > .top-nav .theme-switcher {\n        position: relative;\n        z-index: 1001;\n    }\n\n    #app > .top-nav .theme-switcher-btn {\n        width: 32px;\n        height: 32px;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        border-radius: 50%;\n        cursor: pointer;\n        transition: all 0.2s ease;\n        background: var(--theme-surface);\n        color: var(--theme-text-secondary);\n        border: 1px solid var(--theme-border);\n        font-size: 14px;\n    }\n\n    #app > .top-nav .theme-switcher-btn:hover {\n        background: var(--theme-background);\n        color: var(--theme-primary);\n        border-color: var(--theme-primary);\n    }\n\n    #app > .top-nav .theme-dropdown {\n        position: absolute;\n        top: calc(100% + 8px);\n        right: 0;\n        background: var(--theme-surface);\n        border-radius: 8px;\n        box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);\n        padding: 8px;\n        min-width: 140px;\n        z-index: 9999;\n        border: 1px solid var(--theme-border);\n        transition: background-color 0.3s ease;\n    }\n\n    #app > .top-nav .theme-option {\n        display: flex;\n        align-items: center;\n        gap: 10px;\n        padding: 8px 12px;\n        border-radius: 6px;\n        cursor: pointer;\n        transition: all 0.2s ease;\n        color: var(--theme-text);\n    }\n\n    #app > .top-nav .theme-option:hover {\n        background: var(--theme-background);\n    }\n\n    #app > .top-nav .theme-option.active {\n        background: var(--theme-primary-gradient);\n        color: #fff;\n    }\n\n    #app > .top-nav .theme-dot {\n        width: 16px;\n        height: 16px;\n        border-radius: 50%;\n        flex-shrink: 0;\n    }\n\n    #app > .top-nav .theme-name {\n        font-size: 13px;\n        white-space: nowrap;\n    }\n\n    #app > .top-nav .nav-menu-icon {\n        font-size: 20px !important;\n        cursor: pointer !important;\n        color: var(--theme-text-secondary) !important;\n        display: none !important;\n    }\n    \n    @media (max-width: 1024px) {\n        #app > .top-nav .top-nav-box {\n            width: 100% !important;\n            max-width: 100% !important;\n        }\n    }\n    \n    @media (max-width: 768px) {\n        #app > .top-nav .top-nav-menu,\n        #app > .top-nav .nav-filter-btn {\n            display: none !important;\n        }\n        #app > .top-nav .nav-menu-icon {\n            display: block !important;\n        }\n        #app > .top-nav .top-nav-logo .logo-subtitle {\n            display: none !important;\n        }\n        #app > .top-nav .theme-switcher-btn {\n            width: 28px;\n            height: 28px;\n            font-size: 12px;\n        }\n        #app > .top-nav .theme-dropdown {\n            right: -40px;\n            min-width: 120px;\n        }\n        #app > .top-nav .theme-name {\n            font-size: 12px;\n        }\n    }\n<\/style>\n<style>\n    \/* 首页新样式 - 参考 msmy.cn *\/\n    \n    \/* 二维码弹窗样式 *\/\n    .qrcode-dialog {\n        background: #fff !important;\n        border-radius: 12px !important;\n        overflow: hidden;\n    }\n    .qrcode-dialog .el-dialog__header {\n        background: #fff !important;\n        padding: 0 !important;\n        margin: 0 !important;\n    }\n    .qrcode-dialog .el-dialog__body {\n        background: #fff !important;\n        padding: 0 !important;\n    }\n    .el-overlay-dialog .qrcode-dialog {\n        border-radius: 12px;\n    }\n    \n    .home-container {\n        width: 1080px;\n        margin: 0 auto;\n        padding: 16px 16px 24px;\n    }\n\n    .home-main {\n        display: flex;\n        gap: 16px;\n        margin-bottom: 16px;\n    }\n\n    \/* 左侧搜索区域 *\/\n    .search-section {\n        flex: 1;\n        background: var(--theme-surface);\n        border-radius: 12px;\n        padding: 24px;\n        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);\n        transition: background-color 0.3s ease;\n    }\n\n    .search-header {\n        margin-bottom: 16px;\n    }\n\n    .search-title {\n        font-size: 24px;\n        font-weight: 700;\n        color: var(--theme-text);\n        margin-bottom: 6px;\n        display: flex;\n        align-items: center;\n        gap: 8px;\n    }\n\n    .search-title .highlight {\n        background: var(--theme-primary-gradient);\n        -webkit-background-clip: text;\n        -webkit-text-fill-color: transparent;\n        background-clip: text;\n        font-weight: 800;\n        letter-spacing: 1px;\n    }\n\n    .search-subtitle {\n        font-size: 13px;\n        color: var(--theme-text-secondary);\n        line-height: 1.5;\n    }\n\n    .search-box-wrapper {\n        position: relative;\n        margin-bottom: 16px;\n    }\n\n    .search-input-box {\n        display: flex;\n        align-items: center;\n        background: var(--theme-background);\n        border-radius: 10px;\n        border: 2px solid transparent;\n        transition: all 0.3s ease;\n        overflow: hidden;\n    }\n\n    .search-input-box:focus-within {\n        border-color: var(--theme-primary);\n        background: var(--theme-surface);\n        box-shadow: 0 0 0 3px rgba(255, 107, 107, 0.1);\n    }\n\n    .search-icon {\n        width: 44px;\n        height: 44px;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        color: var(--theme-text-secondary);\n        font-size: 18px;\n    }\n\n    .search-input-box input {\n        flex: 1;\n        height: 44px;\n        border: none;\n        background: transparent;\n        font-size: 14px;\n        color: var(--theme-text);\n        outline: none;\n    }\n\n    .search-input-box input::placeholder {\n        color: var(--theme-text-secondary);\n    }\n\n    .input-search-icon {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        width: 36px;\n        height: 44px;\n        color: var(--theme-text-secondary);\n        flex-shrink: 0;\n    }\n\n    .search-btn {\n        height: 38px;\n        padding: 0 20px;\n        margin: 3px;\n        background: var(--theme-primary-gradient);\n        color: #fff;\n        border: none;\n        border-radius: 8px;\n        font-size: 13px;\n        font-weight: 500;\n        cursor: pointer;\n        transition: all 0.3s ease;\n        display: flex;\n        align-items: center;\n        gap: 4px;\n    }\n\n    .search-btn:hover {\n        transform: translateY(-1px);\n        box-shadow: 0 4px 10px rgba(255, 107, 107, 0.35);\n    }\n\n    \/* 热词区域 *\/\n    .hot-keywords {\n        margin-top: 12px;\n    }\n\n    .hot-keywords-label {\n        font-size: 12px;\n        color: var(--theme-text-secondary);\n        margin-bottom: 8px;\n    }\n\n    .hot-keywords-list {\n        display: flex;\n        flex-wrap: wrap;\n        gap: 8px;\n    }\n\n    .hot-keyword {\n        padding: 5px 12px;\n        background: var(--theme-background);\n        border-radius: 16px;\n        font-size: 12px;\n        color: var(--theme-text-secondary);\n        cursor: pointer;\n        transition: all 0.2s ease;\n        border: 1px solid transparent;\n    }\n\n    .hot-keyword:hover {\n        background: rgba(255, 107, 107, 0.1);\n        color: var(--theme-primary);\n        border-color: rgba(255, 107, 107, 0.3);\n    }\n\n    \/* 提示文字 *\/\n    .search-tips {\n        margin-top: 0;\n        padding-top: 2px;\n        font-size: 11px;\n        color: var(--theme-text-secondary);\n        line-height: 1.5;\n    }\n\n    \/* TMDB 影视信息 *\/\n    .tmdb-info {\n        display: flex;\n        gap: 10px;\n        margin-top: 10px;\n        padding: 10px;\n        background: var(--theme-background);\n        border-radius: 6px;\n        max-width: 100%;\n        box-sizing: border-box;\n    }\n\n    .tmdb-poster {\n        flex-shrink: 0;\n        width: 60px;\n        height: 90px;\n        border-radius: 4px;\n        overflow: hidden;\n        background: var(--theme-border);\n    }\n\n    .tmdb-poster img {\n        width: 100%;\n        height: 100%;\n        object-fit: cover;\n    }\n\n    .tmdb-content {\n        flex: 1;\n        min-width: 0;\n        overflow: hidden;\n    }\n\n    .tmdb-title {\n        margin-bottom: 2px;\n        white-space: nowrap;\n        overflow: hidden;\n        text-overflow: ellipsis;\n    }\n\n    .tmdb-title-cn {\n        font-size: 14px;\n        font-weight: 600;\n        color: var(--theme-text);\n    }\n\n    .tmdb-title-en {\n        font-size: 11px;\n        color: var(--theme-text-secondary);\n        margin-left: 4px;\n    }\n\n    .tmdb-year {\n        font-size: 11px;\n        color: var(--theme-primary);\n        margin-bottom: 4px;\n    }\n\n    .tmdb-overview {\n        font-size: 11px;\n        color: var(--theme-text-secondary);\n        line-height: 1.5;\n        display: -webkit-box;\n        -webkit-line-clamp: 3;\n        line-clamp: 3;\n        -webkit-box-orient: vertical;\n        overflow: hidden;\n    }\n\n    \/* 右侧信息卡片 *\/\n    .info-section {\n        width: 320px;\n        display: flex;\n        flex-direction: column;\n        gap: 12px;\n    }\n\n    .info-card {\n        background: var(--theme-surface);\n        border-radius: 12px;\n        padding: 16px;\n        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);\n        transition: background-color 0.3s ease;\n    }\n\n    .info-card-header {\n        display: flex;\n        justify-content: space-between;\n        align-items: center;\n        margin-bottom: 12px;\n    }\n\n    .info-card-title {\n        font-size: 14px;\n        font-weight: 600;\n        color: var(--theme-text);\n    }\n\n    .info-card-more {\n        font-size: 11px;\n        color: var(--theme-text-secondary);\n        cursor: pointer;\n    }\n\n    .stats-grid {\n        display: flex;\n        justify-content: space-between;\n        gap: 12px;\n    }\n\n    .stat-item {\n        text-align: center;\n        flex: 1;\n    }\n\n    .stat-label {\n        font-size: 11px;\n        color: var(--theme-text-secondary);\n        margin-bottom: 4px;\n    }\n\n    .stat-value {\n        font-size: 18px;\n        font-weight: 700;\n        color: var(--theme-text);\n    }\n\n    \/* 资源缺失卡片 *\/\n    .resource-missing {\n        background: var(--theme-background);\n        border-radius: 10px;\n        padding: 16px;\n        text-align: center;\n    }\n\n    .resource-missing-icon {\n        width: 40px;\n        height: 40px;\n        background: var(--theme-primary-gradient);\n        border-radius: 50%;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        margin: 0 auto 10px;\n        color: #fff;\n        font-size: 18px;\n    }\n\n    .resource-missing-title {\n        font-size: 13px;\n        font-weight: 600;\n        color: var(--theme-text);\n        margin-bottom: 4px;\n    }\n\n    .resource-missing-desc {\n        font-size: 11px;\n        color: var(--theme-text-secondary);\n        margin-bottom: 12px;\n    }\n\n    .resource-missing-btns {\n        display: flex;\n        gap: 8px;\n        justify-content: center;\n    }\n\n    .resource-btn {\n        padding: 6px 16px;\n        border-radius: 16px;\n        font-size: 12px;\n        cursor: pointer;\n        transition: all 0.2s ease;\n        border: none;\n    }\n\n    .resource-btn-primary {\n        background: var(--theme-primary-gradient);\n        color: #fff;\n    }\n\n    .resource-btn-primary:hover {\n        transform: translateY(-1px);\n        box-shadow: 0 4px 10px rgba(255, 107, 107, 0.3);\n    }\n\n    .resource-btn-secondary {\n        background: var(--theme-surface);\n        color: var(--theme-text-secondary);\n        border: 1px solid var(--theme-border);\n    }\n\n    .resource-btn-secondary:hover {\n        border-color: var(--theme-primary);\n        color: var(--theme-primary);\n    }\n\n    \/* 搜索结果区域 *\/\n    .search-result-section {\n        margin-top: 16px;\n        display: none;\n    }\n    \n    .search-result-section.show {\n        display: block;\n    }\n    \n    .search-result-header {\n        display: flex;\n        flex-direction: column;\n        margin-bottom: 12px;\n        gap: 10px;\n    }\n    \n    .search-result-actions {\n        display: flex;\n        align-items: center;\n        gap: 10px;\n    }\n\n    .search-result-filter-row {\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        width: 100%;\n        gap: 10px;\n    }\n\n    .pan-type-tabs {\n        display: flex;\n        gap: 6px;\n        background: var(--theme-background);\n        padding: 4px;\n        border-radius: 20px;\n    }\n    \n    .pan-type-tab {\n        padding: 4px 14px;\n        font-size: 12px;\n        color: var(--theme-text-secondary);\n        cursor: pointer;\n        border-radius: 16px;\n        transition: all 0.2s ease;\n        user-select: none;\n    }\n    \n    .pan-type-tab:hover {\n        color: var(--theme-primary);\n    }\n    \n    .pan-type-tab.active {\n        background: var(--theme-primary);\n        color: #fff;\n        font-weight: 600;\n    }\n\n    \/* 移动端网盘类型按钮组 - 默认隐藏 *\/\n    .pan-type-select-wrapper {\n        display: none;\n        flex-direction: column;\n        gap: 8px;\n        width: 100%;\n    }\n\n    .pan-type-header {\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        width: 100%;\n    }\n\n    .pan-type-header .search-result-close {\n        display: none;\n        font-size: 11px;\n        padding: 3px 6px;\n    }\n\n    .pan-type-label {\n        font-size: 11px;\n        color: var(--theme-text-secondary);\n        font-weight: 500;\n    }\n\n    .pan-type-buttons {\n        display: flex;\n        flex-wrap: wrap;\n        gap: 5px;\n    }\n\n    .pan-type-btn {\n        padding: 3px 10px;\n        font-size: 11px;\n        border: 1px solid var(--theme-border);\n        border-radius: 10px;\n        background: var(--theme-surface);\n        color: var(--theme-text-secondary);\n        cursor: pointer;\n        transition: all 0.2s ease;\n        white-space: nowrap;\n    }\n\n    .pan-type-btn:hover {\n        border-color: var(--theme-primary);\n        color: var(--theme-primary);\n    }\n\n    .pan-type-btn.active {\n        background: var(--theme-primary-gradient);\n        border-color: var(--theme-primary);\n        color: #fff;\n        font-weight: 500;\n    }\n\n    \/* 旧的下拉列表样式 - 保留兼容 *\/\n    .pan-type-dropdown {\n        display: none;\n    }\n\n    \/* 移动端适配 *\/\n    @media screen and (max-width: 768px) {\n        .pan-type-tabs {\n            display: none;\n        }\n\n        .pan-type-select-wrapper {\n            display: flex;\n        }\n\n        .pan-type-header .search-result-close {\n            display: inline-flex;\n        }\n\n        .desktop-close {\n            display: none;\n        }\n\n        \/* 隐藏右侧信息卡片模块 *\/\n        .info-section {\n            display: none;\n        }\n    }\n    \n    .search-result-title {\n        display: flex;\n        align-items: center;\n        gap: 6px;\n        font-size: 18px;\n        font-weight: 700;\n        color: var(--theme-text);\n    }\n\n    .search-result-title-icon {\n        color: var(--theme-primary);\n    }\n\n    .search-result-count {\n        font-size: 12px;\n        color: var(--theme-text-secondary);\n    }\n\n    .search-result-close {\n        cursor: pointer;\n        color: var(--theme-text-secondary);\n        font-size: 14px;\n        padding: 4px 8px;\n        border-radius: 4px;\n        transition: all 0.2s ease;\n    }\n\n    .search-result-close:hover {\n        background: var(--theme-background);\n        color: var(--theme-text);\n    }\n\n    .search-result-list {\n        display: flex;\n        flex-direction: column;\n        gap: 12px;\n    }\n\n    .search-result-item {\n        display: flex;\n        align-items: flex-start;\n        gap: 16px;\n        padding: 16px;\n        background: var(--theme-surface);\n        border-radius: 12px;\n        border: 1px solid var(--theme-border);\n        transition: all 0.25s ease;\n        cursor: pointer;\n        text-decoration: none;\n        color: inherit;\n    }\n\n    .search-result-item:hover {\n        border-color: var(--theme-primary);\n        box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);\n    }\n\n    .search-result-cover {\n        width: 100px;\n        height: 130px;\n        border-radius: 10px;\n        overflow: hidden;\n        flex-shrink: 0;\n        background: var(--theme-background);\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        color: var(--theme-text-secondary);\n        font-size: 12px;\n    }\n\n    .search-result-cover img {\n        width: 100%;\n        height: 100%;\n        object-fit: cover;\n    }\n\n    .search-result-info {\n        flex: 1;\n        min-width: 0;\n        display: flex;\n        flex-direction: column;\n        gap: 10px;\n    }\n\n    .search-result-name {\n        font-size: 15px;\n        font-weight: 700;\n        color: var(--theme-text);\n        line-height: 1.4;\n        display: -webkit-box;\n        -webkit-line-clamp: 2;\n        line-clamp: 2;\n        -webkit-box-orient: vertical;\n        overflow: hidden;\n    }\n\n    .search-result-desc {\n        font-size: 13px;\n        color: var(--theme-text-secondary);\n        line-height: 1.6;\n        display: -webkit-box;\n        -webkit-line-clamp: 2;\n        line-clamp: 2;\n        -webkit-box-orient: vertical;\n        overflow: hidden;\n    }\n    \n    .search-result-meta {\n        display: flex;\n        align-items: center;\n        flex-wrap: wrap;\n        gap: 6px;\n    }\n    \n    .search-result-tag {\n        display: inline-flex;\n        align-items: center;\n        gap: 3px;\n        padding: 3px 9px;\n        border-radius: 14px;\n        font-size: 11px;\n        white-space: nowrap;\n    }\n    \n    .search-result-tag.type {\n        background: var(--theme-primary);\n        color: #fff;\n    }\n\n    .search-result-tag.source {\n        background: var(--theme-background);\n        color: var(--theme-text-secondary);\n        border: 1px solid var(--theme-border);\n    }\n\n    .search-result-tag.time {\n        background: var(--theme-card);\n        color: var(--theme-text);\n    }\n    \n    .search-result-actions {\n        flex-shrink: 0;\n        display: flex;\n        flex-direction: column;\n        gap: 8px;\n        align-items: flex-end;\n    }\n    \n    .search-result-btn {\n        padding: 5px 16px;\n        border-radius: 18px;\n        font-size: 12px;\n        cursor: pointer;\n        transition: all 0.2s ease;\n        text-align: center;\n        min-width: 70px;\n    }\n    \n    .search-result-btn.valid {\n        background: var(--theme-card);\n        color: var(--theme-text);\n        border: 1px solid var(--theme-border);\n    }\n\n    .search-result-btn.detail {\n        background: var(--theme-background);\n        color: var(--theme-text-secondary);\n        border: none;\n    }\n\n    .search-result-btn.get {\n        background: var(--theme-primary-gradient);\n        color: #fff;\n        border: none;\n        font-weight: 600;\n        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n    }\n\n    .search-result-loading,\n    .search-result-empty {\n        text-align: center;\n        padding: 40px 20px;\n        color: var(--theme-text-secondary);\n        font-size: 14px;\n    }\n\n    .search-result-loading {\n        display: flex;\n        flex-direction: column;\n        align-items: center;\n        gap: 16px;\n    }\n\n    .search-result-loading i {\n        animation: spin 1s linear infinite;\n        font-size: 32px;\n        color: var(--theme-primary);\n    }\n\n    .search-result-loading .loading-text {\n        position: relative;\n    }\n\n    .search-result-loading .loading-text::after {\n        content: '';\n        animation: loadingDots 1.5s steps(4, end) infinite;\n    }\n\n    @keyframes loadingDots {\n        0% { content: ''; }\n        25% { content: '.'; }\n        50% { content: '..'; }\n        75% { content: '...'; }\n        100% { content: ''; }\n    }\n\n    .search-result-loading .loading-pulse {\n        width: 60px;\n        height: 60px;\n        border-radius: 50%;\n        background: var(--theme-primary-gradient);\n        opacity: 0.3;\n        animation: pulse 1.5s ease-in-out infinite;\n        position: absolute;\n    }\n\n    .search-result-loading .loading-pulse:nth-child(2) {\n        animation-delay: 0.5s;\n    }\n\n    .search-result-loading .loading-pulse:nth-child(3) {\n        animation-delay: 1s;\n    }\n\n    @keyframes pulse {\n        0% {\n            transform: scale(0.8);\n            opacity: 0.5;\n        }\n        50% {\n            transform: scale(1.2);\n            opacity: 0.2;\n        }\n        100% {\n            transform: scale(0.8);\n            opacity: 0.5;\n        }\n    }\n\n    .search-result-loading .loading-wrapper {\n        position: relative;\n        width: 60px;\n        height: 60px;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n    }\n\n    .search-result-loading .loading-wrapper i {\n        position: relative;\n        z-index: 1;\n    }\n\n    \/* 第三方热播榜区域 *\/\n    .ranking-section {\n        margin-top: 16px;\n    }\n    \n    .ranking-header {\n        margin-bottom: 12px;\n    }\n    \n    .ranking-title {\n        display: flex;\n        align-items: center;\n        gap: 6px;\n        font-size: 18px;\n        font-weight: 700;\n        color: var(--theme-text);\n        margin-bottom: 4px;\n    }\n\n    .ranking-title-icon {\n        color: var(--theme-primary);\n    }\n\n    .ranking-subtitle {\n        font-size: 12px;\n        color: var(--theme-text-secondary);\n    }\n\n    \/* Tab 切换 *\/\n    .tab-list {\n        display: flex;\n        gap: 4px;\n        background: var(--theme-surface);\n        border-radius: 8px;\n        padding: 8px;\n        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);\n        margin-bottom: 8px;\n        transition: background-color 0.3s ease;\n    }\n\n    .tab-item {\n        padding: 4px 12px;\n        font-size: 12px;\n        color: var(--theme-text-secondary);\n        cursor: pointer;\n        border-radius: 12px;\n        transition: all 0.2s ease;\n        border: none;\n        background: transparent;\n    }\n\n    .tab-item.active {\n        background: var(--theme-primary-gradient);\n        color: #fff;\n    }\n\n    .tab-item:hover:not(.active) {\n        background: var(--theme-background);\n        color: var(--theme-text);\n    }\n    \n    .tab-refresh {\n        margin-left: auto;\n        display: flex;\n        align-items: center;\n        gap: 3px;\n        font-size: 11px;\n        color: #999;\n        cursor: pointer;\n        padding: 3px 8px;\n        border-radius: 10px;\n        transition: all 0.2s ease;\n    }\n    \n    .tab-refresh:hover {\n        background: var(--theme-background);\n        color: var(--theme-text);\n    }\n\n    \/* 三列卡片网格 *\/\n    .ranking-grid {\n        display: grid;\n        grid-template-columns: repeat(3, 1fr);\n        gap: 12px;\n    }\n\n    .ranking-card {\n        background: var(--theme-surface);\n        border-radius: 12px;\n        padding: 14px;\n        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);\n        transition: background-color 0.3s ease;\n    }\n\n    .ranking-card-header {\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        margin-bottom: 10px;\n        padding-bottom: 10px;\n        border-bottom: 1px solid var(--theme-border);\n    }\n    \n    .ranking-card-title-group {\n        display: flex;\n        align-items: center;\n        gap: 8px;\n    }\n    \n    .ranking-card-icon {\n        width: 24px;\n        height: 24px;\n        border-radius: 6px;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        font-size: 12px;\n    }\n    \n    .ranking-icon-hot {\n        background: rgba(255, 107, 107, 0.1);\n        color: var(--theme-primary);\n    }\n    \n    .ranking-icon-new {\n        background: rgba(255, 142, 83, 0.1);\n        color: var(--theme-primary-light);\n    }\n    \n    .ranking-icon-good {\n        background: rgba(255, 169, 64, 0.1);\n        color: #ffa940;\n    }\n    \n    .ranking-card-name {\n        font-size: 13px;\n        font-weight: 600;\n        color: var(--theme-text);\n    }\n\n    .ranking-card-date {\n        font-size: 11px;\n        color: var(--theme-text-secondary);\n        margin-left: 8px;\n    }\n\n    .ranking-card-more {\n        font-size: 11px;\n        color: var(--theme-text-secondary);\n        cursor: pointer;\n        text-decoration: none;\n        transition: color 0.2s ease;\n    }\n    \n    .ranking-card-more:hover {\n        color: var(--theme-primary);\n    }\n    \n    \/* 带封面的列表项 *\/\n    .ranking-list {\n        display: flex;\n        flex-direction: column;\n        gap: 8px;\n    }\n    \n    .ranking-item {\n        display: flex;\n        align-items: center;\n        gap: 8px;\n        padding: 6px;\n        border-radius: 8px;\n        transition: all 0.2s ease;\n        cursor: pointer;\n        text-decoration: none;\n    }\n    \n    .ranking-item:hover {\n        background: var(--theme-background);\n    }\n\n    .ranking-rank {\n        width: 22px;\n        height: 22px;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        border-radius: 6px;\n        font-size: 12px;\n        font-weight: 700;\n        color: var(--theme-text-secondary);\n        background: var(--theme-background);\n        flex-shrink: 0;\n    }\n    \n    .ranking-rank.top1 {\n        background: var(--theme-primary-gradient);\n        color: #fff;\n    }\n    .ranking-rank.top2 {\n        background: var(--theme-secondary-gradient);\n        color: #fff;\n    }\n    .ranking-rank.top3 {\n        background: var(--theme-tertiary-gradient);\n        color: #fff;\n    }\n    \n    .ranking-cover {\n        width: 40px;\n        height: 54px;\n        border-radius: 6px;\n        overflow: hidden;\n        background: var(--theme-border);\n        flex-shrink: 0;\n    }\n\n    .ranking-cover img {\n        width: 100%;\n        height: 100%;\n        object-fit: cover;\n    }\n\n    .ranking-info {\n        flex: 1;\n        min-width: 0;\n    }\n\n    .ranking-item-title {\n        font-size: 13px;\n        font-weight: 500;\n        color: var(--theme-text);\n        overflow: hidden;\n        text-overflow: ellipsis;\n        white-space: nowrap;\n        margin-bottom: 2px;\n    }\n    \n    .ranking-meta {\n        display: flex;\n        align-items: center;\n        gap: 4px;\n        font-size: 10px;\n        color: var(--theme-text-secondary);\n    }\n\n    .ranking-meta span {\n        white-space: nowrap;\n    }\n\n    .ranking-score {\n        margin-left: auto;\n        font-size: 11px;\n        color: var(--theme-text-secondary);\n        flex-shrink: 0;\n    }\n    \n    .ranking-item:hover .ranking-item-title {\n        color: var(--theme-primary);\n    }\n\n    @media (max-width: 1024px) {\n        .home-container {\n            width: 100%;\n            padding: 16px;\n        }\n        .home-main {\n            flex-direction: column;\n        }\n        .info-section {\n            width: 100%;\n        }\n        .ranking-grid {\n            grid-template-columns: repeat(2, 1fr);\n        }\n    }\n\n    @media (max-width: 768px) {\n        .search-section {\n            padding: 16px;\n        }\n        .search-title {\n            font-size: 18px;\n            margin-bottom: 4px;\n        }\n        .search-subtitle {\n            font-size: 11px;\n        }\n        .search-input-box input {\n            height: 40px;\n            font-size: 13px;\n        }\n        .search-btn {\n            height: 34px;\n            padding: 0 16px;\n            font-size: 12px;\n        }\n        .input-search-icon {\n            height: 40px;\n            width: 32px;\n        }\n        .hot-keyword {\n            padding: 4px 10px;\n            font-size: 11px;\n        }\n        .search-tips {\n            font-size: 10px;\n        }\n        .tmdb-title-cn {\n            font-size: 12px;\n        }\n        .tmdb-title-en {\n            font-size: 10px;\n        }\n        .tmdb-year {\n            font-size: 10px;\n        }\n        .tmdb-overview {\n            font-size: 10px;\n        }\n        .stats-grid {\n            gap: 10px;\n        }\n        .stat-value {\n            font-size: 16px;\n        }\n        \/* 手机端：榜单卡片堆叠显示，每个卡片内部是网格 *\/\n        .ranking-grid {\n            grid-template-columns: 1fr;\n            gap: 12px;\n        }\n        .ranking-card {\n            padding: 10px;\n        }\n        .ranking-card-header {\n            padding-bottom: 8px;\n            margin-bottom: 8px;\n        }\n        .ranking-card-icon {\n            width: 20px;\n            height: 20px;\n            font-size: 11px;\n        }\n        .ranking-card-name {\n            font-size: 13px;\n        }\n        .ranking-card-date {\n            font-size: 10px;\n        }\n        .ranking-card-more {\n            font-size: 10px;\n        }\n        \/* 列表项改为紧凑卡片 *\/\n        .ranking-list {\n            gap: 4px;\n        }\n        .ranking-item {\n            padding: 4px;\n            gap: 4px;\n        }\n        .ranking-rank {\n            width: 16px;\n            height: 16px;\n            font-size: 10px;\n            border-radius: 4px;\n        }\n        .ranking-cover {\n            width: 28px;\n            height: 38px;\n            border-radius: 3px;\n        }\n        .ranking-info {\n            min-width: 0;\n        }\n        .ranking-title {\n            font-size: 10px;\n            -webkit-line-clamp: 1;\n            line-clamp: 1;\n        }\n        .ranking-meta {\n            font-size: 9px;\n        }\n        \n        \/* 隐藏第三方热播榜标题和副标题 *\/\n        .ranking-section .ranking-title,\n        .ranking-section .ranking-subtitle {\n            display: none !important;\n        }\n        \n        \/* 手机端卡片网格样式 *\/\n        .ranking-grid-mobile {\n            display: grid;\n            grid-template-columns: repeat(3, 1fr);\n            gap: 8px;\n            padding: 4px;\n        }\n        \n        .ranking-card-mobile {\n            display: flex;\n            flex-direction: column;\n            text-decoration: none;\n            color: inherit;\n        }\n        \n        .ranking-card-cover {\n            position: relative;\n            width: 100%;\n            aspect-ratio: 3\/4;\n            border-radius: 6px;\n            overflow: hidden;\n            background: #f0f0f0;\n        }\n        \n        .ranking-card-cover img {\n            width: 100%;\n            height: 100%;\n            object-fit: cover;\n        }\n        \n        .ranking-card-rank {\n            position: absolute;\n            top: 4px;\n            left: 4px;\n            padding: 2px 6px;\n            font-size: 10px;\n            font-weight: 700;\n            color: #fff;\n            background: rgba(0,0,0,0.5);\n            border-radius: 4px;\n            z-index: 1;\n        }\n        \n        .ranking-card-rank.top1 {\n            background: var(--theme-primary-gradient);\n        }\n        \n        .ranking-card-rank.top2 {\n            background: linear-gradient(135deg, #ff8e53 0%, #ffa940 100%);\n        }\n        \n        .ranking-card-rank.top3 {\n            background: linear-gradient(135deg, #ffa940 0%, #ffc53d 100%);\n        }\n        \n        .ranking-card-title {\n            margin-top: 6px;\n            font-size: 12px;\n            font-weight: 500;\n            color: #333;\n            line-height: 1.4;\n            overflow: hidden;\n            text-overflow: ellipsis;\n            display: -webkit-box;\n            -webkit-line-clamp: 2;\n            line-clamp: 2;\n            -webkit-box-orient: vertical;\n            text-align: center;\n        }\n        \n        .tab-list {\n            overflow-x: auto;\n            flex-wrap: nowrap;\n            padding: 6px;\n            gap: 3px;\n        }\n        \n        .tab-item {\n            padding: 3px 10px;\n            font-size: 11px;\n            border-radius: 10px;\n            white-space: nowrap;\n        }\n        \n        .tab-refresh {\n            font-size: 10px;\n            padding: 2px 6px;\n        }\n        \n        \/* 搜索结果手机端适配 *\/\n        .search-result-header {\n            margin-bottom: 8px;\n            gap: 8px;\n        }\n        .search-result-title {\n            font-size: 14px;\n        }\n        .search-result-title-icon {\n            font-size: 14px;\n        }\n        .search-result-count {\n            font-size: 11px;\n        }\n        .search-result-close {\n            font-size: 12px;\n        }\n        .pan-type-select {\n            padding: 4px 20px 4px 10px;\n            font-size: 12px;\n            min-width: 80px;\n        }\n        .pan-type-label {\n            padding: 4px 6px 4px 10px;\n            font-size: 12px;\n        }\n        .search-result-item {\n            padding: 12px;\n            gap: 10px;\n        }\n        .search-result-cover {\n            width: 70px;\n            height: 90px;\n        }\n        .search-result-info {\n            gap: 6px;\n        }\n        .search-result-name {\n            font-size: 13px;\n            line-height: 1.3;\n        }\n        .search-result-desc {\n            font-size: 11px;\n            line-height: 1.4;\n        }\n        .search-result-tag {\n            padding: 2px 6px;\n            font-size: 10px;\n        }\n        .search-result-actions {\n            gap: 6px;\n        }\n        .search-result-btn {\n            padding: 4px 10px;\n            font-size: 11px;\n            min-width: 60px;\n            border-radius: 14px;\n        }\n        .search-result-loading,\n        .search-result-empty {\n            padding: 30px 16px;\n            font-size: 12px;\n        }\n        .search-result-loading i {\n            font-size: 24px;\n        }\n    }\n    \n    \/* 手机端导航抽屉 - 紧凑样式 *\/\n    .nav-drawer .el-dialog__header {\n        display: none;\n    }\n    .nav-drawer .el-dialog__body {\n        padding: 0;\n    }\n    .nav-drawer-content {\n        background: var(--theme-surface);\n    }\n    .nav-drawer-header {\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        padding: 12px 16px;\n        border-bottom: 1px solid var(--theme-border);\n    }\n    .nav-drawer-title {\n        font-size: 14px;\n        font-weight: 600;\n        color: var(--theme-text);\n    }\n    .nav-drawer-close {\n        font-size: 16px;\n        color: var(--theme-text-secondary);\n        cursor: pointer;\n        padding: 4px;\n        width: 28px;\n        height: 28px;\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        border-radius: 6px;\n        transition: all 0.2s ease;\n    }\n    .nav-drawer-close:hover {\n        background: var(--theme-background);\n        color: var(--theme-text);\n    }\n    .nav-drawer-menu {\n        padding: 8px;\n    }\n    .nav-drawer-item {\n        display: flex;\n        align-items: center;\n        padding: 10px 12px;\n        border-radius: 8px;\n        color: var(--theme-text);\n        text-decoration: none;\n        transition: all 0.2s ease;\n        margin-bottom: 4px;\n        font-size: 13px;\n    }\n    .nav-drawer-item:last-child {\n        margin-bottom: 0;\n    }\n    .nav-drawer-item:hover {\n        background: var(--theme-background);\n    }\n    .nav-drawer-item.active {\n        background: var(--theme-primary-gradient);\n        color: #fff;\n    }\n<\/style>\n<\/head>\n\n<body>\n    <div class=\"headBg\" style=\"background-image: url();display:none;\"><\/div>\n    <div id=\"app\" v-cloak>\n        \n        <!-- 顶部导航栏 -->\n        <div class=\"top-nav\">\n            <div class=\"top-nav-box\">\n                <a href=\"\/\" class=\"top-nav-logo\">\n                                        <img class=\"logo-img\" src=\"\/uploads\/image\/20260420\/90d8308e9c561f0b59207b53f0ac1694.png\" alt=\"爱搜网盘分享站\">\n                                        <div class=\"logo-text\">\n                        <div class=\"logo-title-row\">\n                            <span class=\"logo-name\">爱搜网盘分享站<\/span>\n                            <span class=\"logo-version\">Ver2.0<\/span>\n                        <\/div>\n                        <span class=\"logo-subtitle\">全网领先的聚合网盘搜索引擎，实时聚合夸克、百度网盘等平台资源，每日更新 影视、书籍、软件、教程等内容。独家失效检测系统，确保资源秒搜可用，告别 &ldquo;链接过期&rdquo; 烦恼！一站式满足办公、学习、娱乐资源需求，来爱搜，找资源更简单！<\/span>\n                    <\/div>\n                <\/a>\n                \n                <div class=\"top-nav-menu\">\n                    <a href=\"\/\" class=\"nav-menu-item active\">搜索<\/a>\n                    <a href=\"\/ranking\" class=\"nav-menu-item\">热播榜<\/a>\n                    <a href=\"\/copyright.html\" class=\"nav-menu-item\">侵权投诉<\/a>\n                <\/div>\n                \n                <div class=\"top-nav-actions\">\n                    <!-- 主题切换 -->\n                    <div class=\"theme-switcher\" ref=\"themeSwitcherRef\">\n                        <div class=\"theme-switcher-btn\" @click.stop=\"toggleThemeDropdown\" title=\"切换主题\">\n                            <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                <circle cx=\"12\" cy=\"12\" r=\"5\"><\/circle>\n                                <line x1=\"12\" y1=\"1\" x2=\"12\" y2=\"3\"><\/line>\n                                <line x1=\"12\" y1=\"21\" x2=\"12\" y2=\"23\"><\/line>\n                                <line x1=\"4.22\" y1=\"4.22\" x2=\"5.64\" y2=\"5.64\"><\/line>\n                                <line x1=\"18.36\" y1=\"18.36\" x2=\"19.78\" y2=\"19.78\"><\/line>\n                                <line x1=\"1\" y1=\"12\" x2=\"3\" y2=\"12\"><\/line>\n                                <line x1=\"21\" y1=\"12\" x2=\"23\" y2=\"12\"><\/line>\n                                <line x1=\"4.22\" y1=\"19.78\" x2=\"5.64\" y2=\"18.36\"><\/line>\n                                <line x1=\"18.36\" y1=\"5.64\" x2=\"19.78\" y2=\"4.22\"><\/line>\n                            <\/svg>\n                        <\/div>\n                        <div class=\"theme-dropdown\" v-show=\"showThemeDropdown\">\n                            <div class=\"theme-option\" :class=\"{active: currentTheme === 'red'}\" @click=\"switchTheme('red')\">\n                                <span class=\"theme-dot\" style=\"background: linear-gradient(135deg, #ff6b6b 0%, #ff8e53 100%);\"><\/span>\n                                <span class=\"theme-name\">暖红<\/span>\n                            <\/div>\n                            <div class=\"theme-option\" :class=\"{active: currentTheme === 'blue'}\" @click=\"switchTheme('blue')\">\n                                <span class=\"theme-dot\" style=\"background: linear-gradient(135deg, #4a90e2 0%, #5fa3f0 100%);\"><\/span>\n                                <span class=\"theme-name\">海洋蓝<\/span>\n                            <\/div>\n                            <div class=\"theme-option\" :class=\"{active: currentTheme === 'green'}\" @click=\"switchTheme('green')\">\n                                <span class=\"theme-dot\" style=\"background: linear-gradient(135deg, #27ae60 0%, #2ecc71 100%);\"><\/span>\n                                <span class=\"theme-name\">森林绿<\/span>\n                            <\/div>\n                            <div class=\"theme-option\" :class=\"{active: currentTheme === 'dark'}\" @click=\"switchTheme('dark')\">\n                                <span class=\"theme-dot\" style=\"background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);\"><\/span>\n                                <span class=\"theme-name\">暗夜黑<\/span>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"nav-menu-icon iconfont icon-caidan\" @click=\"drawer = true\"><\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        \n        <div class=\"home-container\">\n            <!-- 主搜索区域 -->\n            <div class=\"home-main\">\n                <!-- 左侧搜索 -->\n                <div class=\"search-section\">\n                    <div class=\"search-header\">\n                        <div class=\"search-title\">\n                            一站式 <span class=\"highlight\">网盘资源搜索<\/span>\n                        <\/div>\n                        <div class=\"search-subtitle\">\n                            聚合多个网盘来源，快速找到可用链接；同步提供第三方热播榜参考。\n                        <\/div>\n                    <\/div>\n                    \n                    <div class=\"search-box-wrapper\">\n                        <div class=\"search-input-box\">\n                            <span class=\"input-search-icon\">\n                                <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                                    <circle cx=\"11\" cy=\"11\" r=\"8\"><\/circle>\n                                    <path d=\"m21 21-4.35-4.35\"><\/path>\n                                <\/svg>\n                            <\/span>\n                            <input type=\"text\" v-model=\"keyword\" placeholder=\"搜索：片名 \/ 关键词 \/ 主演 \/ 资源名称\" @keyup.enter=\"searchBtn\">\n                            <button class=\"search-btn\" @click=\"searchBtn\">搜索<\/button>\n                        <\/div>\n                    <\/div>\n                    \n                    <!-- 热词 -->\n                    <div class=\"hot-keywords\">\n                        <div class=\"hot-keywords-list\">\n                                                    <\/div>\n                    <\/div>\n                    \n                    <div class=\"search-tips\">\n                        提示：本站仅提供资源索引与搜索服务，链接来源于互联网公开信息，内容归属以实际页面为准。完全免费，请勿相信广告。\n                    <\/div>\n                    \n                    <!-- TMDB 影视信息 -->\n                    <div class=\"tmdb-info\" v-if=\"tmdbData.title\" v-loading=\"tmdbLoading\">\n                        <div class=\"tmdb-poster\">\n                            <img :src=\"tmdbData.poster_url\" :alt=\"tmdbData.title\" v-if=\"tmdbData.poster_url\">\n                        <\/div>\n                        <div class=\"tmdb-content\">\n                            <div class=\"tmdb-title\">\n                                <span class=\"tmdb-title-cn\">{{tmdbData.title}}<\/span>\n                                <span class=\"tmdb-title-en\" v-if=\"tmdbData.original_title\">({{tmdbData.original_title}})<\/span>\n                            <\/div>\n                            <div class=\"tmdb-year\" v-if=\"tmdbData.release_date\">{{tmdbData.release_date.substring(0, 4)}}<\/div>\n                            <div class=\"tmdb-overview\">{{tmdbData.overview}}<\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n                \n                <!-- 右侧信息卡片 -->\n                <div class=\"info-section\">\n                    <!-- 今日概览 -->\n                    <div class=\"info-card\">\n                        <div class=\"info-card-header\">\n                            <span class=\"info-card-title\">今日概览<\/span>\n                            <span class=\"info-card-more\">数据统计<\/span>\n                        <\/div>\n                        <div class=\"stats-grid\">\n                                                        <div class=\"stat-item\">\n                                <div class=\"stat-label\">加载时间<\/div>\n                                <div class=\"stat-value\">251ms<\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    \n                    <!-- 资源求助 -->\n                    <div class=\"info-card\" style=\"background: var(--theme-card-gradient);\">\n                        <div class=\"resource-missing\" style=\"background: transparent; padding: 0;\">\n                            <div class=\"resource-missing-icon\">\n                                <i class=\"iconfont icon-xin\"><\/i>\n                            <\/div>\n                            <div class=\"resource-missing-title\">资源求助<\/div>\n                            <div class=\"resource-missing-desc\">找不到资源？可加入群聊或联系管理员协助查找。<\/div>\n                            <div class=\"resource-missing-btns\">\n                                <button class=\"resource-btn resource-btn-primary\" @click=\"layerVisible = true\">资源求助<\/button>\n                            <\/div>\n                        <\/div>\n                        <div class=\"search-tips\" style=\"margin-top: 16px; padding-top: 16px; text-align: center;\">\n                            提示：本站仅做资源索引，完全免费，请勿相信广告，谨防上当受骗。\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n            \n            <!-- 搜索结果区域 -->\n            <div class=\"search-result-section\" id=\"searchResultSection\">\n                <div class=\"search-result-header\">\n                    <div class=\"search-result-title\">\n                        <span class=\"search-result-title-icon\">🔍<\/span>\n                        搜索结果\n                        <span class=\"search-result-count\" id=\"searchResultCount\"><\/span>\n                    <\/div>\n                                        <div class=\"search-result-filter-row\">\n                        <!-- 桌面端：标签列表 -->\n                        <div class=\"pan-type-tabs\">\n                                                        <span class=\"pan-type-tab active\" data-type=\"0\" onclick=\"switchPanType(this)\">夸克网盘<\/span>\n                                                        <span class=\"pan-type-tab \" data-type=\"2\" onclick=\"switchPanType(this)\">百度网盘<\/span>\n                                                        <span class=\"pan-type-tab \" data-type=\"4\" onclick=\"switchPanType(this)\">迅雷云盘<\/span>\n                                                        <span class=\"pan-type-tab \" data-type=\"3\" onclick=\"switchPanType(this)\">UC网盘<\/span>\n                                                    <\/div>\n                        <!-- 移动端：网盘类型按钮组 -->\n                        <div class=\"pan-type-select-wrapper\">\n                            <div class=\"pan-type-header\">\n                                <span class=\"pan-type-label\">网盘类型<\/span>\n                                <span class=\"search-result-close\" onclick=\"closeSearchResult()\">\n                                    <i class=\"iconfont icon-guanbi\"><\/i> 关闭\n                                <\/span>\n                            <\/div>\n                            <div class=\"pan-type-buttons\">\n                                                                <button class=\"pan-type-btn active\" data-type=\"0\" onclick=\"switchPanTypeMobile(this)\">夸克网盘<\/button>\n                                                                <button class=\"pan-type-btn \" data-type=\"2\" onclick=\"switchPanTypeMobile(this)\">百度网盘<\/button>\n                                                                <button class=\"pan-type-btn \" data-type=\"4\" onclick=\"switchPanTypeMobile(this)\">迅雷云盘<\/button>\n                                                                <button class=\"pan-type-btn \" data-type=\"3\" onclick=\"switchPanTypeMobile(this)\">UC网盘<\/button>\n                                                            <\/div>\n                        <\/div>\n                        <span class=\"search-result-close desktop-close\" onclick=\"closeSearchResult()\">\n                            <i class=\"iconfont icon-guanbi\"><\/i> 关闭\n                        <\/span>\n                    <\/div>\n                <\/div>\n                <div id=\"searchResultContent\">\n                    <div class=\"search-result-loading\">\n                        <div class=\"loading-wrapper\">\n                            <div class=\"loading-pulse\"><\/div>\n                            <div class=\"loading-pulse\"><\/div>\n                            <div class=\"loading-pulse\"><\/div>\n                            <i class=\"iconfont icon-jiazai\"><\/i>\n                        <\/div>\n                        <div class=\"loading-text\">正在全网搜索<\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <!-- 第三方热播榜区域 -->\n            <div class=\"ranking-section\">\n                <div class=\"ranking-header\">\n                    <div class=\"ranking-title\">\n                        <span class=\"ranking-title-icon\">~<\/span>\n                        第三方热播榜\n                    <\/div>\n                    <div class=\"ranking-subtitle\">电影 \/ 电视剧 \/ 动漫 \/ 综艺 \/ 短剧 | 热度榜\/新片榜\/好评榜<\/div>\n                <\/div>\n                \n                <!-- Tab 切换 -->\n                <div class=\"tab-list\">\n                    <button class=\"tab-item active\" data-type=\"电影\">电影<\/button>\n                    <button class=\"tab-item\" data-type=\"电视剧\">电视剧<\/button>\n                    <button class=\"tab-item\" data-type=\"动漫\">动漫<\/button>\n                    <button class=\"tab-item\" data-type=\"综艺\">综艺<\/button>\n                    <button class=\"tab-item\" data-type=\"短剧\">短剧<\/button>\n                    <div class=\"tab-refresh\" onclick=\"app.refreshAllRankings()\">\n                        <i class=\"iconfont icon-shuaxin\"><\/i>\n                        刷新\n                    <\/div>\n                <\/div>\n                \n                <!-- 三列榜单卡片网格 -->\n                <div class=\"ranking-grid\" id=\"rankingGrid\">\n                    <!-- 热搜榜 -->\n                    <div class=\"ranking-card\" data-rank-type=\"最热\">\n                        <div class=\"ranking-card-header\">\n                            <div class=\"ranking-card-title-group\">\n                                <div class=\"ranking-card-icon ranking-icon-hot\">\n                                    <i class=\"iconfont icon-remen\"><\/i>\n                                <\/div>\n                                <div>\n                                    <span class=\"ranking-card-name\">热搜榜<\/span>\n                                    <span class=\"ranking-card-date\">2026-06-07<\/span>\n                                <\/div>\n                            <\/div>\n                            <a href=\"\/ranking\" class=\"ranking-card-more\">查看更多<\/a>\n                        <\/div>\n                        <div class=\"ranking-list\" id=\"ranking-hot\">\n                            <!-- 数据通过 JS 加载 -->\n                        <\/div>\n                    <\/div>\n                    \n                    <!-- 新片榜 -->\n                    <div class=\"ranking-card\" data-rank-type=\"最新\">\n                        <div class=\"ranking-card-header\">\n                            <div class=\"ranking-card-title-group\">\n                                <div class=\"ranking-card-icon ranking-icon-new\">\n                                    <i class=\"iconfont icon-shijian\"><\/i>\n                                <\/div>\n                                <div>\n                                    <span class=\"ranking-card-name\">新片榜<\/span>\n                                    <span class=\"ranking-card-date\">2026-06-07<\/span>\n                                <\/div>\n                            <\/div>\n                            <a href=\"\/ranking\" class=\"ranking-card-more\">查看更多<\/a>\n                        <\/div>\n                        <div class=\"ranking-list\" id=\"ranking-new\">\n                            <!-- 数据通过 JS 加载 -->\n                        <\/div>\n                    <\/div>\n                    \n                    <!-- 好评榜 -->\n                    <div class=\"ranking-card\" data-rank-type=\"好评\">\n                        <div class=\"ranking-card-header\">\n                            <div class=\"ranking-card-title-group\">\n                                <div class=\"ranking-card-icon ranking-icon-good\">\n                                    <i class=\"iconfont icon-haoping\"><\/i>\n                                <\/div>\n                                <div>\n                                    <span class=\"ranking-card-name\">好评榜<\/span>\n                                    <span class=\"ranking-card-date\">2026-06-07<\/span>\n                                <\/div>\n                            <\/div>\n                            <a href=\"\/ranking\" class=\"ranking-card-more\">查看更多<\/a>\n                        <\/div>\n                        <div class=\"ranking-list\" id=\"ranking-good\">\n                            <!-- 数据通过 JS 加载 -->\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        \n        <div class=\"footerBox\">\n    <div class=\"box\">\n        <p>友情链接：<a href=\"https:\/\/24x1.cn\/\" target=\"_blank\">24小时秒收录<\/a><\/p>\n        <p>\n            声明：本站是网盘索引系统,所有内容均来自互联网所提供的公开引用资源，\n未提供资源上传、存储服务。如有侵权请点击右上方联系邮箱进行删除！！！     \n\n© 2025 爱搜网盘 Powered by <a href=\"https:\/\/520so.cc\/\" target=\"_blank\">爱搜导航<\/a>            <a href=\"\/sitemap.xml\" target=\"_blank\">网站地图<\/a>\n        <\/p>\n    <\/div>\n<\/div>\n\n        \n        <!-- 资源弹窗 -->\n        <el-dialog title=\"\" v-model=\"dialogUrl\" class=\"dialogUrlBox\" :close-on-click-modal=\"false\" :style=\"{ backgroundColor: '#fff' }\">\n            <div v-loading=\"dialogLoading\" class=\"dialogUrl\" v-if=\"dialogUrl\" style=\"background: #fff; padding: 20px; border-radius: 12px;\">\n                <div v-if=\"dialogItem.showUrl\" style=\"background: #fff;\">\n                    <!-- 磁力链接特殊处理：显示二维码和迅雷下载 -->\n                    <div v-if=\"dialogItem.showUrl.startsWith('magnet:')\" style=\"background: #fff;\">\n                        <div class=\"title\" style=\"background: #fff;\">磁力资源下载<\/div>\n                        <div class=\"tips\" style=\"background: #fff;\">请使用迅雷APP扫码或点击下方按钮下载<\/div>\n                        <div class=\"qrcode\" id=\"qrcode\" style=\"background: #fff;\"><\/div>\n                        <div class=\"nav\" style=\"text-align: center; padding: 10px 0; background: #fff;\">\n                            <div class=\"item\" style=\"background: #fff;\">\n                                <span class=\"t\">{{dialogItem.title}}<\/span>\n                            <\/div>\n                            <div class=\"item\" style=\"margin-top: 15px; background: #fff;\">\n                                <button @click=\"downloadWithThunder(dialogItem.showUrl, dialogItem.title)\" class=\"btn\" style=\"display: inline-block; padding: 12px 24px; background: #0099ff; color: white; border-radius: 4px; text-decoration: none; font-size: 16px; border: none; cursor: pointer;\">\n                                    <i class=\"iconfont icon-xiazai\"><\/i> 使用迅雷下载\n                                <\/button>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <!-- 非磁力链接正常显示 -->\n                    <div v-else style=\"background: #fff;\">\n                        <template v-show=\"pc_type!=1\">\n                            <div class=\"title\" style=\"background: #fff;\">请使用 <span>{{panTypeMap[dialogItem.is_type] || '夸克APP'}}<\/span> 扫码获取<\/div>\n                            <div class=\"tips\" style=\"background: #fff;\">打开{{panTypeMap[dialogItem.is_type] || '夸克'}}APP- 点击搜索框中的相机 - 点击扫码<\/div>\n                        <\/template>\n                        <div class=\"qrcode\" id=\"qrcode\" style=\"background: #fff;\"><\/div>\n                        <div class=\"nav\" style=\"background: #fff;\">\n                            <div class=\"item\" style=\"background: #fff;\">\n                                <span class=\"t\">{{dialogItem.title}}<\/span>\n                            <\/div>\n                            <div class=\"item\" v-show=\"pc_type!=2\" style=\"background: #fff;\">\n                                <span>资源地址：<\/span>\n                                <a :href=\"dialogItem.showUrl\" target=\"_blank\" rel=\"noopener noreferrer\">{{dialogItem.showUrl}}<\/a>\n                            <\/div>\n                            <div class=\"item\" v-if=\"dialogItem.showUrl\" style=\"margin-top: 10px; background: #fff;\">\n                                <button @click=\"copyDialogUrl(dialogItem.showUrl)\" class=\"btn\" style=\"display: inline-block; padding: 8px 14px; margin-right: 8px; background: #409eff; color: #fff; border-radius: 4px; border: none; cursor: pointer;\">\n                                    复制链接\n                                <\/button>\n                                <button @click=\"openDialogUrl(dialogItem.showUrl)\" class=\"btn\" style=\"display: inline-block; padding: 8px 14px; background: #67c23a; color: #fff; border-radius: 4px; border: none; cursor: pointer;\">\n                                    打开链接\n                                <\/button>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n                <div v-else-if=\"!dialogLoading\" style=\"background: #fff;\">\n                    <div class=\"title\" style=\"background: #fff;\">获取失败<\/div>\n                    <div class=\"tips\" style=\"color: #FF3F3D; background: #fff;\">{{dialogItem.message}}<\/div>\n                <\/div>\n                <div class=\"dialog-statement\" style=\"background: #fff;\">\n                    <p style=\"background: #fff;\">声明：本站链接均由程序自动收集自公开网盘，不存储、不传播任何文件，跳转链接指向网盘官网。<\/p>\n                    <p style=\"background: #fff;\">文件内容请自行鉴别，如发现违规请向网盘平台举报。本站仅供学习交流，无任何收费行为。<\/p>\n                <\/div>\n            <\/div>\n        <\/el-dialog>\n\n        <!-- 群二维码弹窗 -->\n        \n        <!-- 资源求助弹窗 -->\n        <el-dialog v-model=\"layerVisible\" width=\"520\" title=\"资源求助-即时响应\" custom-class=\"qrcode-dialog\" :style=\"{ backgroundColor: '#fff' }\">\n            <template #header>\n                <div style=\"background: #fff; padding: 15px; font-weight: bold; border-bottom: 1px solid #eee;\">资源求助-即时响应<\/div>\n            <\/template>\n            <div style=\"padding: 18px; background: #fff;\">\n                <div style=\"margin-bottom: 14px; padding: 10px 12px; color: #c26b00; border: 1px solid #f1d3a3; border-radius: 8px; background: #fff7ea;\">\n                    聚合全网优质资源，欢迎收藏。若暂时没有您需要的，请提交资源名称与说明，我们会尽快添加。\n                <\/div>\n\n                <el-form label-position=\"top\">\n                    <el-form-item label=\"* 资源名称\">\n                        <el-input\n                            v-model=\"helpForm.resource_name\"\n                            maxlength=\"120\"\n                            placeholder=\"请输入您需要的资源名称（必填）\">\n                        <\/el-input>\n                    <\/el-form-item>\n\n                    <el-form-item label=\"* 网盘类型\">\n                        <el-select v-model=\"helpForm.pan_type\" placeholder=\"请选择网盘类型（必选）\" style=\"width: 100%;\">\n                            <el-option\n                                v-for=\"item in allPanTypeOptions\"\n                                :key=\"item.id\"\n                                :label=\"item.name\"\n                                :value=\"String(item.id)\">\n                            <\/el-option>\n                        <\/el-select>\n                    <\/el-form-item>\n\n                    <el-form-item label=\"* 资源类型\">\n                        <el-select v-model=\"helpForm.resource_type\" placeholder=\"请选择资源类型（必选）\" style=\"width: 100%;\">\n                            <el-option label=\"电影\" value=\"电影\"><\/el-option>\n                            <el-option label=\"电视剧\" value=\"电视剧\"><\/el-option>\n                            <el-option label=\"动漫\" value=\"动漫\"><\/el-option>\n                            <el-option label=\"综艺\" value=\"综艺\"><\/el-option>\n                            <el-option label=\"短剧\" value=\"短剧\"><\/el-option>\n                            <el-option label=\"纪录片\" value=\"纪录片\"><\/el-option>\n                            <el-option label=\"动画电影\" value=\"动画电影\"><\/el-option>\n                            <el-option label=\"音乐\/演唱会\" value=\"音乐\/演唱会\"><\/el-option>\n                            <el-option label=\"课程\/学习资料\" value=\"课程\/学习资料\"><\/el-option>\n                            <el-option label=\"软件\/应用\" value=\"软件\/应用\"><\/el-option>\n                            <el-option label=\"游戏\" value=\"游戏\"><\/el-option>\n                            <el-option label=\"电子书\/小说\" value=\"电子书\/小说\"><\/el-option>\n                            <el-option label=\"其他\" value=\"其他\"><\/el-option>\n                        <\/el-select>\n                    <\/el-form-item>\n\n                    <el-form-item label=\"* 您从哪里知道我们\">\n                        <el-select v-model=\"helpForm.source_channel\" placeholder=\"请选择渠道（必选）\" style=\"width: 100%;\">\n                            <el-option label=\"朋友推荐\" value=\"朋友推荐\"><\/el-option>\n                            <el-option label=\"搜索引擎\" value=\"搜索引擎\"><\/el-option>\n                            <el-option label=\"抖音\" value=\"抖音\"><\/el-option>\n                            <el-option label=\"快手\" value=\"快手\"><\/el-option>\n                            <el-option label=\"小红书\" value=\"小红书\"><\/el-option>\n                            <el-option label=\"B站\" value=\"B站\"><\/el-option>\n                            <el-option label=\"微信公众号\" value=\"微信公众号\"><\/el-option>\n                            <el-option label=\"QQ群\/微信群\" value=\"QQ群\/微信群\"><\/el-option>\n                            <el-option label=\"Telegram\" value=\"Telegram\"><\/el-option>\n                            <el-option label=\"贴吧\/论坛\" value=\"贴吧\/论坛\"><\/el-option>\n                            <el-option label=\"网址导航\" value=\"网址导航\"><\/el-option>\n                            <el-option label=\"社群\/论坛\" value=\"社群\/论坛\"><\/el-option>\n                            <el-option label=\"其他\" value=\"其他\"><\/el-option>\n                        <\/el-select>\n                    <\/el-form-item>\n\n                    <el-form-item label=\"邮箱（选填）\">\n                        <el-input\n                            v-model=\"helpForm.email\"\n                            maxlength=\"120\"\n                            placeholder=\"请输入邮箱，方便后续联系（选填）\">\n                        <\/el-input>\n                    <\/el-form-item>\n\n                    <el-form-item label=\"其他说明\">\n                        <el-input\n                            v-model=\"helpForm.extra_desc\"\n                            type=\"textarea\"\n                            :rows=\"4\"\n                            maxlength=\"500\"\n                            show-word-limit\n                            resize=\"none\"\n                            placeholder=\"其他说明（选填）\">\n                        <\/el-input>\n                    <\/el-form-item>\n                <\/el-form>\n\n                <div style=\"margin-top: 14px; text-align: right;\">\n                    <el-button @click=\"layerVisible = false\">取消<\/el-button>\n                    <el-button type=\"primary\" @click=\"saveBtn\">提交<\/el-button>\n                <\/div>\n            <\/div>\n        <\/el-dialog>\n\n        <!-- 手机端导航菜单 -->\n        <el-dialog v-model=\"drawer\" width=\"200\" center custom-class=\"nav-drawer\" :show-close=\"false\">\n            <div class=\"nav-drawer-content\">\n                <div class=\"nav-drawer-header\">\n                    <span class=\"nav-drawer-title\">爱搜网盘分享站<\/span>\n                    <span class=\"nav-drawer-close iconfont icon-guanbi\" @click=\"drawer = false\"><\/span>\n                <\/div>\n                <div class=\"nav-drawer-menu\">\n                    <a href=\"\/\" class=\"nav-drawer-item active\">搜索<\/a>\n                    <a href=\"\/ranking\" class=\"nav-drawer-item\">热播榜<\/a>\n                    <a href=\"\/copyright.html\" class=\"nav-drawer-item\">侵权投诉<\/a>\n                <\/div>\n            <\/div>\n        <\/el-dialog>\n    <\/div>\n    <script src=\"\/views\/index\/news\/common\/static\/js\/vue.global.min.js\"><\/script>\n<script src=\"\/views\/index\/news\/common\/static\/js\/index.full.min.js\"><\/script>\n<script src=\"\/views\/index\/news\/common\/static\/js\/axios.min.js\"><\/script>\n<script src=\"\/views\/index\/news\/common\/static\/js\/qrcanvas@3.js\"><\/script>\n<script src=\"\/\/open.thunderurl.com\/thunder-link.js\"><\/script>\n<script>\n    const LINK_CHECK_ENABLED = true;\n\n    function normalizeSearchLinkForCheck(url) {\n        \/\/ 保留 ?pwd= 查询参数，仅移除 hash，避免百度链接状态串线\n        return (url || '').replace(\/#.*$\/, '').trim();\n    }\n\n    function detectSearchResultsLinks(items) {\n        if (!LINK_CHECK_ENABLED || !items || !items.length) {\n            return;\n        }\n        var payload = {\n            items: items.map(function (item) {\n                return { disk_type: String(item.is_type != null ? item.is_type : ''), url: item.url };\n            }).filter(function (row) {\n                return row.url;\n            })\n        };\n        if (!payload.items.length) {\n            return;\n        }\n        axios.post('\/api\/other\/check_links', payload, { headers: { 'Content-Type': 'application\/json' } })\n            .then(function (res) {\n                var results = (res.data && res.data.data && res.data.data.results) ? res.data.data.results\n                    : (res.data && res.data.results) ? res.data.results : [];\n                var stateMap = {};\n                results.forEach(function (row) {\n                    var key = normalizeSearchLinkForCheck(row.normalized_url || row.url);\n                    if (key) {\n                        stateMap[key] = String(row.state || '').toLowerCase() === 'ok' ? 'good' : 'bad';\n                    }\n                });\n                items.forEach(function (item, idx) {\n                    var state = stateMap[normalizeSearchLinkForCheck(item.url)];\n                    if (state === undefined && results[idx] != null) {\n                        state = String(results[idx].state || '').toLowerCase() === 'ok' ? 'good' : 'bad';\n                    }\n                    if (state === undefined) state = 'bad';\n                    var el = document.getElementById('search-link-state-' + idx);\n                    if (el) {\n                        el.textContent = state === 'bad' ? '失效' : '有效';\n                        el.className = 'link-state-tag ' + (state === 'bad' ? 'link-state-bad' : 'link-state-good');\n                    }\n                });\n            })\n            .catch(function () {\n                items.forEach(function (item, idx) {\n                    var el = document.getElementById('search-link-state-' + idx);\n                    if (el) {\n                        el.textContent = '失效';\n                        el.className = 'link-state-tag link-state-bad';\n                    }\n                });\n            });\n    }\n\n    const { createApp, ref, onMounted, onUnmounted } = Vue;\n    const { ElButton, ElMessage  } = ElementPlus;\n    const app = createApp({\n        setup() {\n            \/\/ 定义响应式数据\n            const elementOpacity = ref(0);\n            const scrollThreshold = ref(150); \/\/ 动态设置的滚动阈值\n            const keyword = ref('');\n            const qcodeVisible = ref(false);\n            const layerVisible = ref(false);\n            const content = ref('');\n            const helpForm = ref({\n                resource_name: '',\n                pan_type: '',\n                resource_type: '',\n                source_channel: '',\n                email: '',\n                extra_desc: ''\n            });\n            const load = ref(false)\n            const drawer = ref(false)\n            const rankList = ref([]);\n            const rankDj = ref([]);\n            const is_m = ref(0);\n            const newList = ref([]);\n            const QList = ref([]);\n            const QLoading = ref(false);\n            const total_result = ref(0);\n            const currentSource = ref(0);\n            const dialogUrl = ref(false);\n            const dialogLoading = ref(false);\n            const dialogItem = ref({});\n            const is_type = ref(0);\n            const pc_type = ref(0);\n            const panTypeMap = ref({\"0\":\"夸克网盘\",\"2\":\"百度网盘\",\"4\":\"迅雷云盘\",\"3\":\"UC网盘\"});\n            const allPanTypeOptions = ref([{\"id\":\"0\",\"name\":\"夸克网盘\"},{\"id\":\"1\",\"name\":\"阿里云盘\"},{\"id\":\"2\",\"name\":\"百度网盘\"},{\"id\":\"3\",\"name\":\"UC网盘\"},{\"id\":\"4\",\"name\":\"迅雷云盘\"},{\"id\":\"5\",\"name\":\"123网盘\"},{\"id\":\"6\",\"name\":\"115网盘\"},{\"id\":\"7\",\"name\":\"天翼网盘\"},{\"id\":\"8\",\"name\":\"移动网盘\"},{\"id\":\"9\",\"name\":\"磁力链接\"}]);\n            \n            \/\/ TMDB 影视信息\n            const tmdbData = ref({});\n            const tmdbLoading = ref(false);\n            \n            \/\/ 主题切换\n            const currentTheme = ref('blue');\n            const showThemeDropdown = ref(false);\n            const themeSwitcherRef = ref(null);\n            \n            \/\/ 切换下拉显示\n            const toggleThemeDropdown = () => {\n                showThemeDropdown.value = !showThemeDropdown.value;\n            };\n            \n            \/\/ 切换主题\n            const switchTheme = (theme) => {\n                currentTheme.value = theme;\n                document.documentElement.setAttribute('data-theme', theme);\n                localStorage.setItem('app-theme', theme);\n                showThemeDropdown.value = false;\n                showMessage('主题已切换', 'success');\n            };\n            \n            \/\/ 初始化主题\n            const initTheme = () => {\n                const savedTheme = localStorage.getItem('app-theme') || 'blue';\n                currentTheme.value = savedTheme;\n                document.documentElement.setAttribute('data-theme', savedTheme);\n            };\n            \n            \/\/ 点击外部关闭下拉\n            const closeThemeDropdown = (e) => {\n                if (themeSwitcherRef.value && !themeSwitcherRef.value.contains(e.target)) {\n                    showThemeDropdown.value = false;\n                }\n            };\n            \n            \/\/ 公共消息方法\n            const showMessage = (message, type = 'info') => {\n                ElMessage({\n                    message,\n                    type,\n                    plain: true,\n                });\n            };\n\n\n             \/\/ 滚动监听方法\n            const handleScroll = () => {\n                const scrollTop = window.scrollY || document.documentElement.scrollTop;\n                elementOpacity.value = scrollTop >= scrollThreshold.value\n                    ? Math.min((scrollTop - scrollThreshold.value) \/ 100, 1)\n                    : Math.max(1 - (scrollThreshold.value - scrollTop) \/ 100, 0);\n    \n                const boxElement = document.querySelector('.listBox .screen .fixed .box');\n                if (boxElement && boxElement.style.display === 'block' && is_m.value) {\n                    boxElement.style.display = 'none';\n                }\n            };\n\n            \/\/ 获取可用的线路类型（转换为字符串数组）\n            var availablePanTypes = [0,2,4,3].map(String);\n            \/\/ 默认选中排序第一的线路\n            var defaultPanType = String(availablePanTypes[0] || '9');\n            \/\/ 当前选中的网盘类型，默认从localStorage读取，没有则使用默认线路\n            var savedPanType = localStorage.getItem('lastPanType');\n            \/\/ 如果保存的线路不在可用列表中，使用默认线路\n            var currentPanType = (savedPanType && availablePanTypes.indexOf(savedPanType) !== -1) \n                ? savedPanType \n                : defaultPanType;\n            var searchResults = [];\n            var currentEventSource = null;\n\n            \/\/ 页面加载时设置默认选中状态\n            document.addEventListener('DOMContentLoaded', function() {\n                \/\/ 设置桌面端标签选中\n                var desktopTabs = document.querySelectorAll('.pan-type-tab');\n                desktopTabs.forEach(function(tab) {\n                    if (tab.getAttribute('data-type') === currentPanType) {\n                        tab.classList.add('active');\n                    } else {\n                        tab.classList.remove('active');\n                    }\n                });\n                \/\/ 设置移动端下拉列表选中\n                var mobileSelect = document.querySelector('.pan-type-select');\n                if (mobileSelect) {\n                    mobileSelect.value = currentPanType;\n                }\n            });\n\n            \/\/ 切换网盘类型\n            window.switchPanType = function(el) {\n                document.querySelectorAll('.pan-type-tab').forEach(function(tab) {\n                    tab.classList.remove('active');\n                });\n                el.classList.add('active');\n                currentPanType = el.getAttribute('data-type') || '';\n                localStorage.setItem('lastPanType', currentPanType);\n\n                \/\/ 只要输入了关键词就重新搜索（不查询TMDB）\n                if (keyword.value) {\n                    searchOnly();\n                }\n            };\n\n            \/\/ 移动端按钮组切换线路\n            window.switchPanTypeMobile = function(btn) {\n                \/\/ 获取点击的按钮类型值\n                currentPanType = btn.getAttribute('data-type') || '';\n                localStorage.setItem('lastPanType', currentPanType);\n\n                \/\/ 更新按钮组的active状态\n                document.querySelectorAll('.pan-type-btn').forEach(function(item) {\n                    item.classList.remove('active');\n                });\n                btn.classList.add('active');\n\n                \/\/ 只要输入了关键词就重新搜索（不查询TMDB）\n                if (keyword.value) {\n                    searchOnly();\n                }\n            };\n\n            \/\/ 仅搜索不查询TMDB（用于切换线路）\n            const searchOnly = () => {\n                if (!keyword.value) {\n                    return showMessage('请输入你要搜索的内容~', 'error');\n                }\n\n                if (currentEventSource) {\n                    try {\n                        currentEventSource.close();\n                    } catch (e) {}\n                    currentEventSource = null;\n                }\n\n                var section = document.getElementById('searchResultSection');\n                var content = document.getElementById('searchResultContent');\n                var countEl = document.getElementById('searchResultCount');\n\n                section.classList.add('show');\n                content.innerHTML = '<div class=\"search-result-loading\"><div class=\"loading-wrapper\"><div class=\"loading-pulse\"><\/div><div class=\"loading-pulse\"><\/div><div class=\"loading-pulse\"><\/div><i class=\"iconfont icon-jiazai\"><\/i><\/div><div class=\"loading-text\">正在全网搜索<\/div><\/div>';\n                countEl.textContent = '';\n\n                var isTypeParam = currentPanType !== '' ? '&is_type=' + currentPanType : '';\n                var searchUrl = '\/api\/other\/web_search?title=' + encodeURIComponent(keyword.value) + isTypeParam;\n                \n                try {\n                    currentEventSource = new EventSource(searchUrl);\n                    searchResults = [];\n                    var maxResults = 20;\n                    var isClosed = false;\n\n                    currentEventSource.onopen = function() {\n                    };\n\n                    currentEventSource.onmessage = function(event) {\n                        if (isClosed) return;\n\n                        \/\/ 处理 [DONE] 或 [DONE] 开头的消息\n                        if (event.data === '[DONE]' || event.data.startsWith('[DONE]')) {\n                            isClosed = true;\n                            try {\n                                currentEventSource.close();\n                            } catch (e) {}\n                            currentEventSource = null;\n                            if (searchResults.length > 0) {\n                                countEl.textContent = '共 ' + searchResults.length + ' 条结果';\n                                renderSearchResults(searchResults);\n                            } else {\n                                content.innerHTML = '<div class=\"search-result-empty\"><i class=\"iconfont icon-kong\"><\/i> 暂无搜索结果，请尝试其他关键词<\/div>';\n                            }\n                            return;\n                        }\n\n                        try {\n                            var data = JSON.parse(event.data);\n                            if (data && data.title) {\n                                searchResults.push(data);\n                                if (searchResults.length <= maxResults) {\n                                    renderSearchResults(searchResults);\n                                    countEl.textContent = '已找到 ' + searchResults.length + ' 条结果';\n                                }\n                            }\n                        } catch (e) {\n                        }\n                    };\n\n                    currentEventSource.onerror = function(error) {\n                        if (!isClosed) {\n                            isClosed = true;\n                            try {\n                                currentEventSource.close();\n                            } catch (e) {}\n                            currentEventSource = null;\n                            if (searchResults.length > 0) {\n                                countEl.textContent = '共 ' + searchResults.length + ' 条结果';\n                                renderSearchResults(searchResults);\n                            } else {\n                                content.innerHTML = '<div class=\"search-result-empty\"><i class=\"iconfont icon-kong\"><\/i> 搜索出错，请稍后重试<\/div>';\n                            }\n                        }\n                    };\n                } catch (error) {\n                    content.innerHTML = '<div class=\"search-result-empty\"><i class=\"iconfont icon-kong\"><\/i> 搜索初始化失败，请刷新页面重试<\/div>';\n                }\n            };\n            \n            \/\/ 获取 TMDB 缓存数据\n            const getTmdbCache = (query) => {\n                try {\n                    const cacheKey = 'tmdb_cache_' + query;\n                    const cacheData = localStorage.getItem(cacheKey);\n                    if (cacheData) {\n                        const { data, timestamp } = JSON.parse(cacheData);\n                        \/\/ 24小时缓存\n                        const CACHE_DURATION = 24 * 60 * 60 * 1000;\n                        if (Date.now() - timestamp < CACHE_DURATION) {\n                            return data;\n                        }\n                    }\n                } catch (e) {\n                }\n                return null;\n            };\n\n            \/\/ 保存 TMDB 缓存数据\n            const setTmdbCache = (query, data) => {\n                try {\n                    const cacheKey = 'tmdb_cache_' + query;\n                    const cacheData = {\n                        data: data,\n                        timestamp: Date.now()\n                    };\n                    localStorage.setItem(cacheKey, JSON.stringify(cacheData));\n                    \/\/ 记录最后一次查询的关键词\n                    localStorage.setItem('tmdb_last_query', query);\n                } catch (e) {\n                }\n            };\n\n            \/\/ 获取最后一次缓存的 TMDB 数据（不检查过期时间）\n            const getLastTmdbCache = () => {\n                try {\n                    const lastQuery = localStorage.getItem('tmdb_last_query');\n                    if (lastQuery) {\n                        const cacheKey = 'tmdb_cache_' + lastQuery;\n                        const cacheData = localStorage.getItem(cacheKey);\n                        if (cacheData) {\n                            const { data } = JSON.parse(cacheData);\n                            return data;\n                        }\n                    }\n                } catch (e) {\n                }\n                return null;\n            };\n\n            \/\/ 获取 TMDB 影视信息\n            const fetchTmdbInfo = async (query) => {\n                if (!query) return;\n\n                \/\/ 先检查缓存\n                const cachedData = getTmdbCache(query);\n                if (cachedData) {\n                    tmdbData.value = cachedData;\n                    return;\n                }\n\n                tmdbLoading.value = true;\n                try {\n                    const response = await axios.get('https:\/\/dm.xueximeng.com\/app\/api\/tmdb\/multi_search', {\n                        params: {\n                            query: query,\n                            page: 1\n                        }\n                    });\n\n                    let resultData = {};\n                    if (response.data && response.data.results && response.data.results.length > 0) {\n                        \/\/ 查找与关键字同名的结果，如果没有则取第一条\n                        const results = response.data.results;\n                        let matchedResult = results.find(item =>\n                            item.title === query || item.original_title === query\n                        );\n\n                        if (!matchedResult) {\n                            matchedResult = results[0];\n                        }\n\n                        resultData = {\n                            title: matchedResult.title,\n                            original_title: matchedResult.original_title,\n                            overview: matchedResult.overview,\n                            release_date: matchedResult.release_date,\n                            poster_url: matchedResult.poster_path\n                                ? 'https:\/\/image.tmdb.org\/t\/p\/w300' + matchedResult.poster_path\n                                : ''\n                        };\n                    }\n\n                    tmdbData.value = resultData;\n                    \/\/ 保存到缓存\n                    setTmdbCache(query, resultData);\n                } catch (error) {\n                    tmdbData.value = {};\n                } finally {\n                    tmdbLoading.value = false;\n                }\n            };\n\n            \/\/ 搜索按钮点击事件 - SSE全网搜\n            const searchBtn = () => {\n                if (!keyword.value) {\n                    return showMessage('请输入你要搜索的内容~', 'error');\n                }\n\n                \/\/ 查询 TMDB 信息\n                fetchTmdbInfo(keyword.value);\n\n                if (currentEventSource) {\n                    try {\n                        currentEventSource.close();\n                    } catch (e) {}\n                    currentEventSource = null;\n                }\n\n                var section = document.getElementById('searchResultSection');\n                var content = document.getElementById('searchResultContent');\n                var countEl = document.getElementById('searchResultCount');\n\n                section.classList.add('show');\n                content.innerHTML = '<div class=\"search-result-loading\"><div class=\"loading-wrapper\"><div class=\"loading-pulse\"><\/div><div class=\"loading-pulse\"><\/div><div class=\"loading-pulse\"><\/div><i class=\"iconfont icon-jiazai\"><\/i><\/div><div class=\"loading-text\">正在全网搜索<\/div><\/div>';\n                countEl.textContent = '';\n\n                var isTypeParam = currentPanType !== '' ? '&is_type=' + currentPanType : '';\n                var searchUrl = '\/api\/other\/web_search?title=' + encodeURIComponent(keyword.value) + isTypeParam;\n\n                try {\n                    currentEventSource = new EventSource(searchUrl);\n                    searchResults = [];\n                    var maxResults = 20;\n                    var isClosed = false;\n\n                    currentEventSource.onopen = function() {\n                    };\n\n                    currentEventSource.onmessage = function(event) {\n                        if (isClosed) return;\n\n                        \/\/ 处理 [DONE] 或 [DONE] 开头的消息\n                        if (event.data === '[DONE]' || event.data.startsWith('[DONE]')) {\n                            isClosed = true;\n                            try {\n                                currentEventSource.close();\n                            } catch (e) {}\n                            currentEventSource = null;\n                            if (searchResults.length > 0) {\n                                countEl.textContent = '共 ' + searchResults.length + ' 条结果';\n                                renderSearchResults(searchResults);\n                            } else {\n                                content.innerHTML = '<div class=\"search-result-empty\">未找到相关资源<\/div>';\n                            }\n                            return;\n                        }\n\n                        try {\n                            var item = JSON.parse(event.data);\n                            searchResults.push(item);\n\n                            if (searchResults.length >= maxResults) {\n                                isClosed = true;\n                                try {\n                                    currentEventSource.close();\n                                } catch (e) {}\n                                currentEventSource = null;\n                                countEl.textContent = '共 ' + searchResults.length + ' 条结果（已显示前' + maxResults + '条）';\n                                renderSearchResults(searchResults);\n                            }\n                        } catch (e) {\n                            \/\/ 静默忽略非JSON数据，不输出错误\n                        }\n                    };\n\n                    currentEventSource.onerror = function(error) {\n                        if (isClosed) return;\n                        isClosed = true;\n                        \n                        try {\n                            currentEventSource.close();\n                        } catch (e) {}\n                        currentEventSource = null;\n                        \n                        if (searchResults.length > 0) {\n                            countEl.textContent = '共 ' + searchResults.length + ' 条结果';\n                            renderSearchResults(searchResults);\n                        } else {\n                            content.innerHTML = '<div class=\"search-result-empty\">未找到相关资源<\/div>';\n                        }\n                    };\n                } catch (e) {\n                    content.innerHTML = '<div class=\"search-result-empty\">搜索初始化失败，请重试<\/div>';\n                }\n            };\n            \n            \/\/ 渲染搜索结果 - SSE全网搜数据\n            window.renderSearchResults = function(data) {\n                var content = document.getElementById('searchResultContent');\n                var html = '<div class=\"search-result-list\">';\n                \n                var panTypeMap = {0: '夸克网盘', 1: '阿里云盘', 2: '百度网盘', 3: 'UC网盘', 4: '迅雷云盘'};\n                \n                data.forEach(function(item, index) {\n                    var title = item.title || item.note || '未知资源';\n                    var desc = item.desc || item.description || '';\n                    var itemUrl = item.url || '#';\n                    var typeLabel = panTypeMap[item.is_type] || item.pantype || '网盘资源';\n                    \/\/ 尝试多种可能的时间字段名\n                    var rawTime = item.datetime || item.time || item.date || item.create_time || item.created_at || '';\n                    var timeStr = '';\n                    if (rawTime) {\n                        \/\/ 处理 ISO 格式时间 (2026-04-01T09:21:21Z 或 2026-04-01T09:21:21+00:00)\n                        timeStr = rawTime.substring(0, 19).replace('T', ' ');\n                        \/\/ 检测无效时间（如 0001-01-01 或 0000-）\n                        if (timeStr.indexOf('0000-') === 0 || timeStr.indexOf('0001-') === 0) {\n                            \/\/ 替换为当前日期\n                            var now = new Date();\n                            timeStr = now.getFullYear() + '-' + \n                                     String(now.getMonth() + 1).padStart(2, '0') + '-' + \n                                     String(now.getDate()).padStart(2, '0') + ' ' +\n                                     String(now.getHours()).padStart(2, '0') + ':' +\n                                     String(now.getMinutes()).padStart(2, '0') + ':' +\n                                     String(now.getSeconds()).padStart(2, '0');\n                        }\n                    }\n                    \/\/ 调试：如果没时间，尝试显示source字段\n                    if (!timeStr && item.source) {\n                        timeStr = item.source;\n                    }\n                    \n                    html += '<div class=\"search-result-item\" onclick=\"getResource(event, ' + index + ')\">';\n                    html += '<div class=\"search-result-info\">';\n                    html += '<div class=\"search-result-name\">' + title + '<\/div>';\n                    if (desc) {\n                        html += '<div class=\"search-result-desc\">' + desc + '<\/div>';\n                    }\n                    html += '<div class=\"search-result-meta\">';\n                    html += '<span class=\"search-result-tag type\"><i class=\"iconfont icon-yunpan\" style=\"font-size:12px;\"><\/i>' + typeLabel + '<\/span>';\n                    if (timeStr) {\n                        html += '<span class=\"search-result-tag source\">' + timeStr + '<\/span>';\n                    }\n                    if (LINK_CHECK_ENABLED) {\n                        html += '<span class=\"link-state-tag link-state-loading\" id=\"search-link-state-' + index + '\">检测中<\/span>';\n                    }\n                    html += '<\/div><\/div>';\n                    html += '<div class=\"search-result-actions\">';\n                    html += '<span class=\"search-result-btn get\"><i class=\"iconfont icon-xiazai\"><\/i> 获取资源<\/span>';\n                    html += '<\/div><\/div>';\n                });\n                \n                html += '<\/div>';\n                content.innerHTML = html;\n                window.currentSearchData = data;\n                if (LINK_CHECK_ENABLED && data && data.length) {\n                    detectSearchResultsLinks(data);\n                }\n            };\n            \n            \/\/ 获取资源 - 弹窗显示二维码\n            const getResource = function(event, index) {\n                if (event && event.stopPropagation) {\n                    event.stopPropagation();\n                }\n                var item = window.currentSearchData[index];\n                if (!item) return;\n                \n                dialogLoading.value = true;\n                dialogUrl.value = true;\n                dialogItem.value = {};\n                \n                \/\/ 查询 TMDB 信息（使用资源标题）\n                fetchTmdbInfo(item.title);\n                \n                var rawUrl = item.url || '';\n                \n                if (rawUrl.startsWith('http') || rawUrl.startsWith('magnet:')) {\n                    item.showUrl = rawUrl;\n                    showResourceDialog(item);\n                } else {\n                    axios.post('\/api\/other\/save_url', {\n                        url: encodeURIComponent(rawUrl),\n                        title: item.title\n                    }).then(function(res) {\n                        if (res.data.code == 200) {\n                            item.url = res.data.data.url;\n                            item.showUrl = res.data.data.url;\n                        } else {\n                            item.showUrl = '';\n                            item.message = res.data.message || '获取失败';\n                        }\n                        showResourceDialog(item);\n                    }).catch(function(err) {\n                        item.showUrl = '';\n                        item.message = '网络错误，请重试';\n                        showResourceDialog(item);\n                    });\n                }\n            };\n            \n            \/\/ 绑定到window，供全局调用\n            window.getResource = getResource;\n\n            \/\/ 全局搜索方法 - 供首页热播榜点击使用\n            window.searchByKeyword = function(kw) {\n                keyword.value = kw;\n                searchBtn();\n            };\n\n            \/\/ 使用迅雷JS-SDK下载磁力链接\n            window.downloadWithThunder = function(url, title) {\n                if (typeof thunderLink === 'undefined') {\n                    showMessage('迅雷SDK加载失败，请刷新页面重试', 'error');\n                    return;\n                }\n                \n                try {\n                    thunderLink.newTask({\n                        taskGroupName: title || '磁力下载',\n                        tasks: [{\n                            url: url,\n                            name: title || '未知文件'\n                        }]\n                    });\n                } catch (error) {\n                    showMessage('迅雷下载调用失败，请确保已安装迅雷客户端', 'error');\n                }\n            };\n            \n            \/\/ 显示资源弹窗和二维码\n            const showResourceDialog = function(item) {\n                dialogLoading.value = false;\n                \n                if (item.showUrl && item.showUrl.startsWith('magnet:')) {\n                    item.thunderUrl = 'thunder:\/\/' + btoa('AA' + item.showUrl + 'ZZ');\n                }\n                \n                dialogItem.value = item;\n                \n                if (item.showUrl) {\n                    setTimeout(function() {\n                        var qrcodeEl = document.getElementById('qrcode');\n                        if (qrcodeEl) {\n                            qrcodeEl.innerHTML = '';\n                            var canvas = qrcanvas.qrcanvas({\n                                data: item.showUrl,\n                                size: 120\n                            });\n                            qrcodeEl.appendChild(canvas);\n                        }\n                    }, 300);\n                }\n            };\n            \n            \/\/ 显示详情\n            const showDetail = function(index) {\n                var item = window.currentSearchData[index];\n                if (!item) return;\n                showMessage(item.title || '暂无详情', 'info');\n            };\n            \n            \/\/ 关闭搜索结果\n            window.closeSearchResult = function() {\n                document.getElementById('searchResultSection').classList.remove('show');\n            };\n            \n            \/\/ 保存按钮点击事件\n            const saveBtn = async () => {\n                if (!helpForm.value.resource_name) {\n                    return showMessage('请填写资源名称', 'error');\n                }\n                if (helpForm.value.pan_type === '') {\n                    return showMessage('请选择网盘类型', 'error');\n                }\n                if (!helpForm.value.resource_type) {\n                    return showMessage('请选择资源类型', 'error');\n                }\n                if (!helpForm.value.source_channel) {\n                    return showMessage('请选择来源渠道', 'error');\n                }\n                if (load.value) return;\n    \n                load.value = true;\n                try {\n                    const payload = {\n                        resource_name: helpForm.value.resource_name,\n                        pan_type: helpForm.value.pan_type,\n                        pan_type_name: panTypeMap.value && panTypeMap.value[helpForm.value.pan_type]\n                            ? panTypeMap.value[helpForm.value.pan_type]\n                            : '',\n                        resource_type: helpForm.value.resource_type,\n                        source_channel: helpForm.value.source_channel,\n                        email: (helpForm.value.email || '').trim(),\n                        extra_desc: helpForm.value.extra_desc || '',\n                        content: [\n                            '资源名称：' + helpForm.value.resource_name,\n                            '网盘类型：' + (panTypeMap.value && panTypeMap.value[helpForm.value.pan_type]\n                                ? panTypeMap.value[helpForm.value.pan_type]\n                                : helpForm.value.pan_type),\n                            '资源类型：' + helpForm.value.resource_type,\n                            '来源渠道：' + helpForm.value.source_channel,\n                            '联系邮箱：' + ((helpForm.value.email || '').trim() || '未填写'),\n                            '其他说明：' + (helpForm.value.extra_desc || '无')\n                        ].join('\\n')\n                    };\n\n                    const response = await axios.post('\/api\/tool\/resourceHelp', payload);\n                    showMessage(response.data.message, response.data.code === 200 ? 'success' : 'error');\n                    if (response.data.code === 200) {\n                        layerVisible.value = false;\n                        content.value = '';\n                        helpForm.value = {\n                            resource_name: '',\n                            pan_type: '',\n                            resource_type: '',\n                            source_channel: '',\n                            email: '',\n                            extra_desc: ''\n                        };\n                    }\n                } finally {\n                    load.value = false;\n                }\n            };\n            \n            const setnum = (num) => (num \/ 10000).toFixed(2) + 'W';\n            \n            const goLink = (event,id) => {\n                event.preventDefault();\n                window.location.href = `\/d\/${id}.html`;\n            }\n            \n            const changeBtn = (e) => {\n                const category_id = `0`;\n                if(category_id){\n                    window.location.href = `\/s\/${keyword.value}-${e}-${category_id}.html`;\n                }else{\n                    window.location.href = `\/s\/${keyword.value}-${e}.html`;\n                }\n            };\n            \n            const copyText = async(event,title,url,code) => {\n                event.preventDefault();\n                var text = '标题：'+title+'\\n链接：'+url\n                if (code) text += `\\n提取码：${code}`;\n                text += `\\n由【${'爱搜网盘分享站'}${window.location.hostname}】提供网盘分享链接`;\n                \n                \n                try {\n                    \/\/ 优先使用 navigator.clipboard\n                    await navigator.clipboard.writeText(text);\n                    showMessage('复制成功', 'success');\n                } catch (err) {\n                    \/\/ 如果 navigator.clipboard 失败，使用 document.execCommand 作为回退\n                    const textArea = document.createElement('textarea');\n                    textArea.value = text;\n                    textArea.style.position = 'fixed';  \/\/ 避免滚动\n                    textArea.style.opacity = 0;\n                    document.body.appendChild(textArea);\n                    textArea.focus();\n                    textArea.select();\n            \n                    try {\n                        const successful = document.execCommand('copy');\n                        if (successful) {\n                            showMessage('复制成功', 'success');\n                        } else {\n                            throw new Error('复制失败');\n                        }\n                    } catch (err) {\n                        showMessage('复制失败，请手动复制', 'error');\n                    }\n            \n                    document.body.removeChild(textArea);\n                }\n            }\n\n            const copyDialogUrl = async (url) => {\n                if (!url) return;\n                try {\n                    await navigator.clipboard.writeText(url);\n                    showMessage('链接已复制', 'success');\n                } catch (err) {\n                    const textArea = document.createElement('textarea');\n                    textArea.value = url;\n                    textArea.style.position = 'fixed';\n                    textArea.style.opacity = 0;\n                    document.body.appendChild(textArea);\n                    textArea.focus();\n                    textArea.select();\n                    try {\n                        document.execCommand('copy');\n                        showMessage('链接已复制', 'success');\n                    } catch (e) {\n                        showMessage('复制失败，请手动复制', 'error');\n                    }\n                    document.body.removeChild(textArea);\n                }\n            };\n\n            const openDialogUrl = (url) => {\n                if (!url) return;\n                try {\n                    const win = window.open(url, '_blank', 'noopener,noreferrer');\n                    if (win) return;\n                } catch (e) {}\n                const a = document.createElement('a');\n                a.href = url;\n                a.target = '_blank';\n                a.rel = 'noopener noreferrer';\n                document.body.appendChild(a);\n                a.click();\n                document.body.removeChild(a);\n            };\n            \n            const selectBtn = () => {\n                if(!is_m.value) return;\n                const boxElement = document.querySelector('.listBox .screen .fixed .box');\n                \/\/ 切换 display 属性，显示或隐藏\n                if (boxElement.style.display === 'none' || boxElement.style.display === '') {\n                    boxElement.style.display = 'block'; \/\/ 显示\n                } else {\n                    boxElement.style.display = ''; \/\/ 隐藏\n                }\n            }\n            \n            const handleDeviceType = () => {\n                const isMobile = window.matchMedia('(max-width: 768px)').matches;\n                if (isMobile) {\n                    \/\/ 手机端的逻辑\n                    is_m.value = 1\n                    pc_type.value = 1\n                } else {\n                    \/\/ 电脑端的逻辑\n                    is_m.value = 0\n                    pc_type.value = '0';\n                }\n            };\n\n\n            \/\/ 组件挂载时添加滚动监听\n            onMounted(() => {\n                handleDeviceType();\n                initTheme(); \/\/ 初始化主题\n\n                \/\/ 从URL参数读取搜索关键词并自动搜索\n                const urlParams = new URLSearchParams(window.location.search);\n                const wd = urlParams.get('wd');\n                if (wd) {\n                    keyword.value = decodeURIComponent(wd);\n                    \/\/ 延迟执行搜索，确保页面完全加载\n                    setTimeout(() => {\n                        searchBtn();\n                    }, 100);\n                } else {\n                    \/\/ 如果没有URL参数，显示最后一次缓存的TMDB数据\n                    const lastQuery = localStorage.getItem('tmdb_last_query');\n                    if (lastQuery) {\n                        const cacheKey = 'tmdb_cache_' + lastQuery;\n                        const cacheData = localStorage.getItem(cacheKey);\n                        if (cacheData) {\n                            try {\n                                const parsed = JSON.parse(cacheData);\n                                const data = parsed.data || parsed;\n                                if (data && data.title) {\n                                    tmdbData.value = data;\n                                }\n                            } catch (e) {\n                            }\n                        }\n                    }\n                }\n\n                window.addEventListener('scroll', handleScroll);\n                window.addEventListener('resize', handleDeviceType);\n                document.addEventListener('click', closeThemeDropdown);\n            });\n\n            \/\/ 组件卸载时移除滚动监听\n            onUnmounted(() => {\n                window.removeEventListener('scroll', handleScroll);\n                window.removeEventListener('resize', handleDeviceType);\n                document.removeEventListener('click', closeThemeDropdown);\n            });\n\n            \/\/ 返回数据和方法\n            return { elementOpacity, scrollThreshold, keyword, searchBtn, searchOnly, rankList,newList, setnum, qcodeVisible, layerVisible, content, helpForm, saveBtn, rankDj,goLink,changeBtn,copyText,copyDialogUrl,openDialogUrl,drawer,selectBtn,is_m,QList,QLoading,total_result,currentSource,dialogUrl,dialogLoading,dialogItem,is_type,pc_type,panTypeMap,allPanTypeOptions,getResource,showResourceDialog,showDetail, tmdbData, tmdbLoading, downloadWithThunder, currentTheme, showThemeDropdown, switchTheme, themeSwitcherRef, toggleThemeDropdown };\n        }\n    })\n    .use(ElementPlus) \/\/ 使用 Element Plus\n    .mount('#app'); \/\/ 挂载 Vue 实例\n<\/script>\n    <script type=\"text\/javascript\" charset=\"utf-8\">\n        app.rankList = JSON.parse('[{\"source_category_id\":1,\"name\":\"短剧\",\"image\":\"\",\"is_sys\":1,\"is_type\":0},{\"source_category_id\":2,\"name\":\"电影\",\"image\":\"\",\"is_sys\":1,\"is_type\":0},{\"source_category_id\":3,\"name\":\"电视剧\",\"image\":\"\",\"is_sys\":1,\"is_type\":0},{\"source_category_id\":4,\"name\":\"动漫\",\"image\":\"\",\"is_sys\":1,\"is_type\":0},{\"source_category_id\":5,\"name\":\"综艺\",\"image\":\"\",\"is_sys\":1,\"is_type\":0}]');\n        \n        \/\/ Tab 切换功能 - 新结构\n        app.currentCategory = '电影';\n        app.rankTypes = ['热搜榜', '新片榜', '好评榜'];\n        \n        \/\/ 切换分类 Tab\n        app.switchTab = function(category) {\n            app.currentCategory = category;\n            \n            \/\/ 更新 Tab 样式\n            document.querySelectorAll('.tab-item').forEach(item => {\n                item.classList.remove('active');\n                if (item.getAttribute('data-type') === category) {\n                    item.classList.add('active');\n                }\n            });\n            \n            \/\/ 加载三个榜单的数据\n            app.loadAllRankings(category);\n        };\n        \n        \/\/ 加载所有榜单数据\n        app.loadAllRankings = function(category) {\n            app.rankTypes.forEach(rankType => {\n                app.loadRankingList(category, rankType);\n            });\n        };\n        \n        \/\/ 加载单个榜单数据\n        app.loadRankingList = function(category, rankType) {\n            const containerId = rankType === '热搜榜' ? 'ranking-hot' : \n                               rankType === '新片榜' ? 'ranking-new' : 'ranking-good';\n            const container = document.getElementById(containerId);\n            if (!container) return;\n            \n            \/\/ 生成缓存key\n            const cacheKey = 'ranking_' + category + '_' + rankType;\n            const cacheTime = 60 * 60 * 1000; \/\/ 缓存1小时\n            \n            \/\/ 尝试读取本地缓存\n            try {\n                const cachedData = localStorage.getItem(cacheKey);\n                const cachedTimestamp = localStorage.getItem(cacheKey + '_time');\n                if (cachedData && cachedTimestamp) {\n                    const now = Date.now();\n                    if (now - parseInt(cachedTimestamp) < cacheTime) {\n                        \/\/ 缓存有效，直接渲染\n                        app.renderRankingList(container, JSON.parse(cachedData), category, rankType);\n                        return;\n                    }\n                }\n            } catch(e) {\n                \/\/ localStorage 不可用，继续请求\n            }\n            \n            \/\/ 显示加载状态\n            container.innerHTML = '<div style=\"text-align:center;padding:20px;color:#999;font-size:12px;\">加载中...<\/div>';\n            \n            axios.get('\/api\/tool\/ranking', {\n                params: {\n                    channel: category,\n                    rank_type: rankType\n                }\n            }).then(res => {\n                if (res.data && res.data.data) {\n                    \/\/ 保存到本地缓存\n                    try {\n                        localStorage.setItem(cacheKey, JSON.stringify(res.data.data));\n                        localStorage.setItem(cacheKey + '_time', Date.now().toString());\n                    } catch(e) {\n                        \/\/ localStorage 不可用，忽略\n                    }\n                    app.renderRankingList(container, res.data.data, category, rankType);\n                } else {\n                    container.innerHTML = '<div style=\"text-align:center;padding:20px;color:#999;font-size:12px;\">暂无数据<\/div>';\n                }\n            }).catch(() => {\n                container.innerHTML = '<div style=\"text-align:center;padding:20px;color:#999;font-size:12px;\">加载失败<\/div>';\n            });\n        };\n        \n        \/\/ 渲染榜单列表 - 显示9个\n        app.renderRankingList = function(container, data, category, rankType) {\n            if (!data || data.length === 0) {\n                container.innerHTML = '<div style=\"text-align:center;padding:20px;color:#999;font-size:12px;\">暂无数据<\/div>';\n                return;\n            }\n            \n            \/\/ 判断是否为手机端（与CSS媒体查询保持一致）\n            const isMobile = window.matchMedia('(max-width: 768px)').matches;\n            \n            if (isMobile) {\n                \/\/ 手机端：卡片网格形式\n                app.renderRankingGrid(container, data, category, rankType);\n            } else {\n                \/\/ 桌面端：列表形式\n                let html = '';\n                data.slice(0, 9).forEach((item, index) => {\n                    const rank = index + 1;\n                    const topClass = rank <= 3 ? 'top' + rank : '';\n                    const cover = item.src || \"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 48 64'%3E%3Crect fill='%23e8e8e8' width='48' height='64'\/%3E%3Ctext x='50%25' y='50%25' dominant-baseline='middle' text-anchor='middle' fill='%23ccc' font-size='10'%3ENo Img%3C\/text%3E%3C\/svg%3E\";\n                    const scoreLabel = rankType === '热搜榜' ? (item.hot_score || '0') : \n                                      rankType === '新片榜' ? '新' : (item.score || '0.0');\n                    const year = item.year || new Date().getFullYear();\n                    html += `\n                        <div class=\"ranking-item\" onclick=\"window.searchByKeyword('${item.title.replace(\/'\/g, \"\\\\'\")}')\" style=\"cursor: pointer;\">\n                            <span class=\"ranking-rank ${topClass}\">${rank}<\/span>\n                            <div class=\"ranking-cover\">\n                                <img src=\"${cover}\" alt=\"${item.title}\" loading=\"lazy\" \/>\n                            <\/div>\n                            <div class=\"ranking-info\">\n                                <div class=\"ranking-item-title\">${item.title}<\/div>\n                                <div class=\"ranking-meta\">\n                                    <span>${year}<\/span>\n                                    <span>·<\/span>\n                                    <span>${category}<\/span>\n                                <\/div>\n                            <\/div>\n                            <span class=\"ranking-score\">${scoreLabel}<\/span>\n                        <\/div>\n                    `;\n                });\n                container.innerHTML = html;\n            }\n        };\n        \n        \/\/ 手机端：渲染榜单卡片网格 - 每行3个\n        app.renderRankingGrid = function(container, data, category, rankType) {\n            let html = '<div class=\"ranking-grid-mobile\">';\n            data.slice(0, 9).forEach((item, index) => {\n                const rank = index + 1;\n                const topClass = rank <= 3 ? 'top' + rank : '';\n                const cover = item.src || \"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 48 64'%3E%3Crect fill='%23e8e8e8' width='48' height='64'\/%3E%3Ctext x='50%25' y='50%25' dominant-baseline='middle' text-anchor='middle' fill='%23ccc' font-size='10'%3ENo Img%3C\/text%3E%3C\/svg%3E\";\n                html += `\n                    <div class=\"ranking-card-mobile\" onclick=\"window.searchByKeyword('${item.title.replace(\/'\/g, \"\\\\'\")}')\" style=\"cursor: pointer;\">\n                        <div class=\"ranking-card-cover\">\n                            <span class=\"ranking-card-rank ${topClass}\">TOP${rank}<\/span>\n                            <img src=\"${cover}\" alt=\"${item.title}\" loading=\"lazy\" \/>\n                        <\/div>\n                        <div class=\"ranking-card-title\">${item.title}<\/div>\n                    <\/div>\n                `;\n            });\n            html += '<\/div>';\n            container.innerHTML = html;\n        };\n        \n        \/\/ 刷新所有榜单\n        app.refreshAllRankings = function() {\n            const btn = document.querySelector('.tab-refresh');\n            if (btn) {\n                btn.style.opacity = '0.5';\n                btn.style.pointerEvents = 'none';\n            }\n            \n            app.loadAllRankings(app.currentCategory);\n            \n            setTimeout(() => {\n                if (btn) {\n                    btn.style.opacity = '1';\n                    btn.style.pointerEvents = 'auto';\n                }\n            }, 1000);\n        };\n        \n        \/\/ 查看更多\n        app.loadRankingData = function(rankType) {\n            \/\/ 将内部 rank_type 映射回榜单名称\n            const rankTypeMap = {\n                '最热': '热搜榜',\n                '最新': '新片榜',\n                '好评': '好评榜'\n            };\n            const displayRankType = rankTypeMap[rankType] || rankType;\n        };\n        \n        \/\/ 绑定 Tab 点击事件\n        document.addEventListener('DOMContentLoaded', function() {\n            document.querySelectorAll('.tab-item').forEach(item => {\n                item.addEventListener('click', function() {\n                    app.switchTab(this.getAttribute('data-type'));\n                });\n            });\n            \n            \/\/ 初始加载默认分类的数据\n            app.loadAllRankings(app.currentCategory);\n        });\n        \n        \/\/ 监听窗口大小变化，切换设备时重新渲染\n        let lastIsMobile = window.matchMedia('(max-width: 768px)').matches;\n        window.addEventListener('resize', function() {\n            const currentIsMobile = window.matchMedia('(max-width: 768px)').matches;\n            if (currentIsMobile !== lastIsMobile) {\n                lastIsMobile = currentIsMobile;\n                \/\/ 重新加载当前分类的榜单\n                app.loadAllRankings(app.currentCategory);\n            }\n        });\n    <\/script>\n<\/body>\n\n<\/html>\n"