Skip to content

yuan1/nas-tools

 
 

Repository files navigation

logo-blue

NAS媒体库资源归集、整理自动化工具

功能:

本软件的初衷是实现影视资源的自动化管理,释放双手、聚焦观影。需要有良好的网络环境及私有站点才能获得较好的使用体验。

1、媒体库整理

  • 监控下载软件,下载完成后自动识别真实名称,硬链接到媒体库并重命名。
  • 对目录进行监控,文件变化时自动识别媒体信息硬链接到媒体库并重命名。
  • 解决保种与媒体库整理冲突的问题,专为中文环境优化,支持国产剧集和动漫,重命名准确率高,改名后Emby/Jellyfin/Plex完美刮削海报墙。

2、消息服务

  • 支持微信、Telegram、Slack、Synology Chat、Bark、PushPlus、爱语飞飞等近十种渠道图文消息通知
  • 支持通过微信、Telegram、Slack、Synology Chat远程控制订阅和下载。
  • Emby/Jellyfin/Plex播放状态通知。

安装

1、Docker

docker pull limy/nas-tools:latest

2、本地运行

python3.10版本,需要预安装cython,如发现缺少依赖包需额外安装

git clone -b master https://github.com/limy/nas-tools --recurse-submodule 
python3 -m pip install -r requirements.txt
export NASTOOL_CONFIG="/xxx/config/config.yaml"
nohup python3 run.py & 

配置

1、申请相关API KEY

  • 申请TMDB用户,在 https://www.themoviedb.org/ 申请用户,得到API KEY。

  • 申请消息通知服务

    1. 微信(推荐):在 https://work.weixin.qq.com/ 申请企业微信自建应用,获得企业ID、自建应用secret、agentid, 微信扫描自建应用二维码可实现在微信中使用消息服务,无需打开企业微信
    2. Telegram(推荐):关注BotFather申请机器人获取token,关注getuserID拿到chat_id。该渠道支持远程控制,详情参考:"5、配置微信/Telegram/Slack/Synology Chat远程控制"。
    3. Slack:在 https://api.slack.com/apps 申请应用,该渠道支持远程控制,详情参考频道说明。
    4. Synology Chat:在群晖中安装Synology Chat套件,点击Chat界面"右上角头像->整合->机器人"创建机器人,"传出URL"设置为:"NAStool地址/synology","传入URL"及"令牌"填入到NAStool消息服务设置中,该渠道支持远程控制。
    5. 其它:仍然会持续增加对通知渠道的支持,API KEY获取方式类似,不一一说明。

2、基础配置

  • 文件转移模式说明:目前支持六种模式:复制、硬链接、软链接、移动、RCLONE、MINIO。

    1. 复制模式下载做种和媒体库是两份,多占用存储(下载盘大小决定能保多少种),好处是媒体库的盘不用24小时运行可以休眠;

    2. 硬链接模式不用额外增加存储空间,一份文件两份目录,但需要下载目录和媒体库目录在一个磁盘分区或者存储空间;软链接模式就是快捷方式,需要容器内路径与真实路径一致才能正常使用;

    3. 移动模式会移动和删除原文件及目录;

    4. RCLONE模式只针对RCLONE网盘使用场景,注意,使用RCLONE模式需要自行映射rclone配置目录到容器中,具体参考设置项小问号说明;

    5. MINIO只针对S3/云原生场景,注意,使用MINIO,媒体库应当设置为/bucket名/类别名,例如,bucket的名字叫cloud,电影的分类文件夹名叫movie,则媒体库电影路径为:/cloud/movie,最好母集用s3fs挂载到/cloud/movie,只读就行。

  • 启动程序并配置:Docker默认使用3000端口启动(群晖套件默认3003端口),默认用户密码:admin/password(docker需要参考教程提前映射好端口、下载目录、媒体库目录)。登录管理界面后,在设置中根据每个配置项的提示在WEB页面修改好配置并重启生效(基础设置中有标红星的是必须要配置的,如TMDB APIKEY等),每一个配置项后都有小问号,点击会有详细的配置说明,推荐阅读。

3、设置媒体库服务器

支持 Emby(推荐)、Jellyfin、Plex,设置媒体服务器后可以对本地资源进行判重避免重复下载,同时能标识本地已存在的资源:

  • 在Emby/Jellyfin/Plex的Webhook插件中,设置地址为:http(s)://IP:PORT/emby、jellyfin、plex,用于接收播放通知(可选)
  • 将Emby/Jellyfin/Plex的相关信息配置到”设置-》媒体服务器“中
  • 如果启用了默认分类,需按如下的目录结构分别设置好媒体库;如是自定义分类,请按自己的定义建立好媒体库目录,分类定义请参考default-category.yaml分类配置文件模板。注意,开启二级分类时,媒体库需要将目录设置到二级分类子目录中(可添加多个子目录到一个媒体库,也可以一个子目录设置一个媒体库),否则媒体库管理软件可能无法正常搜刮识别。

    电影

    精选 华语电影 外语电影 动画电影

    电视剧

    国产剧 欧美剧 日韩剧 动漫 纪录片 综艺 儿童

4、配置同步目录

  • 目录同步可以对多个分散的文件夹进行监控,文件夹中有新增媒体文件时会自动进行识别重命名,并按配置的转移方式转移到媒体库目录或指定的目录中。
  • 如将下载软件的下载目录也纳入目录同步范围的,建议关闭下载软件监控功能,否则会触发重复处理。

5、配置微信/Telegram/Slack/Synology Chat远程控制

配置好微信、Telegram、Slack或Synology Chat机器人后,可以直接通过移动端发送名字实现自动检索下载,以及通过菜单控制程序运行。

  1. 微信消息推送及回调
  • 配置消息推送代理

由于微信官方限制,2022年6月20日后创建的企业微信应用需要有固定的公网IP地址并加入IP白名单后才能接收到消息,使用有固定公网IP的代理服务器转发可解决该问题

如使用nginx搭建代理服务,需在配置中增加以下代理配置:
```
location /cgi-bin/gettoken {
  proxy_pass https://qyapi.weixin.qq.com;
}
location /cgi-bin/message/send {
  proxy_pass https://qyapi.weixin.qq.com; 
}
```

如使用Caddy搭建代理服务,需在配置中增加以下代理配置(`{upstream_hostport}` 部分不是变量,不要改,原封不动复制粘贴过去即可)。
```
reverse_proxy https://qyapi.weixin.qq.com {
  header_up Host {upstream_hostport}
}
```
注意:代理服务器仅适用于在微信中接收工具推送的消息,消息回调与代理服务器无关。
  • 配置微信消息接收服务 在企业微信自建应用管理页面-》API接收消息 开启消息接收服务:

    1. 在微信页面生成Token和EncodingAESKey,并在NASTool设置->消息通知->微信中填入对应的输入项并保存。

    2. 重启NASTool

    3. 微信页面地址URL填写:http(s)://IP:PORT/wechat,点确定进行认证。

  1. Telegram Bot机器人
  • 在NASTool设置中设置好本程序的外网访问地址,根据实际网络情况决定是否打开Telegram Webhook开关。

注意:WebHook受Telegram限制,程序运行端口需要设置为以下端口之一:443, 80, 88, 8443,且需要有以网认证的Https证书;非WebHook模式时,不能使用NAStool内建的SSL证书功能。

  • 在Telegram BotFather机器人中按下表维护好bot命令菜单(要选),选择菜单或输入命令运行对应服务,输入其它内容则启动聚合检索。
  1. Slack
  • 详情参考频道说明
  1. Synology Chat
  • 无需额外设置,注意非同一服务器搭建的,还需要在基础设置->安全中调整IP地址限制策略。

6、整理存量媒体资源

如果你的存量资源所在的目录与你目录同步中配置的源路径目的路径相同,则可以通过WEBUI或微信/Telegram的“目录同步”按钮触发全量同步。

如果不相同则可以按以下说明操作,手工输入命令整理特定目录下的媒体资源:

说明:-d 参数为可选,如不输入则会自动区分电影/电视剧/动漫分别存储到对应的媒体库目录中;-d 参数有输入时则不管类型,都往-d目录中转移。

  • Docker版本,宿主机上运行以下命令,nas-tools修改为你的docker名称,修改源目录和目的目录参数。
    docker exec -it nas-tools sh
    python3 /nas-tools/app/filetransfer.py -m link -s /from/path -d /to/path
    
  • 群晖套件版本,ssh到后台运行以下命令,同样修改配置文件路径以及源目录、目的目录参数。
    export NASTOOL_CONFIG=/var/packages/NASTool/target/config/config.yaml
    /var/packages/py3k/target/usr/local/bin/python3 /var/packages/NASTool/target/app/filetransfer.py -m link -s /from/path -d /to/path
    
  • 本地直接运行的,cd 到程序根目录,执行以下命令,修改配置文件、源目录和目的目录参数。
    export NASTOOL_CONFIG=config/config.yaml
    python3 app/filetransfer.py -m link -s /from/path -d /to/path
    

鸣谢

About

NAS媒体库资源归集、整理自动化工具

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 66.2%
  • HTML 27.4%
  • JavaScript 5.4%
  • CSS 0.9%
  • Dockerfile 0.1%
  • Jinja 0.0%