前端优化
arm-ffmpeg DockerFile
This commit is contained in:
+5
-11
@@ -1,24 +1,18 @@
|
|||||||
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
|
# 使用 Ubuntu 20.04 的 .NET 6 运行时镜像
|
||||||
|
FROM mcr.microsoft.com/dotnet/aspnet:6.0-focal AS base
|
||||||
FROM mcr.microsoft.com/dotnet/aspnet:6.0-focal-arm64v8 AS base
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
EXPOSE 10101
|
EXPOSE 10101
|
||||||
|
|
||||||
RUN echo "deb http://mirrors.aliyun.com/debian/ bookworm main non-free contrib" > /etc/apt/sources.list && \
|
# 安装 ffmpeg (Ubuntu 的 universe 仓库包含 ffmpeg)
|
||||||
echo "deb http://mirrors.aliyun.com/debian-security/ bookworm-security main" >> /etc/apt/sources.list && \
|
RUN apt-get update && \
|
||||||
echo "deb http://mirrors.aliyun.com/debian/ bookworm-updates main non-free contrib" >> /etc/apt/sources.list && \
|
|
||||||
echo "deb http://mirrors.aliyun.com/debian/ bookworm-backports main non-free contrib" >> /etc/apt/sources.list && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get install -y --no-install-recommends ffmpeg && \
|
apt-get install -y --no-install-recommends ffmpeg && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
RUN ffmpeg -version
|
RUN ffmpeg -version
|
||||||
|
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
ENV ASPNETCORE_URLS=http://*:10101
|
ENV ASPNETCORE_URLS=http://*:10101
|
||||||
ENV TZ=Asia/Shanghai
|
ENV TZ=Asia/Shanghai
|
||||||
ENV DOWN_IMGVIDEO=1
|
ENV DOWN_IMGVIDEO=1
|
||||||
ENTRYPOINT ["dotnet", "dy.net.dll"]
|
ENTRYPOINT ["dotnet", "dy.net.dll"]
|
||||||
|
|
||||||
@@ -5,7 +5,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
|
|||||||
<Project>
|
<Project>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<_PublishTargetUrl>E:\code\dysync\bin\Release\net6.0\publish\</_PublishTargetUrl>
|
<_PublishTargetUrl>E:\code\dysync\bin\Release\net6.0\publish\</_PublishTargetUrl>
|
||||||
<History>True|2025-11-25T06:08:53.3850967Z||;True|2025-11-24T23:53:54.4283003+08:00||;True|2025-11-24T23:41:15.8248332+08:00||;True|2025-11-24T23:33:57.1844427+08:00||;True|2025-11-24T23:31:54.9228836+08:00||;True|2025-11-24T23:24:15.8681502+08:00||;True|2025-11-24T23:22:57.9046229+08:00||;True|2025-11-24T23:18:04.1131647+08:00||;True|2025-11-24T22:47:54.1336448+08:00||;True|2025-11-24T22:47:18.3613833+08:00||;True|2025-11-24T08:17:50.3994607+08:00||;True|2025-11-24T08:07:00.9951205+08:00||;True|2025-11-23T23:34:50.0030826+08:00||;True|2025-11-23T23:32:36.7452616+08:00||;True|2025-11-22T23:18:56.3202345+08:00||;True|2025-11-22T22:52:51.7203302+08:00||;True|2025-11-22T22:52:42.9620946+08:00||;True|2025-11-22T22:52:09.8257640+08:00||;True|2025-11-22T22:39:31.5894141+08:00||;True|2025-11-22T22:31:11.0704815+08:00||;True|2025-11-22T22:20:36.4579131+08:00||;True|2025-11-22T22:19:10.2281364+08:00||;True|2025-11-22T19:34:45.9336901+08:00||;True|2025-11-12T23:06:38.7834109+08:00||;False|2025-11-12T23:01:02.2269478+08:00||;True|2025-10-22T22:08:11.6423148+08:00||;True|2025-10-22T21:54:24.7180547+08:00||;True|2025-10-22T21:40:03.5194315+08:00||;True|2025-10-22T21:28:28.8962766+08:00||;True|2025-10-22T21:22:47.9631689+08:00||;True|2025-10-22T21:18:24.5274318+08:00||;True|2025-10-22T21:14:51.6386326+08:00||;False|2025-10-22T21:14:07.6282769+08:00||;True|2025-10-22T21:03:48.9892860+08:00||;True|2025-10-22T21:00:56.3617243+08:00||;False|2025-10-22T21:00:30.5472941+08:00||;True|2025-10-22T20:51:29.6155916+08:00||;False|2025-10-22T20:50:47.1882956+08:00||;True|2025-10-22T15:01:04.1668366+08:00||;True|2025-10-22T14:49:43.6340569+08:00||;True|2025-10-22T14:38:39.4685603+08:00||;True|2025-10-21T18:35:28.8392541+08:00||;True|2025-10-20T10:31:05.5865212+08:00||;True|2025-10-20T10:20:41.5717101+08:00||;True|2025-10-19T10:08:33.6669332+08:00||;False|2025-10-19T10:07:22.3337545+08:00||;False|2025-10-19T10:05:22.9484805+08:00||;True|2025-10-10T16:54:27.1472888+08:00||;False|2025-10-10T16:53:44.1700030+08:00||;False|2025-10-10T16:52:48.1740453+08:00||;False|2025-10-10T16:51:21.5067253+08:00||;False|2025-10-10T16:50:19.2140597+08:00||;False|2025-10-10T16:49:21.2213290+08:00||;False|2025-10-10T16:48:47.7229948+08:00||;False|2025-10-10T16:48:15.1258700+08:00||;True|2025-09-30T13:29:42.2354235+08:00||;True|2025-09-25T11:44:52.6858389+08:00||;True|2025-09-25T11:08:27.8810109+08:00||;True|2025-09-25T09:28:50.2563374+08:00||;True|2025-09-24T16:14:02.3072184+08:00||;True|2025-09-23T22:38:52.4414757+08:00||;True|2025-09-23T22:19:07.1006356+08:00||;True|2025-09-23T22:18:01.5945225+08:00||;True|2025-09-23T22:06:15.6293613+08:00||;True|2025-09-23T21:53:14.2977444+08:00||;True|2025-09-23T21:46:55.2322411+08:00||;False|2025-09-23T21:45:23.7858854+08:00||;False|2025-09-23T21:03:51.8325689+08:00||;True|2025-09-23T10:03:32.2251920+08:00||;False|2025-09-23T09:38:08.2372201+08:00||;False|2025-09-23T09:37:49.9390545+08:00||;True|2024-03-11T21:31:45.8102398+08:00||;True|2024-03-11T07:26:24.7660541+08:00||;True|2024-03-08T22:08:40.0154831+08:00||;True|2024-03-03T10:14:36.8109114+08:00||;True|2024-03-02T18:44:57.3288537+08:00||;True|2024-01-24T17:51:37.9164415+08:00||;True|2024-01-24T16:36:50.5612157+08:00||;True|2024-01-24T15:51:35.7556653+08:00||;True|2024-01-17T23:40:40.7526618+08:00||;True|2024-01-17T23:36:10.3692844+08:00||;True|2024-01-17T23:22:03.2378834+08:00||;True|2024-01-03T11:35:44.7118292+08:00||;True|2024-01-03T11:11:23.4270453+08:00||;True|2024-01-03T11:04:35.2081526+08:00||;True|2024-01-03T10:57:03.7053107+08:00||;True|2024-01-03T10:51:50.7463989+08:00||;False|2024-01-03T10:50:24.9775312+08:00||;True|2024-01-03T10:47:30.1128183+08:00||;True|2024-01-03T10:42:55.8640657+08:00||;True|2024-01-03T09:24:24.3436056+08:00||;True|2024-01-02T23:40:38.2001198+08:00||;True|2024-01-02T23:08:36.7230444+08:00||;True|2024-01-02T22:53:43.9658255+08:00||;True|2024-01-02T22:25:38.5545279+08:00||;False|2024-01-02T22:24:42.6577609+08:00||;True|2024-01-02T22:04:33.4708889+08:00||;True|2024-01-02T21:49:57.9249898+08:00||;True|2023-12-28T22:42:58.5976180+08:00||;True|2023-12-28T22:24:09.2051205+08:00||;</History>
|
<History>True|2025-11-25T16:00:42.1507258Z||;True|2025-11-26T00:00:17.0107229+08:00||;True|2025-11-25T23:42:07.4349629+08:00||;False|2025-11-25T23:41:56.9328658+08:00||;True|2025-11-25T23:19:32.5262917+08:00||;True|2025-11-25T14:08:53.3850967+08:00||;True|2025-11-24T23:53:54.4283003+08:00||;True|2025-11-24T23:41:15.8248332+08:00||;True|2025-11-24T23:33:57.1844427+08:00||;True|2025-11-24T23:31:54.9228836+08:00||;True|2025-11-24T23:24:15.8681502+08:00||;True|2025-11-24T23:22:57.9046229+08:00||;True|2025-11-24T23:18:04.1131647+08:00||;True|2025-11-24T22:47:54.1336448+08:00||;True|2025-11-24T22:47:18.3613833+08:00||;True|2025-11-24T08:17:50.3994607+08:00||;True|2025-11-24T08:07:00.9951205+08:00||;True|2025-11-23T23:34:50.0030826+08:00||;True|2025-11-23T23:32:36.7452616+08:00||;True|2025-11-22T23:18:56.3202345+08:00||;True|2025-11-22T22:52:51.7203302+08:00||;True|2025-11-22T22:52:42.9620946+08:00||;True|2025-11-22T22:52:09.8257640+08:00||;True|2025-11-22T22:39:31.5894141+08:00||;True|2025-11-22T22:31:11.0704815+08:00||;True|2025-11-22T22:20:36.4579131+08:00||;True|2025-11-22T22:19:10.2281364+08:00||;True|2025-11-22T19:34:45.9336901+08:00||;True|2025-11-12T23:06:38.7834109+08:00||;False|2025-11-12T23:01:02.2269478+08:00||;True|2025-10-22T22:08:11.6423148+08:00||;True|2025-10-22T21:54:24.7180547+08:00||;True|2025-10-22T21:40:03.5194315+08:00||;True|2025-10-22T21:28:28.8962766+08:00||;True|2025-10-22T21:22:47.9631689+08:00||;True|2025-10-22T21:18:24.5274318+08:00||;True|2025-10-22T21:14:51.6386326+08:00||;False|2025-10-22T21:14:07.6282769+08:00||;True|2025-10-22T21:03:48.9892860+08:00||;True|2025-10-22T21:00:56.3617243+08:00||;False|2025-10-22T21:00:30.5472941+08:00||;True|2025-10-22T20:51:29.6155916+08:00||;False|2025-10-22T20:50:47.1882956+08:00||;True|2025-10-22T15:01:04.1668366+08:00||;True|2025-10-22T14:49:43.6340569+08:00||;True|2025-10-22T14:38:39.4685603+08:00||;True|2025-10-21T18:35:28.8392541+08:00||;True|2025-10-20T10:31:05.5865212+08:00||;True|2025-10-20T10:20:41.5717101+08:00||;True|2025-10-19T10:08:33.6669332+08:00||;False|2025-10-19T10:07:22.3337545+08:00||;False|2025-10-19T10:05:22.9484805+08:00||;True|2025-10-10T16:54:27.1472888+08:00||;False|2025-10-10T16:53:44.1700030+08:00||;False|2025-10-10T16:52:48.1740453+08:00||;False|2025-10-10T16:51:21.5067253+08:00||;False|2025-10-10T16:50:19.2140597+08:00||;False|2025-10-10T16:49:21.2213290+08:00||;False|2025-10-10T16:48:47.7229948+08:00||;False|2025-10-10T16:48:15.1258700+08:00||;True|2025-09-30T13:29:42.2354235+08:00||;True|2025-09-25T11:44:52.6858389+08:00||;True|2025-09-25T11:08:27.8810109+08:00||;True|2025-09-25T09:28:50.2563374+08:00||;True|2025-09-24T16:14:02.3072184+08:00||;True|2025-09-23T22:38:52.4414757+08:00||;True|2025-09-23T22:19:07.1006356+08:00||;True|2025-09-23T22:18:01.5945225+08:00||;True|2025-09-23T22:06:15.6293613+08:00||;True|2025-09-23T21:53:14.2977444+08:00||;True|2025-09-23T21:46:55.2322411+08:00||;False|2025-09-23T21:45:23.7858854+08:00||;False|2025-09-23T21:03:51.8325689+08:00||;True|2025-09-23T10:03:32.2251920+08:00||;False|2025-09-23T09:38:08.2372201+08:00||;False|2025-09-23T09:37:49.9390545+08:00||;True|2024-03-11T21:31:45.8102398+08:00||;True|2024-03-11T07:26:24.7660541+08:00||;True|2024-03-08T22:08:40.0154831+08:00||;True|2024-03-03T10:14:36.8109114+08:00||;True|2024-03-02T18:44:57.3288537+08:00||;True|2024-01-24T17:51:37.9164415+08:00||;True|2024-01-24T16:36:50.5612157+08:00||;True|2024-01-24T15:51:35.7556653+08:00||;True|2024-01-17T23:40:40.7526618+08:00||;True|2024-01-17T23:36:10.3692844+08:00||;True|2024-01-17T23:22:03.2378834+08:00||;True|2024-01-03T11:35:44.7118292+08:00||;True|2024-01-03T11:11:23.4270453+08:00||;True|2024-01-03T11:04:35.2081526+08:00||;True|2024-01-03T10:57:03.7053107+08:00||;True|2024-01-03T10:51:50.7463989+08:00||;False|2024-01-03T10:50:24.9775312+08:00||;True|2024-01-03T10:47:30.1128183+08:00||;True|2024-01-03T10:42:55.8640657+08:00||;True|2024-01-03T09:24:24.3436056+08:00||;True|2024-01-02T23:40:38.2001198+08:00||;True|2024-01-02T23:08:36.7230444+08:00||;True|2024-01-02T22:53:43.9658255+08:00||;True|2024-01-02T22:25:38.5545279+08:00||;</History>
|
||||||
<LastFailureDetails />
|
<LastFailureDetails />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -66,21 +66,19 @@ Cookie 及 `sec_user_id` 是同步功能的核心,需严格按步骤获取,
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🚀 4. 运行方式(推荐 Docker Compose,更易维护)
|
## 🚀 4. 运行方式(推荐 Docker Compose)
|
||||||
|
|
||||||
|
|
||||||
# Dysync.net Docker 镜像版本说明
|
# Dysync.net Docker 镜像版本说明
|
||||||
|
|
||||||
本文档详细描述了 `jianzhichu/dysync.net` Docker 镜像的各个版本、其功能特性、适用架构以及镜像大小。
|
## 镜像版本
|
||||||
|
|
||||||
## 镜像版本总览
|
|
||||||
|
|
||||||
| 镜像标签 | 架构 | 功能描述 | 镜像大小 | 适用场景 |
|
| 镜像标签 | 架构 | 功能描述 | 镜像大小 | 适用场景 |
|
||||||
|-----------------------------------|----------------|--------------------------------------------------------------------------|-----------|------------------------------|
|
|-----------------------------------|----------------|--------------------------------------------------------------------------|-----------|------------------------------|
|
||||||
| `jianzhichu/dysync.net:latest` | x86_64 (amd64) | **标准版**<br>- 包含核心功能<br>- **不含 FFmpeg**<br>- 不能下载图文视频 | ~200M | 仅需基础功能,追求轻量部署 |
|
| `jianzhichu/dysync.net:latest` | x86_64 (amd64) | **标准版**<br>- 包含核心功能<br>- **不含 FFmpeg**<br>- 不能下载图文视频 | ~200M | 仅需基础功能,追求轻量部署 |
|
||||||
| `jianzhichu/dysync.net:full_latest` | x86_64 (amd64) | **完整版**<br>- 包含全部核心功能<br>- **内置 FFmpeg**<br>- 支持图文视频下载与合成 | ~700M | 需要完整媒体处理能力的场景 |
|
| `jianzhichu/dysync.net:full_latest` | x86_64 (amd64) | **完整版**<br>- 包含全部核心功能<br>- **内置 FFmpeg**<br>- 支持图文视频下载与合成 | ~700M | 需要完整媒体处理能力的场景 |
|
||||||
| `jianzhichu/dysync.net:arm_latest` | ARM64 | **ARM 标准版**<br>- 核心功能(与 `latest` 一致)<br>- **适配 ARM 架构** | ~200M | ARM 设备(如树莓派)的轻量部署 |
|
| `jianzhichu/dysync.net:arm_latest` | ARM64 | **ARM 标准版**<br>- 核心功能(与 `latest` 一致)<br>- **适配 ARM 架构** | ~200M | ARM 设备(如树莓派)的轻量部署 |
|
||||||
| `jianzhichu/dysync.net:full_arm_latest` | ARM64 | **ARM 完整版**<br>- 完整功能(与 `full_latest` 一致)<br>- **适配 ARM 架构** | ~700M | ARM 设备的完整功能部署 |
|
| `jianzhichu/dysync.net:full_arm_latest` | ARM64 | **ARM 完整版**<br>- 完整功能(与 `full_latest` 一致)<br>- **适配 ARM 架构** | ~500M | ARM 设备的完整功能部署 |
|
||||||
| `jianzhichu/dysync.net:beta_1.0` | x86_64 (amd64) | **测试版 v1.0**<br>- 包含最新开发特性<br>- 功能可能不稳定<br>- 不含 FFmpeg | ~200M | 开发测试、尝鲜新功能 |
|
| `jianzhichu/dysync.net:beta_1.0` | x86_64 (amd64) | **测试版 v1.0**<br>- 包含最新开发特性<br>- 功能可能不稳定<br>- 不含 FFmpeg | ~200M | 开发测试、尝鲜新功能 |
|
||||||
|
|
||||||
## 构建命令示例
|
## 构建命令示例
|
||||||
@@ -93,43 +91,43 @@ Cookie 及 `sec_user_id` 是同步功能的核心,需严格按步骤获取,
|
|||||||
将下方命令中的「本地路径」替换为你的实际路径,终端执行即可:
|
将下方命令中的「本地路径」替换为你的实际路径,终端执行即可:
|
||||||
```bash
|
```bash
|
||||||
|
|
||||||
### Arm设备请使用 registry.cn-hangzhou.aliyuncs.com/jianzhichu/dysync.net:arm_1.0 版本镜像
|
|
||||||
### 方式一:Docker 命令行
|
### 方式一:Docker 命令行
|
||||||
docker run -d --restart=always \
|
docker run -d --restart=always \
|
||||||
-v /你的/本地/收藏视频路径:/app/collect \
|
-v /opt/dysync/coll:/app/collect \
|
||||||
-v /你的/本地/喜欢视频路径:/app/favorite \
|
-v /opt/dysync/favorite \
|
||||||
-v /你的/本地/数据库路径:/app/db \
|
-v /opt/dysync/db:/app/db \
|
||||||
-v /你的/本地/博主视频路径:/app/uper \
|
-v /opt/dysync/imgs:/app/images \
|
||||||
-p 10101:10101 \
|
-v /opt/dysync/uper:/app/uper \
|
||||||
--name dysync2025 \
|
-p 10103:10101 \
|
||||||
registry.cn-hangzhou.aliyuncs.com/jianzhichu/dysync.net
|
--name dysync_arm_full \
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/jianzhichu/dysync.net:latest
|
||||||
# 注意:-p 后面的容器端口必须为 10101(源码固定)
|
# 注意:-p 后面的容器端口必须为 10101(源码固定)
|
||||||
|
|
||||||
|
|
||||||
### 方式二:Docker Compose 运行(推荐)
|
### 方式二:Docker Compose 运行(推荐)
|
||||||
### Arm设备请使用 registry.cn-hangzhou.aliyuncs.com/jianzhichu/dysync.net:arm_1.0 版本镜像
|
|
||||||
创建 docker-compose.yml 文件,复制以下内容,替换「本地路径」后执行 docker-compose up -d:
|
创建 docker-compose.yml 文件,复制以下内容,替换「本地路径」后执行 docker-compose up -d:
|
||||||
|
|
||||||
version: '3.8'
|
version: '3.8'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
dysync:
|
dysync:
|
||||||
image: registry.cn-hangzhou.aliyuncs.com/jianzhichu/dysync.net
|
image: registry.cn-hangzhou.aliyuncs.com/jianzhichu/dysync.net:latest
|
||||||
container_name: dysync2025
|
container_name: dysync_arm_full # 容器名称
|
||||||
restart: always
|
restart: always # 总是重启
|
||||||
ports:
|
ports:
|
||||||
- "10101:10101"
|
- "10101:10101" # 端口映射
|
||||||
volumes:
|
volumes:
|
||||||
- /volume1/docker/dysync/db:/app/db
|
- /opt/dysync/db:/app/db # 数据库目录
|
||||||
|
- /opt/dysync/coll:/app/collect # 收集目录
|
||||||
- /volume2/mediay/dysync:/app/collect
|
- /opt/dysync/favorite:/app/favorite # 收藏目录(补充了容器内路径)
|
||||||
- /volume2/mediay/dysync_fav:/app/favorite
|
- /opt/dysync/imgs:/app/images # 图片目录
|
||||||
- /volume2/mediay/dysync_up:/app/uper
|
- /opt/dysync/uper:/app/uper # 上传目录
|
||||||
# 下面是多账号路径映射示例(可选)
|
# 下面是多账号路径映射示例(可选)
|
||||||
- /volume2/mediay/dysync2:/app/yeyeye
|
- /opt/dysync/coll2:/app/collect # 收集目录
|
||||||
- /volume2/mediay/dysync2_fav:/app/yeyeye_fav
|
- /opt/dysync/favorite2:/app/favorite # 收藏目录(补充了容器内路径)
|
||||||
- /volume2/mediay/dysync2_up:/app/yeyeye_up
|
- /opt/dysync/imgs2:/app/images # 图片目录
|
||||||
# 配置DNS服务器(解决域名解析失败导致的无法访问外网)
|
- /opt/dysync/uper2:/app/uper # 上传目录
|
||||||
|
# 配置DNS服务器(可选)
|
||||||
network_mode: bridge
|
network_mode: bridge
|
||||||
dns:
|
dns:
|
||||||
- 8.8.8.8 # Google DNS
|
- 8.8.8.8 # Google DNS
|
||||||
|
|||||||
@@ -148,6 +148,7 @@ function submit() {
|
|||||||
loading.value = false;
|
loading.value = false;
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
showModal.value = false;
|
showModal.value = false;
|
||||||
|
message.success('修改成功,同步任务将在5-10秒按新配置运行...');
|
||||||
reset();
|
reset();
|
||||||
GetRecords();
|
GetRecords();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ const onSubmit = () => {
|
|||||||
.apiUpdateConfig(toRaw(formState))
|
.apiUpdateConfig(toRaw(formState))
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
message.success('配置修改生效,同步任务将按照新的规则执行');
|
message.success('修改成功,同步任务将在5-10秒按新配置运行...');
|
||||||
componentDisabled.value = true;
|
componentDisabled.value = true;
|
||||||
} else {
|
} else {
|
||||||
message.error(res.erro || '更新配置失败', 8);
|
message.error(res.erro || '更新配置失败', 8);
|
||||||
@@ -198,7 +198,7 @@ const onSubmit = () => {
|
|||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
console.error('更新配置失败:', error);
|
console.error('更新配置失败:', error);
|
||||||
message.error('更新配置失败,请稍后重试', 8);
|
message.error('修改失败,请稍后重试', 8);
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
|
|||||||
@@ -19,7 +19,14 @@
|
|||||||
<a-form-item :wrapper-col="{ offset: 8, span: 16 }">
|
<a-form-item :wrapper-col="{ offset: 8, span: 16 }">
|
||||||
<a-space>
|
<a-space>
|
||||||
<a-button type="primary" @click="GetRecords">查询</a-button>
|
<a-button type="primary" @click="GetRecords">查询</a-button>
|
||||||
<a-button type="danger" @click="StartNow">立即同步</a-button>
|
<!-- 核心修改点:绑定 disabled 属性 -->
|
||||||
|
<a-button type="danger" @click="StartNow" :disabled="isSyncing">
|
||||||
|
<!-- 可选:添加加载状态提示 -->
|
||||||
|
<template #icon>
|
||||||
|
<a-spin v-if="isSyncing" size="small" />
|
||||||
|
</template>
|
||||||
|
立即同步
|
||||||
|
</a-button>
|
||||||
</a-space>
|
</a-space>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-form>
|
</a-form>
|
||||||
@@ -27,6 +34,7 @@
|
|||||||
</a-table>
|
</a-table>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { defineComponent, reactive, ref } from 'vue';
|
import { defineComponent, reactive, ref } from 'vue';
|
||||||
import { useApiStore } from '@/store';
|
import { useApiStore } from '@/store';
|
||||||
@@ -34,50 +42,45 @@ import type { UnwrapRef } from 'vue';
|
|||||||
import { onMounted } from 'vue';
|
import { onMounted } from 'vue';
|
||||||
import dayjs, { Dayjs } from 'dayjs';
|
import dayjs, { Dayjs } from 'dayjs';
|
||||||
import locale from 'ant-design-vue/es/date-picker/locale/zh_CN';
|
import locale from 'ant-design-vue/es/date-picker/locale/zh_CN';
|
||||||
|
import { message, Spin } from 'ant-design-vue'; // 引入 Spin 用于显示加载图标
|
||||||
type RangeValue = [Dayjs, Dayjs];
|
type RangeValue = [Dayjs, Dayjs];
|
||||||
import 'dayjs/locale/zh-cn';
|
import 'dayjs/locale/zh-cn';
|
||||||
dayjs.locale('zh-cn');
|
dayjs.locale('zh-cn');
|
||||||
|
|
||||||
|
// ... (columns, loading, DataItem, datas, showImageViedo, QuaryParam, value1, ranges, quaryData 的定义保持不变)
|
||||||
const columns = ref([
|
const columns = ref([
|
||||||
{
|
{
|
||||||
title: '同步时间',
|
title: '同步时间',
|
||||||
dataIndex: 'syncTimeStr',
|
dataIndex: 'syncTimeStr',
|
||||||
// sorter: true,
|
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 180,
|
width: 180,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '同步类型',
|
title: '同步类型',
|
||||||
dataIndex: 'viedoTypeStr',
|
dataIndex: 'viedoTypeStr',
|
||||||
// sorter: true,
|
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 100,
|
width: 100,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '博主',
|
title: '博主',
|
||||||
dataIndex: 'author',
|
dataIndex: 'author',
|
||||||
// sorter: true,
|
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 150,
|
width: 150,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '视频类型',
|
title: '视频类型',
|
||||||
dataIndex: 'viedoCate',
|
dataIndex: 'viedoCate',
|
||||||
// sorter: true,
|
|
||||||
width: 300,
|
width: 300,
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: '视频标题',
|
title: '视频标题',
|
||||||
dataIndex: 'videoTitle',
|
dataIndex: 'videoTitle',
|
||||||
// sorter: true,
|
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: 'Cookie',
|
title: 'CK名称',
|
||||||
dataIndex: 'dyUser',
|
dataIndex: 'dyUser',
|
||||||
// sorter: true,
|
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 200,
|
width: 200,
|
||||||
},
|
},
|
||||||
@@ -108,6 +111,7 @@ const quaryData: UnwrapRef<QuaryParam> = reactive({
|
|||||||
tag: '',
|
tag: '',
|
||||||
viedoType: '*',
|
viedoType: '*',
|
||||||
});
|
});
|
||||||
|
|
||||||
const GetRecords = () => {
|
const GetRecords = () => {
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
quaryData.pageIndex = pagination.value.current;
|
quaryData.pageIndex = pagination.value.current;
|
||||||
@@ -125,9 +129,12 @@ const GetRecords = () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
GetRecords();
|
GetRecords();
|
||||||
|
getConfig(); // 在 onMounted 中调用 getConfig
|
||||||
});
|
});
|
||||||
|
|
||||||
const pagination = ref({
|
const pagination = ref({
|
||||||
current: 1,
|
current: 1,
|
||||||
defaultPageSize: 10,
|
defaultPageSize: 10,
|
||||||
@@ -140,9 +147,9 @@ const getConfig = () => {
|
|||||||
.apiGetConfig()
|
.apiGetConfig()
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
// 监听环境变量配置,控制是否显示图片视频下载选项
|
|
||||||
showImageViedo.value = res.data.downImageVideoFromEnv;
|
showImageViedo.value = res.data.downImageVideoFromEnv;
|
||||||
} else {
|
} else {
|
||||||
|
// 可以在这里添加配置获取失败的处理
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
@@ -151,31 +158,58 @@ const getConfig = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleTableChange = (e) => {
|
const handleTableChange = (e) => {
|
||||||
console.log(e);
|
|
||||||
pagination.value.current = e.current;
|
pagination.value.current = e.current;
|
||||||
pagination.value.defaultPageSize = e.defaultPageSize;
|
pagination.value.defaultPageSize = e.defaultPageSize;
|
||||||
pagination.value.total = e.total;
|
// 通常 total 是由后端返回的,这里不需要手动设置
|
||||||
pagination.value.showTotal = () => `共 ${e.total} 条`;
|
|
||||||
GetRecords();
|
GetRecords();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 核心修改点:添加一个 ref 来控制按钮状态
|
||||||
|
const isSyncing = ref(false);
|
||||||
|
|
||||||
const StartNow = () => {
|
const StartNow = () => {
|
||||||
|
// 如果正在同步中,则直接返回,防止重复点击
|
||||||
|
if (isSyncing.value) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
message.success('请耐心等待,同步任务正在启动...');
|
||||||
|
isSyncing.value = true; // 开始同步,禁用按钮
|
||||||
|
|
||||||
useApiStore()
|
useApiStore()
|
||||||
.StartJobNow()
|
.StartJobNow()
|
||||||
.then((res) => {});
|
.then((res) => {
|
||||||
|
// 根据后端返回的状态码判断是否真正成功
|
||||||
|
if (res.code === 0) {
|
||||||
|
message.success('同步任务启动成功!');
|
||||||
|
} else {
|
||||||
|
message.error(`同步任务启动失败: ${res.message || '未知错误'}`);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
console.error('同步任务API调用失败:', error);
|
||||||
|
message.error('同步任务启动失败,请检查网络或联系管理员。');
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
isSyncing.value = false; // 无论成功失败,都恢复按钮状态
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const datePicked = (ref, dateArry) => {
|
const datePicked = (ref, dateArry) => {
|
||||||
|
// 注意:dateArry 是 Dayjs 对象数组,如果后端需要字符串,需要格式化
|
||||||
|
// quaryData.dates = dateArry.map(date => date.format('YYYY-MM-DD'));
|
||||||
quaryData.dates = dateArry;
|
quaryData.dates = dateArry;
|
||||||
console.log(dateArry);
|
console.log(dateArry);
|
||||||
};
|
};
|
||||||
|
|
||||||
const dataSource = ref(datas);
|
const dataSource = ref(datas);
|
||||||
|
|
||||||
const onViedoTypeChanged = (e) => {
|
const onViedoTypeChanged = (e) => {
|
||||||
// console.log(e.target.value);
|
|
||||||
quaryData.viedoType = e.target.value;
|
quaryData.viedoType = e.target.value;
|
||||||
pagination.value.current = 1;
|
pagination.value.current = 1; // 切换类型后,重置页码到第一页
|
||||||
GetRecords();
|
GetRecords();
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
</style>
|
</style>
|
||||||
Reference in New Issue
Block a user