amtoaer / bili-sync

由 Rust & Tokio 驱动的哔哩哔哩同步工具
https://bili-sync.allwens.work
MIT License
605 stars 44 forks source link

请问怎么建立视频所处文件夹的子文件夹 #117

Open yuju520 opened 5 months ago

yuju520 commented 5 months ago

类似想要建立一个“up主/视频名称”的双层文件夹我应该如何写配置文件呢

DK6002 commented 5 months ago

3189552762 = "/media/bilibili_NAS" 这个是我的路径,数字是你的收藏夹ID,就是网页链接find=数字 /media是默认装载路径,在此路径下,你随便写,bilibili_NAS,我自己编的

yuju520 commented 5 months ago

3189552762 = "/media/bilibili_NAS" 这个是我的路径,数字是你的收藏夹ID,就是网页链接find=数字 /media是默认装载路径,在此路径下,你随便写,bilibili_NAS,我自己编的

可能我没有描述得很清楚,我需要按不同视频的不同up主的建立文件夹,而不是建立一个固定名称的文件夹。

amtoaer commented 4 months ago

我个人不推荐这样使用,因为 UP 主随时可能会重命名,导致同一个 UP 主发布的视频分布到了两个文件夹中。这也是我实现演职人员功能时使用 user id 而非 user name 区分用户的原因。

针对原始需求的回答

当前程序没有办法做到这一点。目前程序的路径逻辑是首先对 video_name 进行模板替换,替换完成后拼接在收藏夹的存储目录之后。这种实现可能会有一个问题:如果视频名字中包含 "/",而用户在 video_name 中使用了 title,会导致程序意外地创建出多级目录。为了规避这个问题,程序会对完成模板替换后的 videoname 做 filenamify 处理,将其中的特殊字符替换成文件名支持的一般字符,举例来说,会将 "/" 替换为 ""。这同时也断绝了用户将 video_name 自定义为 xxx/xxx 而实现多级目录的可能。

目前我想到的解决方法是专门为模板添加一个 filenamify 方法,这样就可以由用户自己定义如何对路径进行处理,如允许用户将 video_name 自定义为 {{ upper_name }}/{{ filenamify title }} 来达到既支持多级目录,又能避免非法字符的目的。或者也可以将 filenamify 的时机移动到模板替换之前,提前把这些自定义值替换成和文件名称兼容的格式,剩下的部分交给用户自己发挥。

目前还没想好具体使用哪一种,不过总之会在近期支持这个功能,到时候我会再回复这个 issue。

yuju520 commented 4 months ago

我个人不推荐这样使用,因为 UP 主随时可能会重命名,导致同一个 UP 主发布的视频分布到了两个文件夹中。这也是我实现演职人员功能时使用 user id 而非 user name 区分用户的原因。

针对原始需求的回答

当前程序没有办法做到这一点。目前程序的路径逻辑是首先对 video_name 进行模板替换,替换完成后拼接在收藏夹的存储目录之后。这种实现可能会有一个问题:如果视频名字中包含 "/",而用户在 video_name 中使用了 title,会导致程序意外地创建出多级目录。为了规避这个问题,程序会对完成模板替换后的 videoname 做 filenamify 处理,将其中的特殊字符替换成文件名支持的一般字符,举例来说,会将 "/" 替换为 ""。这同时也断绝了用户将 video_name 自定义为 xxx/xxx 而实现多级目录的可能。

目前我想到的解决方法是专门为模板添加一个 filenamify 方法,这样就可以由用户自己定义如何对路径进行处理,如允许用户将 video_name 自定义为 {{ upper_name }}/{{ filenamify title }} 来达到既支持多级目录,又能避免非法字符的目的。或者也可以将 filenamify 的时机移动到模板替换之前,提前把这些自定义值替换成和文件名称兼容的格式,剩下的部分交给用户自己发挥。

目前还没想好具体使用哪一种,不过总之会在近期支持这个功能,到时候我会再回复这个 issue。

感谢大佬解答并关注这个问题,期待后续的更新🙏