1、nfo刮削文件优化,修复演员信息(视频作者),建议emby媒体库选影视,或者混合类型-右上角有一个兼容旧数据的按钮一键重置所有刮削文件

2、图文视频 以及动态视频,遇到因版权原因无法下载音频时,需要额外的音频文件,现在放到mp3目录了,docker-compose增加一个映射路径即可 例如: - /vol2/1000/media/dysync/mp3:/app/mp3
3、增加动态视频合成配置(不建议保留原视频,没有额外刮削的,因为有些视频是几十个很短的动图一样的视频拼接成的,保留原视频emby会出现一堆没有封面的视频)
4、容器重启后,手机端会连续跳转登录页很多次的bug修复
5、关注博主保存文件夹路径长度增加,允许_
6、批量永久删除选中的视频(不再下载,慎重)
7、看板页面 隐藏一个功能:双击作者头像,可以删除作者所有视频(永久删除,不再下载,慎重)
8、手机端 视频播放优化
This commit is contained in:
jianzhichu
2026-01-15 00:41:47 +08:00
parent 8da82889d1
commit ff80250012
22 changed files with 795 additions and 543 deletions
+62 -9
View File
@@ -44,18 +44,24 @@
<a-space size="middle" class="button-group">
<a-button success @click="handleBatchShare" class="delete-button" v-if="isBatchMode" :disabled="selectedRowKeys.length === 0 || isSyncing">
<ShareAltOutlined />
分享选中
批量分享
</a-button>
<a-button type="danger" @click="handleBatchDelete" class="delete-button" v-if="isBatchMode" :disabled="selectedRowKeys.length === 0 || isSyncing">
<a-button danger @click="handleBatchSync" class="delete-button" v-if="isBatchMode" :disabled="selectedRowKeys.length === 0 || isSyncing">
<SyncOutlined />
重新同步
重新下载
</a-button>
<a-button danger @click="handleBatchDelete" class="delete-button" v-if="isBatchMode" :disabled="selectedRowKeys.length === 0 || isSyncing">
<close-outlined />
批量删除
</a-button>
</a-space>
</a-form-item>
<!-- 按钮代码 -->
<a-form-item class="form-item delete-btn-2-wrapper">
<a-button danger @click="handShowDeleteVideos" class="delete-button-2">
<ClearOutlined /> <!-- 注意首字母大写,Antd图标命名规范 -->
<a-button type="primary" danger @click="handShowDeleteVideos" class="delete-button-2">
<!-- <ClearOutlined /> -->
<!-- 注意首字母大写,Antd图标命名规范 -->
<delete-outlined />
已删除
</a-button>
</a-form-item>
@@ -79,9 +85,9 @@
</span>
</div>
<a-button type="text" size="small" class="copy-delete-video-btn" @click="(e) => copyVideoPath(item.videoSavePath)">
<!-- <a-button type="text" size="small" class="copy-delete-video-btn" @click="(e) => copyVideoPath(item.videoSavePath)">
<CopyOutlined /> 复制
</a-button>
</a-button> -->
</a-list-item>
</template>
</a-list>
@@ -639,9 +645,9 @@ watch(
// -------------------------- 批量操作和操作列事件 --------------------------
/** 批量删除事件 */
const handleBatchDelete = () => {
const handleBatchSync = () => {
if (selectedRowKeys.value.length === 0) {
message.warning('请先选择要删除的视频');
message.warning('请先选择要重新下载的视频');
return;
}
@@ -657,6 +663,24 @@ const handleBatchDelete = () => {
});
};
const handleBatchDelete = () => {
if (selectedRowKeys.value.length === 0) {
message.warning('请先选择要彻底删除的视频');
return;
}
Modal.confirm({
title: '确认删除这些下载的视频吗',
content: `您确定要彻底下删除选中的 ${selectedRowKeys.value.length} 条视频数据吗?`,
okText: '确认彻底删除',
cancelText: '取消',
okType: 'danger',
onOk: async () => {
deleteBatch({ ids: selectedRowKeys.value });
},
});
};
const deleteVideoShow = ref(false);
const handShowDeleteVideos = () => {
deleteVideoShow.value = true;
@@ -704,6 +728,35 @@ const reDownload = (param: object) => {
}
};
const deleteBatch = (param: object) => {
try {
loading.value = true;
console.log('执行批量删除,选中ID:', selectedRowKeys.value);
useApiStore()
.BathRealDelete(param)
.then((res) => {
loading.value = false;
if (res.code === 0) {
message.success('删除成功,以后都不会下载了哦,你自己选的');
// 刷新数据并清空选中状态
GetRecords();
selectedRowKeys.value = [];
} else {
message.warning(res.message || '获取数据失败');
}
})
.catch((error) => {
loading.value = false;
});
} catch (error) {
console.error('批量删除失败:', error);
message.error('删除失败,请稍后重试');
} finally {
loading.value = false;
}
};
/** 重新下载事件 */
const handleReDownload = (record: DataItem) => {
if (!record.id) {