refactor: 将 WebUI 源码纳入仓库,移除打包产物

- 新增 webui/ 前端源码目录(React+Vite+TypeScript+Tailwind)
- 删除 api/webui/ 中旧的打包静态资源
- 更新 .gitignore 忽略 api/webui/ 构建输出和 webui/node_modules
- 更新 README 增加前端构建说明
This commit is contained in:
程序员阿江(Relakkes)
2026-07-01 23:05:03 +08:00
parent 2ac0716c41
commit 65ddaa8828
68 changed files with 9064 additions and 356 deletions
+26
View File
@@ -0,0 +1,26 @@
{
"status": {
"active": "ACTIVE",
"standby": "STANDBY",
"idle": "IDLE",
"running": "RUNNING",
"stopping": "STOPPING",
"error": "ERROR"
},
"sidebar": {
"title": "MediaCrawler",
"api": "API",
"local": "LOCAL",
"disclaimer": "For personal learning only, commercial use prohibited",
"license": "License"
},
"action": {
"loading": "Loading...",
"skip": "SKIP_CHECK",
"retry": "RETRY_SCAN"
},
"unit": {
"entries": "entries",
"records": "records"
}
}
+71
View File
@@ -0,0 +1,71 @@
{
"section": {
"targetMatrix": {
"title": "TARGET_MATRIX",
"description": "Platform, mode & search parameters"
},
"authMatrix": {
"title": "AUTH_MATRIX",
"description": "Login method configuration"
},
"outputConfig": {
"title": "OUTPUT_CONFIG",
"description": "Save format & comment options"
},
"runtime": {
"title": "RUNTIME",
"description": "Runtime parameters"
}
},
"field": {
"platform": "PLATFORM",
"platformPlaceholder": "Select platform",
"crawlType": "CRAWL_TYPE",
"crawlTypePlaceholder": "Select type",
"startPage": "START_PAGE",
"keywords": "KEYWORDS",
"keywordsHint": "Press Enter to add keyword",
"keywordsPlaceholder": "Type keyword, press Enter to add...",
"specifiedIds": "POST/VIDEO_ID",
"specifiedIdsHint": "Enter post or video ID/URL, one per line or comma-separated",
"specifiedIdsPlaceholder": {
"bili": "Examples:\nBV1xxxx\nhttps://www.bilibili.com/video/BV1xxxx",
"xhs": "Examples:\nhttps://www.xiaohongshu.com/explore/xxx?xsec_token=xxx\n(must include xsec_token)",
"dy": "Examples:\n7525538910311632128\nhttps://www.douyin.com/video/xxx\nhttps://v.douyin.com/xxx (short link)",
"wb": "Examples:\n4982041758140155\nhttps://weibo.com/xxx/xxx",
"ks": "Examples:\n3xf8enb8dbj6uig\nhttps://www.kuaishou.com/short-video/xxx",
"default": "Enter post/video ID or URL..."
},
"creatorIds": "CREATOR_ID",
"creatorIdsHint": "Enter creator ID/URL, one per line or comma-separated",
"creatorIdsPlaceholder": {
"bili": "Examples:\n434377496\nhttps://space.bilibili.com/434377496",
"xhs": "Examples:\nhttps://www.xiaohongshu.com/user/profile/xxx?xsec_token=xxx\n(must include xsec_token)",
"dy": "Examples:\nMS4wLjABAAAAxxx\nhttps://www.douyin.com/user/MS4wLjABAAAAxxx",
"wb": "Examples:\n5533390220\nhttps://weibo.com/u/5533390220",
"ks": "Examples:\n3x84qugg4ch9zhs\nhttps://www.kuaishou.com/profile/xxx",
"default": "Enter creator ID or URL..."
},
"loginMethod": "LOGIN_METHOD",
"loginMethodPlaceholder": "Select login method",
"cookies": "COOKIES",
"cookiesHint": "Paste cookie string",
"cookiesPlaceholder": "Paste cookies here...",
"saveFormat": "SAVE_FORMAT",
"saveFormatPlaceholder": "Select format",
"commentExtraction": "Comment Extraction",
"subComments": "Sub-comments",
"headlessMode": "HEADLESS_MODE",
"headlessModeHint": "Run browser without GUI"
},
"button": {
"initiateScan": "INITIATE SCAN",
"initiating": "INITIATING...",
"terminate": "TERMINATE",
"stopping": "STOPPING..."
},
"warning": {
"cookieSlider": "[Note] Cookie login is not recommended for Xiaohongshu and Douyin due to slider captcha",
"xhsToken": "[Important] Xiaohongshu URLs must contain xsec_token parameter, please copy the full URL from browser"
}
}
+29
View File
@@ -0,0 +1,29 @@
{
"dialog": {
"button": "PAYLOAD_MATRIX",
"title": "DATA_EXPLORER"
},
"explorer": {
"title": "CAPTURED_PAYLOAD_MATRIX",
"records": "{{count}} RECORDS",
"rescan": "RESCAN",
"loading": "[LOADING] Scanning payload directory...",
"noData": "NO_DATA_CAPTURED",
"noDataHint": "Initialize crawler to begin data extraction sequence. Results will appear here upon completion.",
"allCategories": "ALL"
},
"file": {
"entries": "{{count}} entries",
"extract": "EXTRACT",
"preview": "PREVIEW"
},
"preview": {
"title": "Data Preview",
"records": "{{count}} RECORDS",
"download": "DOWNLOAD",
"loading": "[LOADING] Decoding payload...",
"error": "[ERROR] Failed to decode payload",
"searchPlaceholder": "Search in data...",
"showing": "Showing {{filtered}} of {{total}} records"
}
}
+18
View File
@@ -0,0 +1,18 @@
{
"title": "ENV_DIAGNOSTICS",
"scanning": "[SCAN] Analyzing MediaCrawler environment...",
"success": "[OK] {{message}}",
"error": "[ERR] {{message}}",
"defaultError": "Cannot connect to API server",
"defaultErrorHint": "Please ensure backend service is running (uvicorn api.main:app --port 8080)",
"showDetails": "[+] SHOW_DETAILS",
"hideDetails": "[-] HIDE_DETAILS",
"requirements": "[REQUIREMENTS]",
"requirementsList": {
"1": "Install uv package manager",
"2": "Execute uv sync in project root",
"3": "Verify all dependencies installed"
},
"skipCheck": "SKIP_CHECK",
"retryCheck": "RETRY_SCAN"
}
+21
View File
@@ -0,0 +1,21 @@
{
"title": "Usage Notice",
"warning": "Please read the following terms carefully",
"content": {
"line1": "This project is for personal learning and research purposes only",
"line2": "Commercial use or profit-making activities are strictly prohibited",
"line3": "By using this project, you agree to comply with all applicable laws",
"line4": "Users bear full responsibility for any consequences of misuse"
},
"license": "View Full License",
"github": "Visit GitHub Repository",
"confirm": "I understand and agree to the above terms",
"decline": "Disagree, Exit",
"author": {
"name": "Relakkes (阿江)",
"tagline": "40K+ Star Open Source Author",
"description": "Author of MediaCrawler (40K stars), focused on crawler tech and AI Agent knowledge sharing",
"support": "If you find this project helpful, please follow the author on social media",
"slogan": "Open source is hard, please star ⭐"
}
}
@@ -0,0 +1,16 @@
{
"header": {
"title": "SYSTEM_CONSOLE",
"entries": "{{count}} entries",
"active": "ACTIVE",
"clear": "CLEAR",
"restore": "RESTORE ALL LOGS"
},
"banner": {
"systemInit": "[SYS] System initialized successfully",
"configHint": "[INFO] Configure parameters and initiate scan sequence..."
},
"footer": {
"awaiting": "awaiting_command..."
}
}