Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于保留原始文件用于做种的可能性探讨 #44

Open
dddepg opened this issue Mar 19, 2024 · 1 comment
Open

关于保留原始文件用于做种的可能性探讨 #44

dddepg opened this issue Mar 19, 2024 · 1 comment
Assignees
Labels
enhancement New feature or request

Comments

@dddepg
Copy link

dddepg commented Mar 19, 2024

原因

qb下载后提倡做做种,增加点分享精神 以及避免被拉黑ip

个人使用环境

我个人使用环境为群晖 docker 环境,因此使用方式为使用 python3 运行 EpisodeReName.py 文件,windows 环境下暂时不清楚是如何调用的,因此下文的讨论将基于该文件的代码

可能的优化更名方式 os.link

通过查看源码可看到在 812 行进行了如下操作:

        tmp_name = new + '.new'
        os.rename(old, tmp_name)

        # 目标文件已存在, 先删除
        if os.path.exists(new):
            os.remove(new)

        # 临时文件重命名
        os.rename(tmp_name, new)

可以看到程序是直接将原文件(old)使用 os.rename 方法进行了重命名。

是否可以考虑使用 os.link 方法来创建硬链接呢?硬链接与原文件指向的是同一个内容区块,同时不会占用实际空间,昨晚尝试之后在 jellyfin 中也可以顺利识别到。

缺陷在于该方法仅在 windows 环境与 unix 环境下可使用不过该项目的目标环境本来也就这俩吧

示例截图

查看文件,S01E11 是创建的硬链接,可以看到与下方实际存在的文件指向同一个数据块,第二个则是查看实际占用磁盘空间
image

jellyfin 中也能正常识别到文件

image

仍需优化的问题

创建硬链接后与原文件在同一目录下,会对 jellyfin 等的扫描出现干扰,也许可以增加一个前缀,如下所示:

if move_up_to_season_folder:
        new_path = format_path(prefix +/+season_path + '/' + new_name)
    else:
        new_path = format_path(prefix +/+parent_folder_path + '/' + new_name)

这样就可以将另外一个文件夹映射为媒体库了,同时不干扰做种。

不过这个方法还没测试过,先提出一个可能性吧

@dddepg dddepg added the enhancement New feature or request label Mar 19, 2024
@dddepg
Copy link
Author

dddepg commented Mar 19, 2024

顺便一提使用 os.symlink 方法的话 jellyfin 会产生报错,稍微看了一眼似乎是无法通过软链接读取到实际文件的样子

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants