feat: 视频预览/数据看板/下载配置 三项业务功能
- 新增视频预览:VideoPlayer 组件、VideoController/DyCollectVideoService/Repository、VideoPageRequestDTO 对应后端改动 - 新增数据看板:workplace/statics.vue、RecordTable、相关 store/http/axios 改动 - 新增下载配置:DownloadConfigService、ConfigController、AppSet.vue、AppConfig - 其他:DyHttpClientService / 同步 Job(Collect, Favorit) / Cookie 表 / CommonService / ServiceExtension 的配套调整 - 仓库卫生:.gitignore 追加 feiniu 过滤;运维脚本归档到 docs/scripts/
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
DB_PATH="/Users/gaotu/WebstormProjects/dysync.net/db/dy.sqlite"
|
||||
|
||||
echo "=== 数据库检查 ==="
|
||||
echo ""
|
||||
|
||||
echo "1. 视频记录总数:"
|
||||
sqlite3 "$DB_PATH" "SELECT COUNT(*) FROM dy_collect_video;"
|
||||
|
||||
echo ""
|
||||
echo "2. 有保存路径的视频数量:"
|
||||
sqlite3 "$DB_PATH" "SELECT COUNT(*) FROM dy_collect_video WHERE videoSavePath IS NOT NULL AND videoSavePath != '';"
|
||||
|
||||
echo ""
|
||||
echo "3. Cookie配置数量:"
|
||||
sqlite3 "$DB_PATH" "SELECT COUNT(*) FROM dy_user_cookies;"
|
||||
|
||||
echo ""
|
||||
echo "4. Cookie配置详情:"
|
||||
sqlite3 -header -column "$DB_PATH" "SELECT id, userName, savePath, favSavePath, uperSavePath, collHasSyncd FROM dy_user_cookies LIMIT 5;"
|
||||
|
||||
echo ""
|
||||
echo "5. 视频记录示例(前3条):"
|
||||
sqlite3 -header -column "$DB_PATH" "SELECT id, videoTitle, author, videoSavePath, fileSize FROM dy_collect_video LIMIT 3;"
|
||||
|
||||
echo ""
|
||||
echo "6. 检查视频文件是否存在:"
|
||||
sqlite3 "$DB_PATH" "SELECT videoSavePath FROM dy_collect_video WHERE videoSavePath IS NOT NULL AND videoSavePath != '' LIMIT 1;" | while read path; do
|
||||
if [ -n "$path" ]; then
|
||||
echo "检查: $path"
|
||||
if [ -f "$path" ]; then
|
||||
echo "✅ 文件存在"
|
||||
ls -lh "$path" | awk '{print " 大小: " $5}'
|
||||
else
|
||||
echo "❌ 文件不存在"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
Executable
+13
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
# 安装 ASP.NET Core 6.0 x64 Runtime
|
||||
|
||||
echo "正在下载并安装 ASP.NET Core 6.0 x64 Runtime..."
|
||||
echo "需要管理员权限,请输入您的密码:"
|
||||
|
||||
curl -sSL https://dot.net/v1/dotnet-install.sh | sudo bash /dev/stdin --runtime aspnetcore --version 6.0.36 --arch x64 --install-dir /usr/local/share/dotnet/x64
|
||||
|
||||
echo ""
|
||||
echo "安装完成!验证安装:"
|
||||
export PATH="/usr/local/share/dotnet/x64:$PATH"
|
||||
dotnet --list-runtimes
|
||||
|
||||
Executable
+13
@@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
# 安装 .NET 6.0 x64 Runtime
|
||||
|
||||
echo "正在下载并安装 .NET 6.0 x64 Runtime..."
|
||||
echo "需要管理员权限,请输入您的密码:"
|
||||
|
||||
curl -sSL https://dot.net/v1/dotnet-install.sh | sudo bash /dev/stdin --runtime dotnet --version 6.0.36 --arch x64 --install-dir /usr/local/share/dotnet/x64
|
||||
|
||||
echo ""
|
||||
echo "安装完成!验证安装:"
|
||||
export PATH="/usr/local/share/dotnet/x64:$PATH"
|
||||
dotnet --list-runtimes
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""检查数据库中的视频数据"""
|
||||
|
||||
import sqlite3
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
db_path = "/Users/gaotu/WebstormProjects/dysync.net/db/dy.sqlite"
|
||||
|
||||
if not os.path.exists(db_path):
|
||||
print(f"❌ 数据库文件不存在: {db_path}")
|
||||
exit(1)
|
||||
|
||||
conn = sqlite3.connect(db_path)
|
||||
cursor = conn.cursor()
|
||||
|
||||
print("=" * 60)
|
||||
print("数据库检查报告")
|
||||
print("=" * 60)
|
||||
|
||||
# 1. 视频总数
|
||||
cursor.execute("SELECT COUNT(*) FROM dy_collect_video")
|
||||
total = cursor.fetchone()[0]
|
||||
print(f"\n1. 视频记录总数: {total}")
|
||||
|
||||
# 2. 有保存路径的视频数量
|
||||
cursor.execute("SELECT COUNT(*) FROM dy_collect_video WHERE videoSavePath IS NOT NULL AND videoSavePath != ''")
|
||||
with_path = cursor.fetchone()[0]
|
||||
print(f"2. 有保存路径的视频数量: {with_path}")
|
||||
|
||||
# 3. 按类型统计
|
||||
cursor.execute("SELECT ViedoType, COUNT(*) FROM dy_collect_video GROUP BY ViedoType")
|
||||
type_stats = cursor.fetchall()
|
||||
print(f"\n3. 按类型统计:")
|
||||
for vtype, count in type_stats:
|
||||
type_name = {"1": "喜欢的", "2": "收藏的", "3": "关注的"}.get(str(vtype), f"未知({vtype})")
|
||||
print(f" {type_name}: {count}")
|
||||
|
||||
# 4. 文件大小统计
|
||||
cursor.execute("SELECT SUM(fileSize) FROM dy_collect_video WHERE fileSize > 0")
|
||||
total_size = cursor.fetchone()[0] or 0
|
||||
print(f"\n4. 总文件大小: {total_size / (1024**3):.2f} GB")
|
||||
|
||||
# 5. 最近的视频记录
|
||||
print(f"\n5. 最近的视频记录(前5条):")
|
||||
cursor.execute("""
|
||||
SELECT id, videoTitle, author, videoSavePath, fileSize, syncTime
|
||||
FROM dy_collect_video
|
||||
ORDER BY syncTime DESC
|
||||
LIMIT 5
|
||||
""")
|
||||
records = cursor.fetchall()
|
||||
if records:
|
||||
for idx, (vid, title, author, path, size, sync_time) in enumerate(records, 1):
|
||||
title_short = (title[:30] + "...") if title and len(title) > 30 else (title or "无标题")
|
||||
size_mb = (size / (1024**2)) if size else 0
|
||||
file_exists = "✅" if path and os.path.exists(path) else "❌"
|
||||
print(f" {idx}. [{file_exists}] {title_short}")
|
||||
print(f" 作者: {author}, 大小: {size_mb:.2f} MB")
|
||||
if path:
|
||||
print(f" 路径: {path}")
|
||||
else:
|
||||
print(" (无记录)")
|
||||
|
||||
# 6. 检查文件是否存在
|
||||
print(f"\n6. 文件存在性检查:")
|
||||
cursor.execute("SELECT videoSavePath FROM dy_collect_video WHERE videoSavePath IS NOT NULL AND videoSavePath != '' LIMIT 10")
|
||||
paths = cursor.fetchall()
|
||||
if paths:
|
||||
exists_count = 0
|
||||
for (path,) in paths:
|
||||
if path and os.path.exists(path):
|
||||
exists_count += 1
|
||||
print(f" 检查了 {len(paths)} 个路径,{exists_count} 个文件存在")
|
||||
else:
|
||||
print(" (无路径记录)")
|
||||
|
||||
conn.close()
|
||||
print("\n" + "=" * 60)
|
||||
|
||||
Reference in New Issue
Block a user