/symbol-link-mapper

一个用于处理文件软链接的管理系统,用于pt下载以及nas共享

Primary LanguageJava

symbol link mapper 软链接文件映射管理器

在使用nas下载pt后,由于pt保种需要文件夹名以及文件夹下所有内容都维持不变,所以一旦文件命名不符合常规规范,我们使用的影音播放器的搜刮器就可能无法获取影音信息。

因此我们最好可以使用不同的文件夹区分pt下载和nas共享,并且在nas文件夹下建立所有的pt文件夹下的影音内容的软链接,这样就算命名不规范,我们也可以修改软链接的名称。

刮削器工作原理

我们建立软链接首先需要明白影音刮削器的工作原理

文件类型 识别项目
电影 电影文件的名称
电视剧 电视剧文件夹的名称

而刮削器所要求的电影名称规范为电影名.年份.[视频信息.发布者].视频格式
例如What.Did.You.Eat.Yesterday.SP.2020.Paravi.WEB-DL.1080p.H264.AAC-AREY.mp4
其中视频信息发布者都可以省略,而如果年份省略了则可能识别错系列电影的第几部

而对于电视剧而言,命名规则和上面一样,但是是需要对其文件夹命名
其次,对于识别电视中的每一集的命名格式为[电视剧名]S01E01.[其他信息].视频格式
即需要明确第几季第几集,其中电视剧名可以省略,因为电视剧是通过文件夹的名称来识别的
并且如果电视剧只有一季那么S01可以省略,如果电视剧只有一季E01需要变成EP

该软件工作流程

首先我们需要明确搜刮器的识别方法,我们再说如何建立软链接
由于pt下载大部分是会新建一个子文件夹,不论是电影、电视还是其他,所以

  1. 映射下载文件夹共享文件夹,为了方便扩展,该映射为多对一关系
  2. 默认先建立文件夹的软链接,如果不行则转3
  3. 删除该文件夹的软链接,递归新建真实文件夹,并将下面所有文件都建立软链接
  • 额外说明
  1. 由于递归软链接的文件夹没有映射,所以需要在数据库中指定其映射关系,方便自动跳转
  2. 防止递归软链接成环或者其他问题,当建立新的软链接时,限制原路径不能在数据库的目标路径列出现

附加功能

  • 递增软链接
    我们在追剧的时候可能会在下载文件夹中递增新的电视剧集,如果我们此时是递归软链接,新的电视剧集不会被软链接,所以我们需要递增地建立新的软链接
  • 定时自动软链接
    我们肯定不可能每个都手动添加软链接,所以需要一个自动程序,但是采用那种软链接以及哪些文件夹需要被排除等都可以额外配置
  • 批量修改文件名
    这个非常重要,我们可以直接使用linux的rename程序,如果不会可自行学习,并且提供预览
  • webUI中添加直达功能
    目前构思左右两边两个框,左边显示下载文件夹,右边显示共享文件夹,每次切换共享文件夹可以一键映射回左边的原下载文件夹

待更新功能

  • 相同文件夹下的文件的链接
    由于只提供了默认软链接方法,所以名字会重复,不能在同文件夹下添加
  • 文件移动 这个实现简单,但是希望做成UI

执行方法

需要一个前端docker: mopip77/symbol-link-mapper-web, 其public path为link

在此之前还需要建立对应数据库和表,sql文件在resources/db/migration

由于后台程序需要对整个服务器文件系统进行管理,所有该后台程序需要在服务器以jar包方式执行,需要参数为springboot所需要的四个数据库配置和运行端口

  • spring.datasource.url=jdbc:mysql:///symbol_link_mapper
  • spring.datasource.username=root
  • spring.datasource.password=xxxx
  • server.port=3009

分别启动后,处理好对应nginx即可

效果如下: