jxxghp / MoviePilot

NAS媒体库自动化管理工具
https://wiki.movie-pilot.org
GNU General Public License v3.0
6.92k stars 836 forks source link

[Feature Request]: 增加一个选项来控制移动模式下是否删除下载器的种子 #2533

Open wlnxing opened 4 months ago

wlnxing commented 4 months ago

当前程序版本

1.9.10-1

运行环境

Docker

功能改进类型

主程序

功能改进

先介绍下我的环境: 我是qb下载机器和mp机器相分离, qb下载完成后通知我的脚本进行上传, 然后脚本再webhook通知mp进行转移(两边路径相同). 但我发现我在通知转移的时候qb有一段逻辑是会删除种子文件的, 这样我就没办法继续做种了. 不知道能不能把这个行为做成一个选项呢?


ps: 不太会py, 只是简单能看懂, 只是看到好像在这里写死了: https://github.com/jxxghp/MoviePilot/blob/b892ef50dc4b51acac6085027919bbbcff3abcce/app/modules/qbittorrent/__init__.py#L259

不然我就提PR了 😺

参考资料

No response

totobo commented 4 months ago

你这个逻辑有点怪,没看太明白。建议详细描述一下完整过程

你脚本执行上传?(这里是什么意思,上传到mp的机器吗?)

wlnxing commented 4 months ago

你这个逻辑有点怪,没看太明白。建议详细描述一下完整过程

你脚本执行上传?(这里是什么意思,上传到mp的机器吗?)

@totobo

我描述一下我的详细流程, 就是

mp服务器搜索视频 -----> qb下载完成调用脚本----> 脚本上传视频文件到存储服务器 ----->脚本webhook通知mp开始转移(整理)

mp的服务器上挂载了存储服务器(相同路径), 所以mp接收到webhook后就可以直接像正常在本地一样直接移动(整理)下载好的视频了.

但是现在mp有个逻辑就是进行移动后会执行删除种子的逻辑, 导致qb上只要mp转移整理了就没法继续保种了

wlnxing commented 4 months ago

你这个逻辑有点怪,没看太明白。建议详细描述一下完整过程 你脚本执行上传?(这里是什么意思,上传到mp的机器吗?)

@totobo

我描述一下我的详细流程, 就是

mp服务器搜索视频 -----> qb下载完成调用脚本----> 脚本上传视频文件到存储服务器 ----->脚本webhook通知mp开始转移(整理)

mp的服务器上挂载了存储服务器(相同路径), 所以mp接收到webhook后就可以直接像正常在本地一样直接移动(整理)下载好的视频了.

但是现在mp有个逻辑就是进行移动后会执行删除种子的逻辑, 导致qb上只要mp转移整理了就没法继续保种了

所以实际上我的 mp 、qb 、 存储 三个都是分开的三个服务器

totobo commented 4 months ago

看起来你是用错方式了,脚本的webhook是文档里面说的那个给qb调用的webhook吧。 建议可以改成这样: mp服务器搜索视频 -----> qb下载完成调用脚本----> 脚本上传视频文件到存储服务器 -----> mp配置目录监控,转移类型选move

另外还有一种方式就是,通过挂盘的方式,比如NFS&smb,将你的qb下载盘、存储服务器的目录都挂载到mp的服务器。这样可以实现qb下载后,mp那边配置copy模式就能自动整理了。更简单一些

wlnxing commented 4 months ago

看起来你是用错方式了,脚本的webhook是文档里面说的那个给qb调用的webhook吧。 建议可以改成这样: mp服务器搜索视频 -----> qb下载完成调用脚本----> 脚本上传视频文件到存储服务器 -----> mp配置目录监控,转移类型选move

另外还有一种方式就是,通过挂盘的方式,比如NFS&smb,将你的qb下载盘、存储服务器的目录都挂载到mp的服务器。这样可以实现qb下载后,mp那边配置copy模式就能自动整理了。更简单一些

@totobo 感谢您的建议, 这两种方式我都试过:

totobo commented 4 months ago

看起来你是用错方式了,脚本的webhook是文档里面说的那个给qb调用的webhook吧。 建议可以改成这样: mp服务器搜索视频 -----> qb下载完成调用脚本----> 脚本上传视频文件到存储服务器 -----> mp配置目录监控,转移类型选move 另外还有一种方式就是,通过挂盘的方式,比如NFS&smb,将你的qb下载盘、存储服务器的目录都挂载到mp的服务器。这样可以实现qb下载后,mp那边配置copy模式就能自动整理了。更简单一些

@totobo 感谢您的建议, 这两种方式我都试过:

  • 目录监控方式: 这种方式转移文件只能使用插件, 只能通过文件名来识别, 且也不是mp推荐的识别方式, 所以我在努力避免这种方式.
  • 第二种方式: 因为qb下载完成后, 是需要上传到存储服务器的, 如果将各个下载盘和存储服务器的盘都直接挂载在mp上的话, 有两个问题:

    1. 如果让mp来copy(上传到存储服务器)的话, 我的文件会先从下载盘 下载到mp上, 然后再上传到存储服务器上, 下载盘 -> mp服务器 -> 存储服务器, 增加了许多不必要的流量消耗, 并且如果文件比较大的话, mp这个服务器是存不下来的
    2. 如果在qb服务器上传, 那就得上传完毕回调mp了(上传需要时间), 那又回到之前的问题上, qb上的任务就被删除了 😢

你这个用法确实有点特殊。基本上就是这样

  1. 修改源码,把https://github.com/jxxghp/MoviePilot/blob/b892ef50dc4b51acac6085027919bbbcff3abcce/app/modules/qbittorrent/init.py#L258 开始到266行这个if都给注释掉。不过这样mp的move和rclone_move模式都不会去下载器删除种子任务了
  2. 就还是我上面说的方法二,下载盘和存储服务器的目录都挂载到mp,走copy模式。copy模式不会先下载到mp服务器上,然后再上传,它这个是实时拷贝的,类似一个流式的行为。你可以理解成从下载盘复制1MB,放到内存里面,然后再传到你存储服务器里面,复制完这1MB,然后再继续复制后面的数据,大概是这样。因为你这三台服务器如果都是在同一个局域网下的话,流量消耗可以忽略不计,就多一点网络的IO,还是可以接受的。

还是建议2,可以不改源码,这样mp版本迭代你还能一直跟着走不用担心出什么未知问题