chore: initial commit - CloudSearch v0.0.2

This commit is contained in:
2026-05-15 05:50:50 +08:00
commit d83225d736
102 changed files with 37926 additions and 0 deletions

160
packages/frontend/h5/index.html Executable file
View File

@@ -0,0 +1,160 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<title>CloudSearch - 搜索</title>
<script>
// 替换标题为网站名称
fetch('/api/site-config').then(function(r){return r.json()}).then(function(cfg){
if(cfg.site_name) document.title = cfg.site_name + ' - 搜索';
}).catch(function(){});
</script>
<script src="https://cdn.jsdelivr.net/npm/qrcodejs@1.0.0/qrcode.min.js"></script>
<link rel="stylesheet" href="/h5/style.css" />
</head>
<body>
<div class="app" id="app">
<!-- ===== Home Page (shown when no search) ===== -->
<div id="homePage" class="home-page">
<div class="home-hero">
<div class="home-logo" id="homeLogo" style="display:none"></div>
<div class="home-search-box">
<input id="homeSearchInput" type="text" placeholder="搜索网盘资源..." />
<button id="homeSearchBtn" onclick="homeSearch()">搜 索</button>
</div>
<div class="home-quote" id="homeQuote"></div>
<div class="home-quote-author" id="homeQuoteAuthor"></div>
</div>
<div class="home-rankings" id="homeRankings"></div>
</div>
<!-- ===== Search Results View ===== -->
<div id="searchView" style="display:none">
<!-- Header -->
<div class="header">
<div class="header-row">
<a href="/h5" class="header-title-link"><div class="header-title" id="headerTitle" style="display:none">CloudSearch</div></a>
<div class="search-wrap">
<input id="searchInput" type="text" placeholder="搜索网盘资源..." @keydown="handleKeydown" />
<button id="searchBtn" onclick="doSearch()">搜 索</button>
</div>
<div class="header-actions" id="userArea">
<template id="userLoggedIn">
<span class="user-badge" id="usernameDisplay"></span>
<button class="logout-btn-small" onclick="logout()">退出</button>
</template>
<template id="userLoggedOut">
<button class="login-btn-small" onclick="showLogin()">登录</button>
</template>
</div>
</div>
</div>
<!-- Info Bar -->
<div id="infoBar" class="info-bar" style="display:none">
<span id="infoCount" class="count"></span>
<span id="infoTime" class="time"></span>
<span id="infoFiltered" class="badge-err"></span>
</div>
<!-- Loading -->
<div id="loading" class="loading" style="display:none">
<div id="loadingText">🔍 正在搜索中...</div>
<div class="loading-bar"><div class="loading-bar-inner" id="loadingBar"></div></div>
</div>
<!-- Tabs -->
<div id="tabs" class="tabs" style="display:none"></div>
<!-- Results -->
<div id="results" class="results"></div>
<!-- Overlay -->
<div class="overlay" id="overlay" style="display:none" onclick="closeModal()"></div>
<!-- Share Modal -->
<div class="modal" id="shareModal" style="display:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:101">
<div class="modal-hdr" id="shareTitle">分享链接</div>
<div class="modal-body">
<div id="progressSteps" class="steps" style="display:none">
<div class="step" id="step1"><div class="step-dot"><span>1</span></div><div class="step-body"><span class="step-title">正在转存...</span><span class="step-status doing">进行中</span></div></div>
<div class="step" id="step2"><div class="step-dot"><span>2</span></div><div class="step-body"><span class="step-title">重命名文件(防和谐)...</span><span class="step-status wait">等待中</span></div></div>
<div class="step" id="step3"><div class="step-dot"><span>3</span></div><div class="step-body"><span class="step-title">生成分享链接...</span><span class="step-status wait">等待中</span></div></div>
</div>
<div id="saveError" class="error-alert" style="display:none"></div>
<div id="shareContent" style="display:none">
<div class="share-qr">
<div id="qrContainer"></div>
<div class="qr-label" id="qrLabel"></div>
<div class="qr-sub">保存到你自己的网盘</div>
</div>
<div class="share-section">
<div class="share-row">
<input id="shareLinkInput" type="text" readonly />
</div>
<div id="sharePwdRow" class="share-pwd" style="display:none">
<span>🔑 提取密码:</span>
<span class="pwd-tag" id="sharePwdTag"></span>
<span class="pwd-hint">打开链接后需输入密码</span>
</div>
<div class="share-tip">
<span class="warn-icon">⚠️</span>
<div class="tip-text">
<strong>请尽快复制链接到浏览器打开</strong><strong>用夸克APP扫码</strong><br>
<strong>转存至您的网盘,以免资源被官方和谐</strong>
</div>
</div>
<div class="warning-box">
<p class="warning-item">郑重警告一:网盘内除您所需资源外,不要打开任何不相关内容。</p>
<p class="warning-item">郑重警告二:网盘内除您所需资源外,不要打开任何不相关内容。</p>
<p class="warning-item">郑重警告三:网盘内除您所需资源外,不要打开任何不相关内容。</p>
<p class="warning-item">郑重警告四:以上警告说三遍,你还要明知故犯吗?</p>
</div>
<div class="share-disclaimer">
<span>⚠️ 本站资源仅供学习交流请于24h内删除</span>
</div>
</div>
</div>
</div>
<div class="modal-ftr">
<button class="btn-disclaimer" onclick="openDisclaimer()">📜 免责声明</button>
<button class="btn-close" onclick="closeModal()">关闭</button>
<button class="btn-primary" id="copyBtn2" onclick="copyShareLink()" style="display:none">一键复制链接</button>
</div>
</div>
<!-- Login Modal -->
<div class="modal" id="loginModal" style="display:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:101">
<div class="modal-hdr">登录</div>
<div class="modal-body">
<div class="login-form">
<input id="loginUser" type="text" placeholder="用户名" />
<input id="loginPass" type="password" placeholder="密码" />
<button class="login-btn" id="loginBtn" onclick="handleLogin()">登录</button>
<div class="login-err" id="loginErr"></div>
</div>
</div>
<div class="modal-ftr">
<button class="btn-close" onclick="closeLogin()">取消</button>
</div>
</div>
</div>
</div>
<!-- Toast -->
<div class="toast" id="toast"></div>
<script src="https://cdn.jsdelivr.net/npm/qrcodejs@1.0.0/qrcode.min.js"></script>
<script src="/h5/app.js"></script>
<!-- Footer -->
<div id="siteFooter" class="site-footer" style="display:none">
<div id="footerContent" class="footer-inner"></div>
<div class="footer-actions" id="footerActions">
<button class="footer-btn" onclick="openDisclaimer()">📜 免责声明</button>
</div>
</div>
</html>